Linux系統(tǒng) nodejs 宿主應(yīng)用的自動(dòng)化部署腳本

前言:

? ? 1992年的夏天,當(dāng)java語(yǔ)言面試(又名oka)新思,1996年1月窖梁,Sun公司發(fā)布了Java的第一個(gè)開(kāi)發(fā)工具包(JDK 1.0)在1995年時(shí),由Netscape公司的Brendan Eich夹囚,在網(wǎng)景導(dǎo)航者瀏覽器上首次設(shè)計(jì)實(shí)現(xiàn)而成纵刘。因?yàn)?a target="_blank" rel="nofollow">Netscape與Sun合作,Netscape管理層希望它外觀看起來(lái)像Java荸哟,因此取名為JavaScript假哎。但實(shí)際上它的語(yǔ)法風(fēng)格與SelfScheme較為接近。?2009年5月nodejs問(wèn)世鞍历,由Ryan Dahl開(kāi)發(fā)舵抹,Node 是一個(gè)JavaScript 運(yùn)行在服務(wù)端的開(kāi)發(fā)平臺(tái),它讓 JavaScript 成為與PHP堰燎、Python掏父、PerlRuby?等服務(wù)端語(yǔ)言平起平坐的腳本語(yǔ)言秆剪。?實(shí)質(zhì)是對(duì)Chrome V8引擎進(jìn)行了封裝赊淑。距今nodejs已經(jīng)10歲了爵政,LTS版本目前最新已經(jīng)到10.15.3,最新版12.0.0陶缺。js語(yǔ)法在各個(gè)領(lǐng)域封裝都可以說(shuō)是當(dāng)之無(wú)愧的版本帝(react 到 16.8.6? vue到 2.6.10钾挟, angular到7.2.14),大神門玩的不亦樂(lè)乎饱岸,前端開(kāi)發(fā)玩的痛不欲生(16年為了用 angular 和 cto 還沒(méi)撕完就升到2掺出,一轉(zhuǎn)眼就升到4,17年為了用剛學(xué)會(huì)的vue對(duì)老板各種黑react苫费,18年被react玩的要死要活)汤锨,也許對(duì)大神們來(lái)說(shuō)向下兼容從來(lái)都只是存在評(píng)論區(qū)。當(dāng)然多次的迭代首先還是立足于js語(yǔ)法無(wú)處不在前提百框。js曾是被吐槽最多的語(yǔ)言闲礼,但現(xiàn)在他一直在變好。

動(dòng)手實(shí)踐:

首先我們需要一臺(tái)服務(wù)器铐维,現(xiàn)在云服務(wù)這么好柬泽,當(dāng)然還是找臺(tái)云服務(wù)器好啦,首選當(dāng)然是阿里云穩(wěn)定高效嫁蛇,但是我沒(méi)有(笑哭)感覺(jué)會(huì)被老板打死锨并,租了華為的機(jī)器,至于為啥當(dāng)然是因?yàn)槊赓M(fèi)啦睬棚,申請(qǐng)完賬號(hào)之后我們通過(guò)ssh登錄到服務(wù)器

? Janos git:(master) ? ssh root@114.116.104.94

root@114.116.104.94's password:

Last login: Fri Apr 26 19:01:54 2019 from 42.120.73.160

Welcome to Huawei Cloud Service

登錄操作系統(tǒng)之后我們第一步是干什么呢第煮,當(dāng)然是裝插件拉怎么看自己的需要的的插件有沒(méi)有裝呢,我個(gè)人喜歡用which命令

[root@ecs-b80b ~]# which nginx /usr/sbin/nginx [root@ecs-b80b ~]#? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? which node /root/.nvm/versions/node/v12.0.0/bin/node
?[root@ecs-b80b ~]# which yum /usr/bin/yum [root@ecs-b80b ~]# which nvm? ? ? ? ? ? ? ?
/usr/bin/which: no nvm in(/root/.nvm/versions/node/v12.0.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin) [root@ecs-b80b ~]#

