當咱們須要將項目部署到遠程線上服務器時;傳統的方法可能就是:前端
Git、pm二、node
;ssh祕鑰登錄
;Github添加Deploy Keys
git、pm二、node
服務器生成祕鑰對node
ssh-keygen -t rsa -C '1285227393@qq.com' -t 指定密鑰類型,默認即 rsa ,能夠省略 -C 設置註釋文字,好比郵箱,能夠省略
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
大概意思就是,私鑰文件不能被其餘人所訪問。可能考慮到若是被別人獲取到,就可能對服務器安全形成影響,因此須要重新設置下祕鑰文件的權限git
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 登錄
# 生成ssh key ssh-keygen -t rsa # 查看公鑰內容 cat ~/.ssh/id_rsa.pub
Deploy keys
中Deploy keys
,使得服務器能夠經過ssh拉取項目倉庫;ecosystem.config.js
;具體pm2
配置及基本使用介紹,戳~使用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' //部署後的動做 } } };
開始部署github
pm2 deploy ecosystem.config.js production
報錯mongodb
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
「積跬步、行千里」—— 持續更新中~,喜歡的話留下個贊和關注哦!
往期經典好文:npm