运用pm2快速将项目布置到长途服务器

运用背景

  • 当我们须要将项目布置到长途线上效劳器时;传统的要领能够就是:

    1. 将当地代码经由过程ssh、ftp等体式格局上传到效劳器;
    2. 然后经由过程ssh登入到效劳器,设置好环境;
    3. 手动启动运用。
  • 太甚手动化,贫苦,操纵烦琐。

当代自动化布置

  • 环境:当地(Mac);长途效劳器(CentOS)
  • 运用东西:Git、pm2、node
  • 需知观点:ssh秘钥上岸Github增加Deploy Keys

1、效劳器环境布置

  • 基础东西装置:git、pm2、node

2、ssh效劳器免密上岸

  1. 效劳器天生秘钥对

    ssh-keygen -t rsa -C  '1285227393@qq.com'
    
    -t 指定密钥范例,默许即 rsa ,能够省略
    -C 设置解释笔墨,比方邮箱,能够省略
    • 由于运用的是百度云效劳器,内里能够直接界面天生秘钥对,然后下载到当地的是一个xxx.txt文件

《运用pm2快速将项目布置到长途服务器》

  • . 此时上岸能够运用ssh -i xxx.txt[下载的公钥途径] name@domain
  • 报错:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for 'server-key.txt' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "server-key.txt": bad permissions
  • 也许意义就是,私钥文件不能被其他人所接见。能够考虑到假如被他人获取到,就能够对效劳器平安形成影响,所以须要从新设置下秘钥文件的权限

    • 从新设置秘钥文件权限:chmod 600 server-key.txt,作废其他用户Read权限
    • 然则,运用ssh name@domain情势照样没法直接登入;追其缘由,发明由于不是当地直接天生的秘钥对;
    • 所以须要运用ssh-add -K ~/.ssh/xxx.txt[下载公钥文件]-K示意永远存储式,假如不运用者每次开机后须要从新ssh-add),就像是当地天生秘钥对然后布置到效劳器须要将秘钥追加到ssh认证文件一个原理;
    • ssh name@domain能够一般免密上岸啦!(设置这类情势上岸背面pm2须要运用)
  • 设置快速登录(附加)
    1. 进入ssh目次:cd ~/.ssh
    2. 建立config文件: touch config
    3. 进入config设置文件设置:vi config
        Host            lwh            #快速别号
        HostName        host           #ssh效劳器ip或domain
        Port            port           #ssh效劳器端口,默许为22
        User            root           #ssh效劳器用户名
        IdentityFile    ~/.ssh/server-key.txt    #下载的私钥文件
    4. :wq!保留退出
    5. 完成后能够直接运用:ssh lwh 上岸

在Github上增加Deploy Keys

  1. 效劳器天生秘钥
# 天生ssh key
ssh-keygen -t rsa

# 检察公钥内容
cat ~/.ssh/id_rsa.pub
  • 复制秘钥内容,增加到Github上对应的项目堆栈Settings下的Deploy keys
  • 设置Deploy keys,使得效劳器能够经由过程ssh拉取项目堆栈;

设置pm2

module.exports = {
  apps: [
    {
      name: 'back-Api',      //运用名
      script: './server/start.js',   //运用文件位置
      env: {
        //PM2_SERVE_PATH: "./apidoc",    //静态效劳途径
        PM2_SERVE_PORT: 8080,   //静态效劳器接见端口
        NODE_ENV: 'development' //启动默许形式
      },
      env_production : {
        PM2_SERVE_PORT: 8080,
        NODE_ENV: 'production'  //运用production形式 pm2 start ecosystem.config.js --env production
      },
      instances:"max",          //将运用程序散布在所有CPU核心上,能够是整数或负数
      instance_var: "INSTANCE_ID",
      exec_mode: "cluster",
      min_uptime: "30s",
      max_restarts: 10,
      //cron_restart: "40",
      watch:[
        "server",
      ],  //监听形式,不能纯真的设置为true,易致使无穷重启,由于日记文件在变化,须要消除对其的监听
      merge_logs: true,         //集群情况下,能够兼并日记
    }
  ],
  deploy: {
      production : {
        //设置没法供应暗码,所以前面须要设置ssh免暗码登录效劳器
        user: 'root',                      //ssh 上岸效劳器用户名
        host: '100.12.102.198',              //ssh 地点效劳器domain/IP
        ref: 'origin/master',             //Git长途/分支
        repo: 'git@github.com',         //git地点运用ssh地点
        path: '/liwenhui/www',       //项目寄存效劳器文件途径
        "post-deploy": 'npm install && pm2 reload ecosystem.config.js --env production'  //布置后的行动
      }
  }
};

最先布置

  • 最先布置

    pm2 deploy ecosystem.config.js production
  • 报错

    appledeMBP:back-server-api apple$ pm2 deploy ecosystem.config.js production
    --> Deploying to production environment
    --> on host 106.12.132.188
      ○ deploying origin/master
      ○ executing pre-deploy-local
      ○ hook pre-deploy
    bash: 第 0 行:cd: /lwh/www/source: 没有谁人文件或目次
      ○ fetching updates
      ○ full fetch
    bash: 第 0 行:cd: /lwh/www/source: 没有谁人文件或目次
    
      fetch failed
    
    Deploy failed
    1
  • 须要先初始化效劳器运用:pm2 deploy ecosystem.config.js production setup
  • 然后:pm2 deploy ecosystem.config.js production

其他

  1. pm2日记设置运用概况运用pm2设置临盆环境
  2. 当地连接长途mongodb设置效劳器(CentOS)装置设置mongodb

“积跬步、行千里”—— 延续更新中~,喜好的话留下个赞和关注哦!

    原文作者:keywords
    原文地址: https://segmentfault.com/a/1190000018459891
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