當(dāng)然這些是沒(méi)有的要自己裝 推薦先裝個(gè) yum 再裝個(gè) nvm抑党,前者可以下載現(xiàn)在的多數(shù)應(yīng)用包空盼,后者是主要是管理node應(yīng)用(誰(shuí)讓我們node更新快呢 ,yum上安裝node 只能到6.x版本)新荤,然后我們要做的就是一個(gè)應(yīng)用并把他發(fā)布到遠(yuǎn)端倉(cāng)庫(kù)揽趾,我用的github,主要是方便不過(guò)國(guó)內(nèi)自己的應(yīng)用還是托管到國(guó)內(nèi)的倉(cāng)庫(kù)(原因很簡(jiǎn)單不喜歡)苛骨,web框架 egg(原因就是因?yàn)槭欤┤缓蟀阉l(fā)布到git就好啦篱瞎!

網(wǎng)絡(luò)

目錄結(jié)構(gòu)

home

-------- admin

-----------------bin

----------------- start.sh stop.sh env.sh

[root@ecs-b80b admin]# cd bin
?[root@ecs-b80b bin]# ls
env.sh Janos logs ops package-lock.json start.sh stop.sh

在這里我們創(chuàng)建三個(gè)文件 start.sh stop.sh env.sh, 作用分別是啟動(dòng)應(yīng)用,停止應(yīng)用痒芝,以及設(shè)置環(huán)境變量

#!bash
#所有的啟動(dòng)腳本的環(huán)境變量
# env.sh

export APP_NAME="Janos" export APP_PORT="7001"
export APP_DIR="$PWD/${APP_NAME}/"
export GIT_REPOSITORY="代碼倉(cāng)庫(kù)是你自己node應(yīng)用的倉(cāng)庫(kù)"

#!bash
#啟動(dòng)應(yīng)用
#start.sh?

?source ./env.sh
?echo "hello world"
?p = "${pwd}"

check_app() {
? ?if [ -e "${APP_DIR}" ]; then
? ? ?echo "目錄已存在${APP_DIR}"
? else
? ? ?mkdir "${APP_NAME}"
? fi
}

pull_app() {
? ? if [-e "${APP_DIR}package.json"]; then
? ? ? ?git pull "$GIT_REPOSITORY"
? ? ? ?print "git pull ${GIT_REPOSITORY}"
? ? else git clone "$GIT_REPOSITORY"
? ? fi
? ? ? ?cd "./${APP_NAME}"
? ? ? ?npm install
}

start() {
? ?check_app
? ?pull_app
? ?npm run start
? ?cd "../"
}
?start

#|bash
kill_app() {
? ?pid=$(netstat -anp|grep ${APP_PORT}|awk '{printf $7}'|cut -d/ -f1)
? ?if [ $APP_PORT ] ; then
? ? ? if [ pid ] ; then
? ? ? ? ?kill "${pid}"
? ? ?else echo "沒(méi)有找到進(jìn)程"
? ? ?fi

? ?else
? ? ?echo "沒(méi)有設(shè)置端口號(hào)"
? ?fi
}
kill_app

source start.sh

這幾端代碼我臨時(shí)寫的 其實(shí)如果為了跟安全的更健全的腳本其實(shí)還可以對(duì)依賴檢測(cè)安裝此時(shí)我們?nèi)匀徊荒芡ㄟ^(guò)外網(wǎng)來(lái)訪問(wèn)我們的應(yīng)用 雖然我們的應(yīng)用已經(jīng)啟動(dòng)

curl "localhost:7001"

這個(gè)時(shí)候就到了我們要配置我們ng的時(shí)候了俐筋,linux 應(yīng)用程序的配置文件一般都放在/etc 目錄下,ng也不例外,ng 配置有很多但我們要做的只有一件严衬,配置 server配置里的 location 配置澄者,server 默認(rèn)的配置監(jiān)聽(tīng)了 80端口 和 443 接口,

