配置 Vue-Yarn-PM2 工具環境
說明 本地環境是 Mac , 伺服器環境是 Centos7.x, 開始之前,請自帶翻牆
本地環境
nvm node git pm2 yarn
複製程式碼
首先安裝 brew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
複製程式碼
安裝 Nvm
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
複製程式碼
然後 使用
command -v nvm
複製程式碼
重新啟動 終端 檢視版本
nvm -v
複製程式碼
檢視可裝的 Node 版本
nvm ls-remote
複製程式碼
安裝最新版本的 Node
nvm install v10.6.0
nvm alias default v10.6.0
複製程式碼
安裝 git
去這個網站下載, 然後無腦下一步即可
https://git-scm.com/
複製程式碼
安裝完成 git 先進行配置
git config --global user.name "mhkz"
git config --global user.email 'iquanku@163.com'
複製程式碼
生成 ssh-key
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
複製程式碼
生成key的時候,會提示建立密碼,不用管,一路回車,回車三次即可
然後把生成的 public key 新增到 github ,防止每次提交都得重新輸入密碼 利用
cat ~/.ssh/id_rsa.pub
複製程式碼
將得到的字串整體複製下來, 然後貼上到 Settings下的 SSH and GKG keys 中,標題隨便寫,自己能夠區別就好
在 github 上新建倉庫,並且複製倉庫地址
本地生成新的倉庫
git init
git add README.md
git commit -m "initial commit"
git remote add origin https://github.com/mhkz/project.git
git push -u origin master
複製程式碼
ok 本地專案已經生成並且上傳到 github 上
安裝 pm2 部署工具
npm install pm2 -g
複製程式碼
檢視開啟的 Node 服務
pm2 list
複製程式碼
伺服器 環境
伺服器環境比較複雜,不僅需要上述的所有步驟,還需要 Nginx 反向代理,以及 SSH 免密登陸, 不然我們每次部署都需要輸入密碼,那就太麻煩了
yarn nvm node pm2 git nginx
複製程式碼
其中前四種安裝步驟跟 Mac 下安裝方法大同小異,不再詳敘
現在重點說說 Nginx 的安裝和代理的設定
Nginx
Nginx 在 Centos7 下有兩種安裝方式,第一種原始碼安裝,第二種 yum 安裝,這裡採用第一種,原始碼安裝‘
- 下載並且解壓
wget http://nginx.org/download/nginx-1.10.1.tar.gz
tar -zxvf nginx-1.10.1.tar.gz
複製程式碼
- 進入 解壓後的資料夾進行編譯
./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre
複製程式碼
- 編譯
make && make install
複製程式碼
- 啟動
cd /usr/local/nginx/sbin
./nginx
複製程式碼
- 關閉
./nginx -s stop
複製程式碼
nginx 埠代理與域名指向
進入conf 目錄,在該目錄下建立include 檔案。進入 conf/include 目錄,建立 nginx.node.conf 檔案,在裡面輸入如下程式碼:
upstream nodejs {
server 127.0.0.1:3000;
keepalive 64;
}
複製程式碼
server {
listen 80;
server_name p.iquanku.com 47.95.7.29;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Nginx-Proxy true;
proxy_set_header Connection "";
proxy_pass http://nodejs;
}
}
複製程式碼
進入conf ,開啟nginx.conf, 在http 裡面新增 。
include ./include/*
複製程式碼
重啟nginx , 輸入
nginx -c conf/nginx.conf
複製程式碼
- 利用 Node 建立新專案並且啟動 在伺服器任何地方 建立 server.js 檔案
vim server.js
複製程式碼
把 Node 官網事例貼上進去
const http = require('http');
const hostname = '127.0.0.1';
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('您好, 我是 大白--------');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
複製程式碼
利用 pm2 啟動
pm2 server.js start
複製程式碼
在瀏覽器中輸入 p.iquanku.com 或者伺服器域名, 便是能看到返回的 “您好, 我是 大白--------”這寫內容
上面所有內容告一段落,接下來配置自動化倉庫來部署專案
複製程式碼
首先把伺服器 所有 Node 專案停掉
pm2 kill
複製程式碼
pm2 list
複製程式碼
配置伺服器免密登陸
進入本地終端
ssh-copy-id -i ~/.ssh/id_rsa.pub root@47.95.7.29
複製程式碼
重啟控制檯 不用輸入密碼,便可以利用直接連到伺服器
ssh root@47.95.7.29
複製程式碼
在本地最開始初始化的專案中建立兩個檔案 一個是 ecosystem.json檔案, 一個是 server.js檔案
ecosystem.json 內容
{
"apps": [{
"name": "new-doc",
"script": "server.js",
//"instances": 2 伺服器核心數配置
"env": {
"COMMON_VARIABLE": "true"
},
"env_production": {
"NODE_ENV": "production"
}
}],
"deploy": {
"production": {
"user": "root",
"host": ["47.95.7.29"],
"port": "22",
"ref": "origin/master",
"repo": "https://github.com/mhkz/project.git",
"path": "/www/doc/production",
"ssh_options": "StrictHostKeyChecking=no",
// "post-deploy": "npm install"
"pre-deploy-local": "echo 'Deploy Done'",
"env": {
"NODE_ENV": "production"
}
}
}
}
複製程式碼
server.js 內容
const http = require('http');
const hostname = '127.0.0.1';
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('您好, 我是 大白--------');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
複製程式碼
然後把專案內容提交到 github 上
git add .
git commit -m "deploy project test"
git push origin master
複製程式碼
- 一健初始化部署釋出專案
pm2 deploy ecosystem.json production setup
複製程式碼
- 釋出專案
pm2 deploy ecosystem.json production
複製程式碼
開啟瀏覽器輸入 p.iquanku.com 看到了輸出內容
- 修改本地檔案內容
const http = require('http');
const hostname = '127.0.0.1';
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('為什麼路飛的橡膠果實不懼怕閃電');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
複製程式碼
- 再次釋出 內容變化
pm2 deploy ecosystem.json production
複製程式碼
這樣,每次修改完成專案提交後,不需要伺服器做任何操作,把程式碼合併到主分支,測試完成後,直接一健部署即可。
- pm2 開機自啟
pm2 startup centos
複製程式碼
別的命令用到自行 Google ,這裡不再累述
個人公眾號