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