10、在服務(wù)器正式部署和發(fā)布上線nodejs項(xiàng)目膘怕。

一想诅、上傳項(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咳焚、重載iptablessudo 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/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末疾掰,一起剝皮案震驚了整個(gè)濱河市搂誉,隨后出現(xiàn)的幾起案子徐紧,更是在濱河造成了極大的恐慌,老刑警劉巖炭懊,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件并级,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡侮腹,警方通過查閱死者的電腦和手機(jī)嘲碧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來父阻,“玉大人愈涩,你說我怎么就攤上這事〖用” “怎么了履婉?”我有些...
    開封第一講書人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)斟览。 經(jīng)常有香客問我毁腿,道長(zhǎng),這世上最難降的妖魔是什么苛茂? 我笑而不...
    開封第一講書人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任已烤,我火速辦了婚禮,結(jié)果婚禮上妓羊,老公的妹妹穿的比我還像新娘胯究。我一直安慰自己,他們只是感情好躁绸,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開白布裕循。 她就那樣靜靜地躺著,像睡著了一般涨颜。 火紅的嫁衣襯著肌膚如雪费韭。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,370評(píng)論 1 302
  • 那天庭瑰,我揣著相機(jī)與錄音星持,去河邊找鬼。 笑死弹灭,一個(gè)胖子當(dāng)著我的面吹牛督暂,可吹牛的內(nèi)容都是我干的揪垄。 我是一名探鬼主播,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼逻翁,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼饥努!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起八回,我...
    開封第一講書人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤酷愧,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后缠诅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體溶浴,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年管引,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了士败。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡褥伴,死狀恐怖谅将,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情重慢,我是刑警寧澤饥臂,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站伤锚,受9級(jí)特大地震影響擅笔,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜屯援,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一猛们、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧狞洋,春花似錦弯淘、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至借嗽,卻和暖如春态鳖,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背恶导。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工浆竭, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓邦泄,卻偏偏與公主長(zhǎng)得像删窒,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子顺囊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容