nginx+supervisor 前后端分离项目的发布流程
[第一部分] 前端发布(vue项目),假设项目名为demo_vue
Step1:编译打包前端项目
cd到demo_vue目录下,
执行cnpm run build:prod命令,生成disc文件夹
Step2:在服务端新建前端项目文件夹
登录ubuntu,
cd进/home/ubuntu/love目录下
执行mkdir demo_vue新建存放前端编译文件的文件夹
Step3:将编译文件上传到服务端
cd到disc目录下,执行如下命令
scp -r ./* root@love.aizhuhotel.com:/home/ubuntu/love/demo_vue
Step4:配置nginx
cd进/usr/local/nginx/conf目录下,
vim nginx.conf打开nginx配置文件,
配置服务端访问地址
upstream demovue {
server localhost:7788;
}
配置前端访问地址
location /demovue/ {
proxy_pass http://demo/;
}
配置监听端口/项目文件位置/默认启动文件
sever {
listen 端口号;
Location / {
root /home/ubuntu/love/demo_vue/;
index indec.html index.htm;
}
}
Step5:检查配置是否成功并重启nginx
cd进/usr/local/nginx/sbin目录下,
sudo nginx -t 检查配置,
sudo nginx -s reload 重启
[第二部分] 后端发布(.net core项目),假设项目名为demo_api
Step1:编译打包后端项目
cd到项目API目录下,
执行dotnet publish -c disc命令,生成disc文件夹
Step2:在服务端新建前端项目文件夹
登录ubuntu,
cd进/home/ubuntu/love目录下
执行mkdir demo_api新建存放后端编译文件的文件夹
Step3:将编译文件上传到服务端
cd到disc文件夹下publish目录下,执行如下命令
scp -r ./* root@love.aizhuhotel.com:/home/ubuntu/love/demo_api
Step4:配置nginx
cd进/usr/local/nginx/conf目录下,
vim nginx.conf打开nginx配置文件,
配置服务端访问地址
upstream demoapi {
server localhost:8441;
}
配置前端访问地址
location /demoapi/ {
proxy_pass http://demoapi/;
}
Step5:检查配置是否成功并重启nginx
cd进/usr/local/nginx/sbin目录下,
sudo nginx -t 检查配置,
sudo nginx -s reload 重启
Step6:配置supervisor
cd到/etc/supervisor/conf.d目录下,
新建一个后端项目对应的supervisor配置文件touch demoapi.conf
修改配置
{
[program:demoapi程序名称]........................
command=dotnet xxxx.dll启动命令
directory=/home/ubuntu/love/demoapi启动目录
stdout_logfile = /var/log/demoapi.log 日志目录
}
sudo supervisorctl status查看状态
sudo supervisorctl start 启动配置
sudo supervisorctl reload 重新加载
cd进/etc/supervisor目录
supervisorctl restart demoapi重启项目
附(supervisor下项目配置文件)
[program:dldocapi] ; 程序名称,在 supervisorctl 中通过这个值来对程序进行一系列的操作
autorestart=True ; 程序异常退出后自动重启
autostart=True ; 在 supervisord 启动的时候也自动启动
redirect_stderr=True ; 把 stderr 重定向到 stdout,默认 false
environment=PATH="/usr/bin" ; 可以通过 environment 来添加需要的环境变量,一种常见的用法是使用指定的 virtualenv 环境
command=dotnet DlDoc.API.dll ; 启动命令,与手动在命令行启动的命令是一样的
user=ubuntu ; 用哪个用户启动
directory=/home/ubuntu/love/DlDoc_API/ ; 程序的启动目录
stdout_logfile_maxbytes = 20MB ; stdout 日志文件大小,默认 50MB
stdout_logfile_backups = 20 ; stdout 日志文件备份数
; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件)
stdout_logfile = /var/log/dldocapi.log
nginx+supervisor 前后端分离项目的发布流程的更多相关文章
- 使用 Nginx 部署前后端分离项目,解决跨域问题
前后端分离这个问题其实松哥和大家聊过很多了,上周松哥把自己的两个开源项目部署在服务器上以帮助大家可以快速在线预览(喜大普奔,两个开源的 Spring Boot + Vue 前后端分离项目可以在线体验了 ...
- vue+uwsgi+nginx部署前后端分离项目
前后端分离,vue前端提供静态页面,且可以向后台发起get,post等restful请求. django后台提供数据支撑,返回json数据,返回给vue,进行数据页面渲染 后端 创建虚拟环境 解决dj ...
- linux --- 部署前后端分离项目
vue + uwsgi +nginx 部署前后端分离项目 准备项目 1.将前端vue项目包和后端django项目包上传服务器,通过lrzsz,直接从windows拖进linux中 2.解压缩操作 前端 ...
- List多个字段标识过滤 IIS发布.net core mvc web站点 ASP.NET Core 实战:构建带有版本控制的 API 接口 ASP.NET Core 实战:使用 ASP.NET Core Web API 和 Vue.js 搭建前后端分离项目 Using AutoFac
List多个字段标识过滤 class Program{ public static void Main(string[] args) { List<T> list = new List& ...
- nginx+vue+uwsgi+django的前后端分离项目部署
Vue+Django前后端分离项目部署,nginx默认端口80,数据提交监听端口9000,反向代理(uwsgi配置)端口9999 1.下载项目文件(统一在/opt/luffyproject目录) (1 ...
- Docker环境下的前后端分离项目部署与运维
本教程将从零开始部署一个前后端分离的开源项目,利用docker虚拟机的容器技术,采用分布式集群部署,将项目转换成为高性能.高负载.高可用的部署方案.包括了MySQL集群.Redis集群.负载均衡.双机 ...
- Yii框架和Vue的完美结合完成前后端分离项目
背景说明 本文假设你对Yii和Vue都比较熟悉,至少都在项目里用过,另外笔者新人,以后不定时放一些干货,欢迎程序媛关注 Yii是一个PHP全端框架,典型的mvc的项目结构,后端接口都是一个控制器里放了 ...
- 喜大普奔,两个开源的 Spring Boot + Vue 前后端分离项目可以在线体验了
折腾了一周的域名备案昨天终于搞定了. 松哥第一时间想到赶紧把微人事和 V 部落部署上去,我知道很多小伙伴已经等不及了. 1. 也曾经上过线 其实这两个项目当时刚做好的时候,我就把它们部署到服务器上了, ...
- 超简单!asp.net core前后端分离项目使用gitlab-ci持续集成到IIS
现在好多使用gitlab-ci的持续集成的教程,大部分都是发布到linux系统上的,但是目前还是有很大一部分企业使用的都是windows系统使用IIS在部署.NET应用程序.这里写一下如何使用gitl ...
随机推荐
- 2019-5-21-dotnet-使用-GC.GetAllocatedBytesForCurrentThread-获取当前线程分配过的内存大小...
title author date CreateTime categories dotnet 使用 GC.GetAllocatedBytesForCurrentThread 获取当前线程分配过的内存大 ...
- ExecutorService线程池submit的使用
有关线程池ExecutorService,只谈submit的使用 可创建的类型如下: private static ExecutorService pool = Executors.newFixedT ...
- Android 开发 框架系列 OkHttp文件上传功能实现(含断点续传)
前言 此篇博客只是上传功能的记录demo,如果你还不太了解okhttp可以参考我的另一篇博客https://www.cnblogs.com/guanxinjing/p/9708575.html 代码部 ...
- promise 获取文件内容
文件结构图 { "next":"b.json", "msg":"this is a" } a.json { " ...
- thinkphp url生成
为了配合所使用的URL模式,我们需要能够动态的根据当前的URL设置生成对应的URL地址,为此,ThinkPHP内置提供了U方法,用于URL的动态生成,可以确保项目在移植过程中不受环境的影响. 定义规则 ...
- day 70 Django基础五之django模型层(二)多表操作
Django基础五之django模型层(二)多表操作 本节目录 一 创建模型 二 添加表记录 三 基于对象的跨表查询 四 基于双下划线的跨表查询 五 聚合查询.分组查询.F查询和Q查询 六 ORM ...
- VM 虚拟机使用桥接模式却连不上网的解决办法(转载)
只需将VM的虚拟网络编辑器中关于 VMnet0 的设置改一下就行了: 1.进入VMware的 编辑 -> 虚拟网络编辑器. 第一步 2.选择更改设置. 3.将VMnet0(或其它类型为桥接模式的 ...
- POJ 3376 Finding Palindromes EX-KMP+字典树
题意: 给你n个串串,每个串串可以选择和n个字符串拼接(可以自己和自己拼接),问有多少个拼接后的字符串是回文. 所有的串串长度不超过2e6: 题解: 这题由于是在POJ上,所以string也用不了,会 ...
- 在页面上显示PDF
/// <summary> /// 读取PDF文件 /// </summary> /// <param name="fName">文件名称(可以 ...
- 创建 linuxrc 文件
创建 linuxrc,加入如下内容: [arm@localhost my_rootfs]#vi linuxrc #!/bin/sh #挂载/etc 为 ramfs, 并从/mnt/etc 下拷贝文件到 ...