nginx+pm2+nodejs部署

(可選)服務器端關閉root用戶的ssh訪問:

爲服務器安全起見,關閉root帳戶的遠程訪問。javascript

打開配置文件:java

vi /etc/ssh/sshd_config

找到以下設置,並修改yes爲no:git

PermitRootLogin no

保存文件後,重啓sshd服務:github

service sshd restart  

本地安裝pm2

npm install pm2 -g

若是可獲得版本號,則說明安裝成功:npm

pm2 -v 

配置SSH無密碼登陸

1.一、本地環境配置json

#用戶家目錄
cd .ssh
#生成私鑰和公鑰
ssh-keygen -t rsa -b 4096 -C "bradball@qq.com"
#開啓SSH代理
eval "$(ssh-agent -s)"
#將id_rsa加入代理中
ssh-add ~/.ssh/id_rsa

 1.二、server環境搭建vim

前面步驟和本地環境相同。而後:數組

sudo vim authorized_keys

 將本地id_rsa.pub寫入 authorized_keys。安全

#受權
sudo chmod 600 authorized_keys
#重啓ssh
sudo service ssh restart

 

設置Github倉庫(略)

本地pm2的ecosystem配置

{
  "app": [{
    "name" :"Ice",
    "script": "service.js",
    "env" :{
      "COMMON_VARIABLE": "true"
    },
    "env_production": {
      "NODE_ENV": "production"
    }
  }],
  "deploy": {
    "production": {
      "user": "brad",
      "host": ["xxx.78.174.xxx"],
      "ref": "origin/master",
      "port": "3006",
      "repo": "git@git.coding.net:dt_xz/ice.git",
      "path": "/home/brad/ice/production",
      "ssh_options": "StrictHostKeyChecking=no",
      "pre-deploy-local": "echo 'Deploy Done'",
      "env": {
        "NODE_ENV": "production"
      }

    }
  }
}
production : {
      user : "登陸遠程服務器的用戶名,此處填寫咱們建立的yishi",
      host : "遠程服務器的IP或hostname,此處能夠是數組同步部署多個服務器,不過鑑於咱們只有一個服務器,所以咱們填寫123.57.205.23",
      ref  : "遠端名稱及分支名,此處填寫origin/master",
      repo : "git倉庫地址,此處填寫git@github.com:e10101/pm2app.git",
      path : "遠程服務器部署目錄,須要填寫user具有寫入權限的目錄,此處填寫/home/yishi/www/production",
      "post-deploy" : "部署後須要執行的命令,此處填寫npm install && pm2 startOrRestart ecosystem.json --env production"
    },

提交代碼,在本地運行命令:

pm2 deploy ecosystem.json production setup

 提示錯誤:bash

Host key verification failed.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights and the repository exists.
    failed to clone
Deploy failed

此時主要是在遠程服務器中,並未將加入known_hosts,在服務器端經過以下命令設置:

ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts
相關文章
相關標籤/搜索