部署

midway 官方部署教程open in new window,下面以宝塔部署为例

1、打包项目

npm run build

2、上传文件到服务器

将必要的文件上传到服务器,如下:

3、配置启动

TIP

启动选项有两个, 一个是 start 另一个是 start_singlestart是基于cforkopen in new window的 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
Last Updated: