在探索中前行,在失败中成长

正文

CentOS 6 配置PM2一键发布项目

PM2 Runtime是具有内置Load Balancer的Node.js应用程序的生产过程管理器。它允许您永久保持应用程序的活动,无需停机即可重新加载它们,并促进常见的Devops任务。

1) 环境准备

需要安装的软件:

  • 本地服务器都要安装Nodejs
  • 本地服务器都要安装Git
  • 本地服务器都要安装pm2(全局安装)

配置好本地及服务器都可以用ssh连接git仓库。

2) 配置PM2

先来到本地的项目根目录,执行命令

pm2 ecosystem

这时会在当前目录生成配置文件模板ecosystem.config.js,用编辑器打开模板文件ecosystem.config.js,文件内容如下:

module.exports = {
  /**
   * Application configuration section
   * http://pm2.keymetrics.io/docs/usage/application-declaration/
   */
  apps : [

    // First application
    {
      name      : 'pm2test',//将慕名称
      script    : 'server.js',//服务器启动文件
      env: {
        COMMON_VARIABLE: 'true'
      },
      env_production : {
        NODE_ENV: 'production'
      }
    }
  ],

  /**
   * Deployment section
   * http://pm2.keymetrics.io/docs/usage/deployment/
   */
  deploy : {
    production : {//生产环境部署
      user : 'root',//ssh登录用户名
      host : '0.0.0.0',//服务器ip
      port :  '000',//ssh端口号
      ref  : 'origin/master',//git仓库分支
      repo : 'git@github.com:lyswhut/pm2test.git',//git仓库地址
      path : '/home/www/pm2test/production',//服务器目录
      // 'post-deploy' : 'npm install && pm2 reload ecosystem.config.js --env production'//每次部署时要在服务器执行的命令
      "pre-deploy-local": "echo 'Deploy Done!'",//每次部署时要在本地执行的命令
    },
    dev : {
      user : 'root',
      host : '0.0.0.0',
      port :  '000',
      ref  : 'origin/master',
      repo : 'git@github.com:lyswhut/pm2test.git',
      path : '/home/www/pm2test/development',
      // 'post-deploy' : 'npm install && pm2 reload ecosystem.config.js --env dev',
      "pre-deploy-local": "echo 'Deploy Done!'",
      env  : {
        NODE_ENV: 'dev'
      }
    }
  }
};

文件部分内容我做了说明,更多详情请移步官方文档: http://pm2.keymetrics.io/docs/usage/deployment/

配置好该文件后把它提交到git仓库:

git add .
git commit -m 'add pm2 ecosystem'
git push origin master

然后初始化远程文件夹:

pm2 deploy ecosystem.config.js production setup

部署代码:

pm2 deploy ecosystem.config.js production

这样就完成了PM2的一键部署,以后在本地修改了代码后,如果要更新服务器的代码,执行在本地执行 pm2 deploy ecosystem.config.js production 即可自动更新服务器代码!

3) 过程中可能会遇到的问题:

  • 提示Permission denied (publickey,gssapi-keyex,gssapi-with-mic)
    可能是本地与服务器的ssh链接失败,检查下本地与服务器的ssh连接,手动用ssh连一下看是否正常,用ssh root@x.x.x.x -p xx看能不能连上(x是你的服务器ip与端口号)

  • 提示bash: git: command not found
    尝试运行yum install git

  • 提示bash: npm: command not found
    建立软链即可解决:

whereis pm2
pm2: /opt/nodejs/bin/pm2

sudo ln -s /opt/nodejs/bin/pm2 /usr/bin/pm2

注:若whereis pm2输出空,则直接执行sudo ln -s xxx/bin/pm2 /usr/bin/pm2,其中xxx为你nodejs的安装目录。

  • 提示/usr/bin/env: node: 没有那个文件或目录
    参照上面的bash: npm: command not found解决方法

本文链接:https://www.toside.cn/skill/0

技术文章>CentOS 6 配置PM2一键发布项目

评论

  • 落雪无痕2-1
    Chrome 69.0.3497.100 - Windows 10

    一键发布项目

  • lyswhut1-1
    Chrome 73.0.3683.103 - Windows 10

    配置PM2一键发布项目