(可選)服務器端關閉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