本地和咱們的遠程服務器,必須都安裝有git,pm2,以及nodejs環境。實際上配置自動化發佈本地代碼就到遠程服務器。省去了遠程服務器的登陸過程,若是項目小還沒關係,可是項目過大,不可能每一個人都去登陸服務器主機,並且中途發佈的過程通過jit遠程倉庫之後,能夠增長代碼的安全性和規範性,這樣是誰在什麼時候何地修改的代碼都有記錄,也增長了項目的穩定性。因此這也是爲何推薦使用自動發佈的緣由。而咱們之因此使用PM2軟件,是由於他相對於forever有着更強大之處,見下圖:html
下面再簡述一下本地,git,服務器在發佈時候的流程圖,見下圖:node
(三)開始發佈git
一、配置本地和服務器git。這裏咱們使用的代碼倉庫爲碼雲,由於碼雲服務器在國內,響應速度更快一些,關鍵是私人倉免費的多。gitub是要收錢滴。劃重點,我找了好久她兩的區別,就是收費問題。下面來看配置步驟:npm
ssh-keygen -t rsa -b 4096 -C 'g376482a@163.com'
1 git config --global user.name"gede" 2 git config --global user.email"g376482a@163.com"
eval "$(ssh-agent -s)"
git clone git@gitee.com:qjnugede/ice.git
二、配置好git就能夠開始咱們的自動部署了,在部署以前,咱們先進行一步添加本地ssh到服務器的操做,這樣就省區了每次發佈部署代碼都要頻繁輸入服務器密碼的麻煩,步驟以下:json
ssh-copy-id -i .ssh/id_rsa.pub root@101.132.109.40
三、自動化部署代碼 安全
1 { 2 "apps": [{ 3 "name": "ice", //對應Nginx上的配置 4 "script": "server.js", //入口文件 5 "env": { 6 "COMON_VARIABLE": "true" 7 }, 8 "env_production": { 9 "NODE_ENV": "production" 10 } 11 }], 12 "deploy": { 13 "production": { 14 "user": "root", 15 "host": ["101.132.109.40"], //服務器ip地址 16 "port": "22", //登陸端口 17 "ref": "origin/master", //git倉庫對應的項目目錄 18 "repo": "git@gitee.com:qjnugede/ice.git", 19 "path": "/www/ice/production", //要部署到服務器哪一個位置,若是沒有會自動建立 20 "ssh_options": "StrictHostKeyChecking=no", 21 //構建在發佈 22 // "post-deploy": "npm install --registry=https://registry.npm.taobao.org && grunt build && pm2 startOrRestart ecosystem.json --env production", 23 "pre-deploy-local":"echo 'Deploy Done!'", //提示發佈進程 24 "env": { 25 "NODE_ENV": "production" 26 } 27 }} 28 }
1 const http = require('http'); 2 3 const hostname = '127.0.0.1'; 4 const port = 3000; 5 6 const server = http.createServer((req, res) => { 7 res.statusCode = 200; 8 res.setHeader('Content-Type', 'text/plain'); 9 res.end('Hello finaish\n'); 10 }); 11 12 server.listen(port, hostname, () => { 13 console.log(`Server running at http://${hostname}:${port}/`); 14 });
1 pm2 deploy ecosystem.json production setup
pm2 deploy ecosystem.json production
1 export NVM_DIR="$HOME/.nvm" 2 [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm 3 [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nv
配置好之後,系統會自動將變量添加到咱們的系統總環境變量.bashrc裏面,只不過被添加到了最後一行,這也是咱們咱們問題的出處。進入到root 目錄,打開.bashrc找到關於node.js環境變量的代碼,將其添加到第一行便可解決問題,最後文件如圖: bash
pm2 delete server
到這裏咱們的自動化部署教程就結束了。謝謝觀看。若有問題請聯繫 g376482a@163.com服務器