一想诅、上傳項(xiàng)目代碼到線上git倉庫并從線上git倉庫將項(xiàng)目clone到服務(wù)器
github相信大家都不會(huì)陌生,大家通车盒模可以把項(xiàng)目通過git提交到github來實(shí)現(xiàn)代碼的托管和版本的管理来破,但是github是一個(gè)崇尚開源的社區(qū),在github上托管的項(xiàng)目基本都是公開的忘古,如果托管的是私有的項(xiàng)目是要付費(fèi)的徘禁。如果想要建立免費(fèi)私有的項(xiàng)目,大家可以使用國(guó)內(nèi)的gitoschina髓堪。http://git.oschina.net/送朱。具體使用方法,大家可以進(jìn)入他的官網(wǎng)進(jìn)行學(xué)習(xí)研究干旁。
我這里的實(shí)驗(yàn)項(xiàng)目只是一個(gè)demo所以就直接放github上了:https://github.com/xiaoxiekeke/myblog.git驶沼,大家可以clone下來玩玩。
//如圖争群,我在服務(wù)器中做了以下操作回怜,項(xiàng)目就已經(jīng)被clone到服務(wù)器了。(服務(wù)器中應(yīng)該先安裝git)
//新建node-website來存放項(xiàng)目代碼
mkdir node-website
//進(jìn)入node-website目錄
cd node-website
//clone 項(xiàng)目到服務(wù)器
git clone https://github.com/xiaoxiekeke/myblog.git
這個(gè)時(shí)候我的服務(wù)器~/web-site/目錄下就有了myblog項(xiàng)目换薄。
二玉雾、使用pm2將項(xiàng)目部署到線上
1、首先修改項(xiàng)目中/config/default.js目錄下的配置文件专控。
其中“port”為項(xiàng)目監(jiān)聽的端口號(hào)抹凳,我們這里監(jiān)聽的是8082÷赘“mongodb”為連接mongo所需要配置的參數(shù)赢底。
2、然后在項(xiàng)目中用
pm2 start index.js
開啟node進(jìn)程常駐柏蘑。3幸冻、編輯iptables防火墻配置文件,并開啟相應(yīng)端口號(hào)
sudo vi /etc/iptables.up.rules
4咳焚、重載iptables
sudo iptables-restore</etc/iptables.up.rules
5洽损、訪問:http://47.52.28.218:8082/
此時(shí)我們的博客已經(jīng)部署成功,但是只能用ip地址訪問
三革半、配置nginx映射并使"blog.xiaoxiekeke.com"域名可以直接訪問到http://47.52.28.218:8082/
第二節(jié)中碑定,我們成功的把項(xiàng)目部署到了線上流码,但只能夠使用ip訪問,為了使它能夠通過域名被用戶訪問延刘,還需要做以下操作:
1漫试、進(jìn)入nginx配置文件目錄:cd /etc/nginx/conf.d/
如圖,目前該目錄下只有一個(gè)之前在第六章中寫好的一個(gè)配置文件“xiaoke-com-8081.conf”碘赖,該配置文件是將80端口映射到8081端口驾荣,我們將其復(fù)制一份
2、復(fù)制nginx配置文件:
sudo cp xiaoke-com-8081.conf blog-com-8082.conf
3普泡、編寫配置文件為:
upstream blog {
server 127.0.0.1:8082;
}
server {
listen 80;
server_name blog.xiaoxiekeke.com;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Nginx-Proxy true;
proxy_pass http://blog;
proxy_redirect off;
}
}
前提:此處我們要用的blog.xiaoxiekeke.com域名已經(jīng)在第8章中使用dnspod解析過了播掷,如果沒有解析的話還需要解析一下,才能用撼班。不了解的可參考7歧匈、8兩章。
4权烧、編寫和保存好配置文件后重啟nginx服務(wù):
5眯亦、此時(shí)就可以通過域名訪問項(xiàng)目了:
四、pm2配置自動(dòng)化部署
經(jīng)過以上的操作般码,我們已經(jīng)能夠?qū)㈨?xiàng)目成功能部署到服務(wù)器上了妻率,然而每次部署的過程如果全部采用手動(dòng)的話還是過于麻煩。我們需要登錄服務(wù)器板祝、pull新代碼宫静、重新安裝依賴、重啟服務(wù)……這些過程麻煩且容易出錯(cuò)券时,因此我們考慮采用pm2的方式實(shí)現(xiàn)一鍵自動(dòng)化的部署項(xiàng)目孤里,解決項(xiàng)目部署過程中的痛點(diǎn)。
1橘洞、我們?cè)陧?xiàng)目的根目錄下新建一個(gè)ecosystem.json文件捌袜,并push到git倉庫:
{
"apps" : [{
"name" : "myblog",
"script" : "index.js",
"env": {
"COMMON_ENV_VAR": "true"
},
"env_production" :{
"NODE_ENV": "production",
}
}],
"deploy" : {
"production" : {
"user" : "xiaoke",
"host" : "47.52.28.218",
"port" : "39999",
"repo" : "https://github.com/xiaoxiekeke/myblog.git",
"ref" : "origin/master",
"path" : "/www/website/myblog",
"ssh_options": "StrictHostKeyChecking=no",
"post-deploy" : "npm install && pm2 startOrRestart ecosystem.json --env production",
"env" : {
"NODE_ENV": "production"
}
}
}
}
2、若服務(wù)器用的是“非交互式”ssh登錄炸枣,則需要將服務(wù)器中~/.bashrc
文件中的
#case $- in
# *i*) ;;
# *) return;;
#esac
注釋掉虏等,然后source .bashrc
重載
3、在服務(wù)器中新建網(wǎng)站目錄/www/website/myblog
并賦予777權(quán)限:
4适肠、在本地執(zhí)行pm2 deploy ecosystem.json production setup
把git倉庫的代碼部署到服務(wù)器霍衫。
此時(shí)服務(wù)器目錄下會(huì)出現(xiàn)三個(gè)文件夾:current(當(dāng)前代碼),share(日志等共享文件)侯养,cource(源代碼)敦跌。
5、在本地部署遠(yuǎn)程服務(wù):pm2 deploy ecosystem.json production
此時(shí)服務(wù)器會(huì)執(zhí)行“ecosystem.json”配置文件中的“post-deploy”逛揩,先安裝依賴然后再通過pm2啟動(dòng)項(xiàng)目柠傍。
此時(shí)在服務(wù)器上該項(xiàng)目已經(jīng)被啟動(dòng):
最后麸俘,附上pm2的官網(wǎng),大家可以進(jìn)行更深度的學(xué)習(xí)携兵!https://keymetrics.io/