【Azure 應(yīng)用服務(wù)】本地Node.js部署上云(Azure App Service for Linux)遇到的三個(gè)問題解決之道

問題描述

當(dāng)本地Node.js(Linux + Node.js + npm + yarn)部署上云楼镐,選擇 Azure App Service for Linux 環(huán)境壁却。但是在部署時(shí)女轿,遇見了以下三個(gè)問題:

問題一:使用VS Code進(jìn)行部署纠拔,部署速度非常的慢付鹿,且長時(shí)間無法部署成功

問題二:本地項(xiàng)目文件部署到App Service的WWWROOT目錄下物蝙,但是項(xiàng)目中的node_modules為空炎滞,即App Service沒有完成自動(dòng)化部署

問題三:部署成功后,項(xiàng)目無法訪問诬乞,端口3000沒有被App Service監(jiān)聽

問題解答

問題一:使用VS Code進(jìn)行部署册赛,部署速度非常的慢,且長時(shí)間無法部署成功

因?yàn)镹ode.js 應(yīng)用必須與所有必需的 NPM 依賴項(xiàng)一起部署震嫉。但如果項(xiàng)目根目錄文件中包含了 yarn.lock 或者是在 package.json 中指定了 yarn 作為Package Manager森瘪,則會(huì)使用 yarn 來代替 npm。 且默認(rèn)會(huì)使用最新版的 yarn票堵。這會(huì)導(dǎo)致在部署時(shí)出現(xiàn)未知問題柜砾。如卡頓導(dǎo)致長時(shí)間無響應(yīng)。


image.png

解決辦法為换衬,刪除 yarn.lock 文件痰驱。

引用文檔:https://github.com/microsoft/Oryx/blob/main/doc/runtimes/nodejs.md#package-manager

Package manager

The version of npm used to install dependencies and run npm scripts is the one bundled with the specified Node.js version as listed here.

If a yarn.lock file is found in your repo root or if you specify "yarn" in the engines field of package.json, the latest or specified version of yarn will be used instead of npm.

Note that installing packages globally is unsupported, whether requested directly by your app or by some pre/post install script of an included package. For example, this will not work in your package.json:

  "preinstall" : "npm install -g somepackage"
}

問題二:本地項(xiàng)目文件部署到App Service的WWWROOT目錄下,但是項(xiàng)目中的node_modules為空瞳浦,即App Service沒有完成自動(dòng)化部署

因?yàn)轫?xiàng)目文件已經(jīng)部署到 wwwroot目錄下担映,但是 **node_modules **為空,表示部署時(shí)沒有完成 npm install 自動(dòng)編譯的命令叫潦。所以經(jīng)過查看關(guān)于App Service對部署是否自動(dòng)build的資料發(fā)現(xiàn)蝇完,當(dāng)對App Service進(jìn)行部署的時(shí)候,App Service Kudu會(huì)自動(dòng)執(zhí)行編譯命令。其主要是通過 **SCM_DO_BUILD_DURING_DEPLOYMENT** 參數(shù)進(jìn)行控制短蜕。

當(dāng) **SCM_DO_BUILD_DURING_DEPLOYMENT **設(shè)置為 true 時(shí)氢架,Kudu會(huì)自動(dòng)編譯項(xiàng)目文件,如運(yùn)行 npm install 或 dotnet build / dotnet pulish

當(dāng) **SCM_DO_BUILD_DURING_DEPLOYMENT **設(shè)置為false時(shí)朋魔,則不會(huì)岖研。當(dāng)使用ZIP 包部署時(shí),就不會(huì)觸發(fā)自動(dòng)編譯警检。因?yàn)镵udu認(rèn)為ZIP中的文件已經(jīng)是可執(zhí)行文件孙援,不在需要編譯。

Reference : https://github.com/projectkudu/kudu/wiki/Configurable-settings#enabledisable-build-actions

解決辦法為扇雕,**在App Service的Configuration中添加 SCM_DO_BUILD_DURING_DEPLOYMENT 參數(shù)拓售,并配置值為 true∠夥睿或者是在項(xiàng)目跟目錄中添加 .deployment 文件础淤。并在其中加入 **

[config]
SCM_DO_BUILD_DURING_DEPLOYMENT=true 

如圖:


image.png

問題三:部署成功后,項(xiàng)目無法訪問哨苛,端口3000沒有被App Service監(jiān)聽

Node.js 應(yīng)用需要偵聽正確的端口才能接收傳入的請求

當(dāng)部署完成值骇,但無法通過瀏覽器訪問App Service 。這時(shí)候移国,就可以直接登錄Kudu 查看 docker 日志吱瘩。在日志中看見 app service默認(rèn)監(jiān)聽的端口為8080。


image.png

而 Node.js 項(xiàng)目中迹缀,使用的確是3000使碾,所以需要通過配置App Service的 Application Setting來解決這個(gè)問題。

解決辦法為:通過App Service門戶祝懂,添加 PORT 或者 WEBSITES_PORT 應(yīng)用配置參數(shù)值為3000.

Reference:

https://docs.azure.cn/zh-cn/app-service/configure-custom-container?pivots=container-linux#configure-port-number

https://docs.azure.cn/zh-cn/app-service/configure-language-nodejs?pivots=platform-linux#get-port-number

當(dāng)在復(fù)雜的環(huán)境中面臨問題票摇,格物之道需:濁而靜之徐清,安以動(dòng)之徐生砚蓬。 云中矢门,恰是如此!

分類: 【Azure 應(yīng)用服務(wù)】

標(biāo)簽: App Service, App Service for Linux, Node.js + yarn.lock +npm, SCM_DO_BUILD_DURING_DEPLOYMENT, PORT +WEBSITE_PORT

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市灰蛙,隨后出現(xiàn)的幾起案子祟剔,更是在濱河造成了極大的恐慌,老刑警劉巖摩梧,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件物延,死亡現(xiàn)場離奇詭異,居然都是意外死亡仅父,警方通過查閱死者的電腦和手機(jī)叛薯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進(jìn)店門浑吟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人耗溜,你說我怎么就攤上這事组力。” “怎么了抖拴?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵燎字,是天一觀的道長。 經(jīng)常有香客問我城舞,道長轩触,這世上最難降的妖魔是什么寞酿? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任家夺,我火速辦了婚禮,結(jié)果婚禮上伐弹,老公的妹妹穿的比我還像新娘拉馋。我一直安慰自己,他們只是感情好惨好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布煌茴。 她就那樣靜靜地躺著,像睡著了一般日川。 火紅的嫁衣襯著肌膚如雪蔓腐。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天龄句,我揣著相機(jī)與錄音回论,去河邊找鬼。 笑死分歇,一個(gè)胖子當(dāng)著我的面吹牛傀蓉,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播职抡,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼葬燎,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了缚甩?” 一聲冷哼從身側(cè)響起谱净,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎擅威,沒想到半個(gè)月后岳遥,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡裕寨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年浩蓉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了派继。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,991評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡捻艳,死狀恐怖驾窟,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情认轨,我是刑警寧澤绅络,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站嘁字,受9級特大地震影響恩急,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜纪蜒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一衷恭、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧纯续,春花似錦随珠、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至倦炒,卻和暖如春显沈,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背逢唤。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工拉讯, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人智玻。 一個(gè)月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓遂唧,卻偏偏與公主長得像,于是被迫代替她去往敵國和親吊奢。 傳聞我的和親對象是個(gè)殘疾皇子盖彭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評論 2 355

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