部署
midway 官方部署教程,下面以宝塔部署为例
1、打包项目
npm run build
2、上传文件到服务器
将必要的文件上传到服务器,如下:
3、配置启动
TIP
启动选项有两个, 一个是 start
另一个是 start_single
,start
是基于cfork的 cluster 模式运行,多进程,start_single
为单进程。 start
运行注意多进程的问题,如socketio
这时候就要配置redis适配器
来进行进程之间的协调通讯。
4、nginx 配置
upstream mall {
server 127.0.0.1:8001;
}
server
{
...
# 前端打包完放这边
root /home/test/front;
# 防止刷新404
location / {
try_files $uri $uri/ /index.html;
}
# 代理服务端地址 访问/api 表示访问服务端接口而不是静态资源
location /api/
{
proxy_pass http://127.0.0.1:8001/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_cache_bypass no_cache;
#缓存相关配置
#proxy_cache cache_one;
#proxy_cache_key $host$request_uri$is_args$args;
#proxy_cache_valid 200 304 301 302 1h;
#持久化连接相关配置
proxy_connect_timeout 3000s;
proxy_read_timeout 86400s;
proxy_send_timeout 3000s;
#proxy_http_version 1.1;
#proxy_set_header Upgrade $http_upgrade;
#proxy_set_header Connection "upgrade";
add_header X-Cache $upstream_cache_status;
#expires 12h;
}
# socket需而外配置
location /socket {
proxy_pass http://mall/socket;
proxy_connect_timeout 3600s; #配置点1
proxy_read_timeout 3600s; #配置点2,如果没效,可以考虑这个时间配置长一点
proxy_send_timeout 3600s; #配置点3
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
#proxy_bind $remote_addr transparent;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
rewrite /socket/(.*) /$1 break;
proxy_redirect off;
}
}
其他部署方式
某些场景下需要自动化部署代码,那就需要命令形式启动代码,可以使用pm2管理你的node项目
// 命令行安装 pm2
npm install pm2 -g
常用命令
// 启动一个服务
pm2 start
// 列出当前的服务
pm2 list
// 停止某个服务
pm2 stop
// 重启某个服务
pm2 restart
// 删除某个服务
pm2 delete
// 查看服务的输出日志
pm2 logs
cluster方式启动
// -i 表示 number-instances 实例数量
// max 表示 PM2将自动检测可用CPU的数量 可以自己指定数量
pm2 start ./bootstrap.js -i max --name cool-admin(改成自己的应用名称)
// 重启
pm2 restart cool-admin
日志
pm2 logs cool-admin
// 默认的日志位置
/root/.pm2/logs