pm2部署踩坑


pm2 和 nginx

nginx 配置

安装好之后,需要配置一下配置文件
/etc/nginx/conf.d下新建一个配置文件,具体配置如下

upstream weapp {
  server 127.0.0.1:3000;
}

server {
  listen 80;
  server_name 59.110.237.228;

  location / {
    proxy_pass http://weapp;
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Nginx-Proxy true;
    proxy_redirect off;
  }
}

由于我的域名是腾讯的,服务器是阿里的,所以无法把域名解析到阿里云,只能通过服务器的 ip 地址访问

pm2

本地新建一个项目,添加ecosystem.json,具体配置如下

{
    "apps": [
        {
            "name": "weapp",
            "script": "server.js",
            "env": {
                "COMMON_VARIABLE": "true"
            },
            "env_production": {
                "NODE_ENV": "production"
            }
        }
    ],
    "deploy": {
        "production": {
            "user": "root",
            "host": "59.110.237.228",
            "ref": "origin/master",
            "repo": "git@github.com:whhjdi/weapp.git",
            "path": "/www/weapp/production",
            "ssh_options": "StrictHostKeyChecking=no",
            "pre-deploy-local": "echo 'This is a local executed command'",
            "env": {
                "NODE_ENV": "production"
            }
        }
    }
}

然后 push 到 github 上
把服务的 pm2 先杀掉pm2 delete all
在服务器相应的目录新建项目文件夹,赋予权限sudo chmod 777 xxx
本地执行pm2 deploy ecosystem.json production setup
success 之后执行pm2 deploy ecosystem.json production
然后pm2 list就可以查看启动的 server 了

  1. 无密码连接服务器,需要把本地的密钥拷贝的服务器相应的文件
    scp ~/.ssh/id_rsa.pub root@47.98.154.75:/root/.ssh/authorized_keys

  2. 远程部署的时候显示找不到 pm2 命令,需要在服务器建立 link
    whereis pm2,显示路径为 xxx
    ls -s xxx /usr/local/bin/pm2

  3. 部署的时候卡住,找了好的资料都没发现解决方案,终于
    把下边的放到~/.bashrc头部

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"

然后source ~/.bashrc

重新运行
pm2 deploy ecosystem.json production


文章作者: 沐雪
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 沐雪 !
评论
 上一篇
深入Vue-开篇 深入Vue-开篇
主要内容 Reactivity Writing Plugins Render Functions State Management Routing Form Validation i18n document.queryS
2019-04-09 沐雪
下一篇 
Node快速上手 Node快速上手
Node Node.js 是一个开源跨平台的运行环境,用来在浏览器外执行JavaScript代码 Node是创建高拓展性,数据密集型和实时的后端服务的理想型 工具 起源2009年之前,浏览器是运行js的唯一环境,直到Ryan Dahl使用
2019-03-31 沐雪
  目录