location / { proxy_pass http://127.0.0.1:7001/; }

nginx -s reload

此時(shí) 我們的應(yīng)用就可以通過(guò)外網(wǎng)訪問(wèn)了

window? 和 mac 更改的hosts 文件的目錄不稍有不同 mac系統(tǒng)和 linux 類型 雷同 在 /etc 目錄下 修改hosts,文件粱挡,window系統(tǒng)的 /etc 目錄在? 系統(tǒng)啟動(dòng)目錄:/window/System32/driver/etc


文末彩蛋:

? ?在學(xué)習(xí)啊shell編程的過(guò)程中一度被 if 中的條件判斷搞的略蒙 尤其是 -e -f 這種命令有所不同之后才明白這個(gè)這是 test 命令的簡(jiǎn)寫
test 模塊命令集
? ? ?-e 判斷對(duì)象是否存在
? ? -d 判斷對(duì)象是否存在赠幕,并且為目錄
? ? -f 判斷對(duì)象是否存在,并且為常規(guī)文件
? ? -L 判斷對(duì)象是否存在询筏,并且為符號(hào)鏈接
? ? -h 判斷對(duì)象是否存在榕堰,并且為軟鏈接
? ? -s 判斷對(duì)象是否存在,并且長(zhǎng)度不為0
? ? -r 判斷對(duì)象是否存在嫌套,并且可讀-w 判斷對(duì)象是否存在逆屡,并且可寫
? ? -x 判斷對(duì)象是否存在,并且可執(zhí)行
? ? -O 判斷對(duì)象是否存在踱讨,并且屬于當(dāng)前用戶
? ? -G 判斷對(duì)象是否存在魏蔗,并且屬于當(dāng)前用戶組
? ? -nt 判斷file1是否比f(wàn)ile2新? [?"/data/file1"-nt?"/data/file2"]-ot 判斷file1是否比f(wàn)ile2舊? [?"/data/file1"-ot?"/data/file2"]

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市痹筛,隨后出現(xiàn)的幾起案子沫勿,更是在濱河造成了極大的恐慌,老刑警劉巖味混,帶你破解...
    沈念sama閱讀 221,430評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異诫惭,居然都是意外死亡翁锡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門夕土,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)馆衔,“玉大人,你說(shuō)我怎么就攤上這事怨绣〗抢#” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 167,834評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵篮撑,是天一觀的道長(zhǎng)减细。 經(jīng)常有香客問(wèn)我,道長(zhǎng)赢笨,這世上最難降的妖魔是什么未蝌? 我笑而不...
    開(kāi)封第一講書人閱讀 59,543評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮茧妒,結(jié)果婚禮上萧吠,老公的妹妹穿的比我還像新娘。我一直安慰自己桐筏,他們只是感情好纸型,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,547評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般狰腌。 火紅的嫁衣襯著肌膚如雪除破。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 52,196評(píng)論 1 308
  • 那天癌别,我揣著相機(jī)與錄音皂岔,去河邊找鬼。 笑死展姐,一個(gè)胖子當(dāng)著我的面吹牛躁垛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播圾笨,決...
    沈念sama閱讀 40,776評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼教馆,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了擂达?” 一聲冷哼從身側(cè)響起土铺,我...
    開(kāi)封第一講書人閱讀 39,671評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎板鬓,沒(méi)想到半個(gè)月后悲敷,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,221評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡俭令,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,303評(píng)論 3 340
  • 正文 我和宋清朗相戀三年后德,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片抄腔。...
    茶點(diǎn)故事閱讀 40,444評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡瓢湃,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出赫蛇,到底是詐尸還是另有隱情绵患,我是刑警寧澤,帶...
    沈念sama閱讀 36,134評(píng)論 5 350
  • 正文 年R本政府宣布悟耘,位于F島的核電站落蝙,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏暂幼。R本人自食惡果不足惜掘殴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,810評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望粟誓。 院中可真熱鬧奏寨,春花似錦、人聲如沸鹰服。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,285評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至套菜,卻和暖如春亲善,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背逗柴。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,399評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工蛹头, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人戏溺。 一個(gè)月前我還...
    沈念sama閱讀 48,837評(píng)論 3 376
  • 正文 我出身青樓渣蜗,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親旷祸。 傳聞我的和親對(duì)象是個(gè)殘疾皇子耕拷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,455評(píng)論 2 359

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