(可選)服務器端關閉root用戶的ssh訪問:
為服務器安全起見,關閉root賬戶的遠程訪問。
打開配置文件:
vi /etc/ssh/sshd_config
找到如下設置,並修改yes為no:
PermitRootLogin no
保存文件后,重啟sshd服務:
service sshd restart
本地安裝pm2
npm install pm2 -g
如果可得到版本號,則說明安裝成功:
pm2 -v
配置SSH無密碼登錄

1.1、本地環境配置
#用戶家目錄 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.2、server環境搭建
前面步驟和本地環境相同。然后:
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
提示錯誤:
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
此時主要是在遠程服務器中,並未將http://github.com(或碼雲)加入known_hosts,在服務器端通過如下命令設置:
ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts
