如何部署Node.JS项目到VPS

本来想着简单的直接nohup node 运行这个博客的后台,结果它就在我考操作系统的今天挂了。琢磨着如何给他做成一个service或者其它一边支持服务的自动重启,看到了网上有更好的守护进程pm2,就学着用pm2部署了,也非常简单

话不多说,首先需要有node环境,没有的现在VPS上安装并配置环境变量

第一步:

npm install pm2 -g  # 全局安装

然后就可以直接启动了...

pm2 start app.js --name "alias" # fork模式,无法处理并发
# pm2 start app.js -i 0 (cluster模式,可处理并发)
pm2 status #查看状态

嗯好像还差了一点什么

现在来设置开机自启动

pm2 startup
pm2 save

其他命令

pm2 restart app.js# 重启项目
pm2 stop app.js # 关闭

这是 nginx 的配置

web API 使用的 HTTP 2.0

    server {
        listen 443 ssl http2;
        server_name xxxxxxxxxxxx.cn;
        ssl on;
        ssl_certificate 1_xxxxxxxxxxxx.crt;
        ssl_certificate_key 2_xxxxxxxxxxxx.key;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;

        add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload" always;
        add_header X-Frame-Options SAMEORIGIN always;
        add_header X-XSS-Protection "1; mode=block" always;
        add_header X-Content-Type-Optxxxxxxions nosniff;

        #别的项目
        location /xxxxxx/v2/ { 
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_set_header X-Forwarded-Proto https;
            proxy_http_version 1.1;
            proxy_pass http://127.0.0.1:xxxx/;
            proxy_redirect off;
        }

        #博客后端API
        location /xxxxxx/v1/ {
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_set_header X-Forwarded-Proto https;
            proxy_http_version 1.1;
            proxy_pass http://127.0.0.1:xxxx/; # 你的端口
            proxy_redirect off;
        }


    }

保存之后

/yourdir/nginx -s reload -c /yourdir/your.conf