Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Node.js alkalmazásokat az összes szükséges npm-függőséggel együtt kell üzembe helyezni. Az App Service üzembehelyezési motorja automatikusan fut npm install --productionGit-adattár üzembe helyezésekor, vagy ha engedélyezve van a buildautomatizálással rendelkezőZip-csomag üzembe helyezése. Ha azonban FTP/S használatával telepíti a fájlokat, manuálisan kell feltöltenie a szükséges csomagokat.
Ez a cikk a legfontosabb fogalmakat ismerteti, és útmutatást nyújt az App Service-ben üzembe helyező Node.js fejlesztők számára. Ha még soha nem használta az Azure App Service-t, először végezze el a Node.js rövid útmutatót és az Node.js MongoDB-oktatóanyaggal .
A Node.js verzió megjelenítése
Az aktuális Node.js verzió megjelenítéséhez futtassa a következő parancsot a Cloud Shellben:
az webapp config appsettings list --name <app-name> --resource-group <resource-group-name> --query "[?name=='WEBSITE_NODE_DEFAULT_VERSION'].value"
Az összes támogatott Node.js-verzió megjelenítéséhez futtassa a következő parancsot a Cloud Shellben:
az webapp list-runtimes --os windows | grep NODE
Az aktuális Node.js verzió megjelenítéséhez futtassa a következő parancsot a Cloud Shellben:
az webapp config show --resource-group <resource-group-name> --name <app-name> --query linuxFxVersion
Az összes támogatott Node.js-verzió megjelenítéséhez futtassa a következő parancsot a Cloud Shellben:
az webapp list-runtimes --os linux | grep NODE
A Node.js verziójának beállítása
Ha az alkalmazást egy támogatott Node.js verzióra szeretné beállítani, futtassa az alábbi parancsot a Cloud Shellben, hogy egy támogatott verzióra állítsa beWEBSITE_NODE_DEFAULT_VERSION:
az webapp config appsettings set --name <app-name> --resource-group <resource-group-name> --settings WEBSITE_NODE_DEFAULT_VERSION="~24"
Feljegyzés
Ez a példa az ajánlott tilde szintaxist használja a Node.js 24-es futtatókörnyezet legújabb elérhető verziójának megcélzásához az App Service-ben.
Mivel a futtatókörnyezetet a platform rendszeresen javítja és frissíti, nem javasoljuk, hogy egy adott alverziót / javítást célozz meg. A lehetséges biztonsági kockázatok miatt ezek a verziók nem garantáltan elérhetők.
Feljegyzés
A Node.js verziót a projektben kell beállítania package.json. Az üzembehelyezési motor egy külön folyamaton fut, amely tartalmazza az összes támogatott Node.js verziót.
Ha az alkalmazást egy támogatott Node.js verzióra szeretné beállítani, futtassa a következő parancsot a Cloud Shellben:
az webapp config set --resource-group <resource-group-name> --name <app-name> --linux-fx-version "NODE|24-lts"
Ez a beállítás megadja a használni kívánt Node.js verziót futásidőben és a Kuduban történő automatikus csomag-visszaállítás során is.
Feljegyzés
A Node.js verziót a projektben kell beállítania package.json. Az üzembehelyezési motor egy külön tárolóban fut, amely tartalmazza az összes támogatott Node.js verziót.
Mi történik az elavult futtatókörnyezetekkel az App Service-ben?
Az elavult futtatókörnyezeteket a karbantartó szervezet elavulttá vagy jelentős biztonsági résekkel rendelkezik. Ennek megfelelően el lesznek távolítva a portál lapjainak létrehozása és konfigurálása során. Ha egy elavult futtatókörnyezet el van rejtve a portálon, a futtatókörnyezetet még használó alkalmazások továbbra is futnak.
Ha olyan alkalmazást szeretne létrehozni, amely a portálon már nem látható elavult futtatókörnyezeti verzióval rendelkezik, használja az Azure CLI-t, egy ARM-sablont vagy a Bicep-et. Ezek az üzembe helyezési alternatívák lehetővé teszik elavult futtatókörnyezetek létrehozását, amelyek a portálról törlődnek, de továbbra is támogatottak.
Ha egy futtatókörnyezet teljesen el lett távolítva az App Service-platformról, az Azure-előfizetés tulajdonosa e-mailben értesítést kap az eltávolítás előtt.
A portszám beállítása
A Node.js alkalmazásnak a megfelelő portot kell figyelnie a bejövő kérések fogadásához.
A Windows App Service-ben Node.js alkalmazásokat az IISNode üzemelteti , és a Node.js alkalmazásnak figyelnie kell a process.env.PORT változóban megadott portot. Az alábbi példa bemutatja, hogyan állíthatja be a portot egy egyszerű Express-alkalmazásban:
Az App Service beállítja a környezeti változót PORT a Node.js tárolóban, és továbbítja a bejövő kéréseket a tárolónak az adott portszámon. A kérések fogadásához az alkalmazásnak figyelnie kell a változóban megadott portot process.env.PORT . Az alábbi példa bemutatja, hogyan állíthatja be a portot egy egyszerű Express-alkalmazásban:
const express = require('express')
const app = express()
const port = process.env.PORT || 3000
app.get('/', (req, res) => {
res.send('Hello World!')
})
app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`)
})
Testreszabott építési automatizálás
Ha az alkalmazást a Git használatával vagy a buildautomatizálást engedélyező zip-csomagok használatával helyezi üzembe, az App Service buildautomatizálása a következő lépéseket hajtja végre:
- Futtasson egy egyéni szkriptet, ha az adott parancsot
PRE_BUILD_SCRIPT_PATHa rendszer megadja. - Futtatás
npm installjelzők nélkül. Ez a lépés tartalmazza az npm-etpreinstalléspostinstalla szkripteket, valamint telepíti is azokatdevDependencies. - Futtassa
npm run build, ha egy buildszkript van megadva a package.json fájlban. - Futtassa
npm run build:azure, habuild:azureegy szkript van megadva a package.json fájlban. - Futtasson egy egyéni szkriptet, ha az adott parancsot
POST_BUILD_SCRIPT_PATHa rendszer megadja.
Feljegyzés
Amint az npm-dokumentációkban is szerepel, a megadott nevű szkriptek a és prebuild futnak postbuild futtatása előtt és után, ha meg vannak adva. Az elnevezett preinstallpostinstallés install utána futó szkriptek.
PRE_BUILD_COMMAND és POST_BUILD_COMMAND alapértelmezés szerint üres környezeti változók. Az előzetes buildelési parancsok futtatásához definiálja a következőt PRE_BUILD_COMMAND: . A buildelés utáni parancsok futtatásához definiálja a következőt POST_BUILD_COMMAND:
Az alábbi példa a két változót használja parancsok sorozatának megadására, amelyeket vesszők választanak el egymástól.
az webapp config appsettings set --name <app-name> --resource-group <resource-group-name> --settings PRE_BUILD_COMMAND="echo foo, scripts/prebuild.sh"
az webapp config appsettings set --name <app-name> --resource-group <resource-group-name> --settings POST_BUILD_COMMAND="echo foo, scripts/postbuild.sh"
A buildautomatizálás testreszabásához szükséges további környezeti változókról az Oryx konfigurációja című témakörben talál további információt.
Az App Service linuxos alkalmazások futtatásáról és Node.js összeállításáról az Oryx dokumentációjában talál további információt: Az alkalmazások észlelése és létrehozása Node.js.
Node.js-kiszolgáló konfigurálása
A Node.js tárolók PM2-t, egy termelési folyamatkezelőt tartalmaznak a működési folyamatok kezelésére. Az alkalmazást úgy konfigurálhatja, hogy a PM2-vel kezdődjön, npm startvagy egyéni paranccsal.
| Eszköz | Cél |
|---|---|
| Futtatás PM2-vel | Ajánlott. Éles vagy előkészítési használat. A PM2 teljes körű alkalmazáskezelési platformot biztosít. |
| Az npm start parancs futtatása | Csak fejlesztési célokra használható. |
| Egyéni parancs futtatása | Fejlesztés vagy előkészítés. |
Futtatás a PM2-vel
A tároló automatikusan elindítja az alkalmazást a PM2-vel, amikor az egyik gyakori Node.js fájl található a projektben:
- bin/www
- server.js
- app.js
- index.js
- hostingstart.js
- Az alábbi PM2-fájlok egyike: process.json vagy ecosystem.config.js
Egyéni kezdőfájlt a következő bővítményekkel is konfigurálhat:
- Egy .js fájl
- A .json, .config.js, .yaml vagy .yml kiterjesztésű PM2-fájl
Feljegyzés
A node 14 LTS után Node.js verziók esetén a tároló nem indítja el automatikusan az alkalmazást a PM2-vel. Ha pm2-vel szeretné elindítani az alkalmazást, állítsa az indítási parancsot a következőre pm2 start <.js-file-or-PM2-file> --no-daemon: . Mindenképpen használja a --no-daemon argumentumot, mert a PM2-nek az előtérben kell futnia ahhoz, hogy a tároló megfelelően működjön.
Egyéni kezdőfájl hozzáadásához futtassa a következő parancsot a Cloud Shellben:
az webapp config set --resource-group <resource-group-name> --name <app-name> --startup-file "<filename-with-extension>"
Futtatás egyéni paranccsal
Az App Service egy egyéni paranccsal indíthatja el az alkalmazást, például egy végrehajtható parancsot, például run.sh. Futtatáshoz npm run start:prodfuttassa például a következő parancsot a Cloud Shellben:
az webapp config set --resource-group <resource-group-name> --name <app-name> --startup-file "npm run start:prod"
Futtasd a npm start parancsot
Az alkalmazás npm startelindításához csak győződjön meg arról, hogy egy start szkript szerepel a package.json fájlban. Példa:
{
...
"scripts": {
"start": "gulp",
...
},
...
}
Ha egyéni package.json szeretne használni a projektben, futtassa a következő parancsot a Cloud Shellben:
az webapp config set --resource-group <resource-group-name> --name <app-name> --startup-file "<filename>.json"
Távoli hibakeresés
Ha a Node.js alkalmazást a PM2-vel való futtatásra konfigurálja, távolról is hibakeresést végezhet a Visual Studio Code-ban, kivéve, ha .config.js, .yml vagy .yaml fájllal futtatja.
A legtöbb esetben nincs szükség további konfigurációra az alkalmazáshoz. Ha az alkalmazás egy process.jsona JSON-gyökérben. Példa:
{
"name" : "worker",
"script" : "./index.js",
...
}
A Visual Studio Code távoli hibakereséshez való beállításához telepítse az App Service-bővítményt. Kövesse a bővítményoldal utasításait, és jelentkezzen be az Azure-ba a Visual Studio Code-ban.
Az Azure Explorerben keresse meg a hibakereséshez használni kívánt alkalmazást, kattintson rá a jobb gombbal, és válassza a Távoli hibakeresés indítása parancsot. Válassza az Igen lehetőséget az alkalmazás távoli hibakeresésének engedélyezéséhez. Az App Service elindít egy alagútproxyt, és csatolja a hibakeresőt. Ezután kéréseket intézhet az alkalmazáshoz, és megtekintheti, hogy a hibakereső szünetel a töréspontoknál.
Ha végzett a hibakereséssel, állítsa le a hibakeresőt a Leválasztás gombra kattintva. Amikor a rendszer kéri, válassza az Igen lehetőséget a távoli hibakeresés letiltásához. Ha később le szeretné tiltani, kattintson a jobb gombbal az alkalmazásra az Azure Explorerben, és válassza a Távoli hibakeresés letiltása lehetőséget.
Hozzáférés a környezeti változókhoz
Az App Service-szel az alkalmazás kódján kívül is megadhatja az alkalmazások beállításait. Ezután a standard Node.js mintával érheti el őket. Például egy NODE_ENV nevű alkalmazásbeállítás hozzáféréséhez használja a következő kódot:
process.env.NODE_ENV
Grunt/Bower/Gulp futtatása
Alapértelmezés szerint az App Service buildautomatizálása akkor fut npm install --production , ha felismeri, hogy egy Node.js alkalmazás a Giten vagy Zip-alapú üzembe helyezésen keresztül van üzembe helyezve, és engedélyezve van a buildautomatizálás. Ha az alkalmazásnak szüksége van a népszerű automatizálási eszközökre, például a Gruntra, a Bowerre vagy a Gulpra, egy egyéni üzembehelyezési szkriptet kell megadnia a futtatásához.
Ahhoz, hogy az adattár futtathassa ezeket az eszközöket, hozzá kell adnia őket a package.json függőségeihez . Például:
"dependencies": {
"bower": "^1.7.9",
"grunt": "^1.0.1",
"gulp": "^3.9.1",
...
}
Helyi terminálablakból módosítsa a könyvtárat az adattár gyökerére, és futtassa a következő parancsokat:
npm install kuduscript -g
kuduscript --node --scriptType bash --suppressPrompt
Az adattár gyökérkönyvtára két további fájllal rendelkezik: .deployment és deploy.sh.
Nyissa meg a deploy.sh , és keresse meg a Deployment szakaszt, amely így néz ki:
#############################################################
# Deployment
# ----------
A szakasz npm install --production végén fut. Adja hozzá a szükséges eszköz :
Példaként tekintse meg a MEAN.js mintát. Ebben a példában az üzembehelyezési szkript egy egyéni npm install parancsot is futtat.
Lugas
Ez a kódrészlet fut bower install.
if [ -e "$DEPLOYMENT_TARGET/bower.json" ]; then
cd "$DEPLOYMENT_TARGET"
eval ./node_modules/.bin/bower install
exitWithMessageOnError "bower failed"
cd - > /dev/null
fi
Korty
Ez a kódrészlet fut gulp imagemin.
if [ -e "$DEPLOYMENT_TARGET/gulpfile.js" ]; then
cd "$DEPLOYMENT_TARGET"
eval ./node_modules/.bin/gulp imagemin
exitWithMessageOnError "gulp failed"
cd - > /dev/null
fi
Grunt
Ez a kódrészlet fut grunt.
if [ -e "$DEPLOYMENT_TARGET/Gruntfile.js" ]; then
cd "$DEPLOYMENT_TARGET"
eval ./node_modules/.bin/grunt
exitWithMessageOnError "Grunt failed"
cd - > /dev/null
fi
HTTPS munkamenet észlelése
Az App Service-ben a TLS/SSL-leállítás a hálózati terheléselosztóknál történik, így minden HTTPS-kérés titkosítatlan HTTP-kérésként éri el az alkalmazást. Ha az alkalmazáslogikának ellenőriznie kell, hogy a felhasználói kérések titkosítva vannak-e, vizsgálja meg a fejlécet X-Forwarded-Proto .
A népszerű webes keretrendszerek lehetővé teszik a X-Forwarded-* szabványos alkalmazásminta információinak elérését. Az Expressben megbízhatósági proxykat használhat. Példa:
app.set('trust proxy', 1)
...
if (req.secure) {
// Do something when HTTPS is used
}
Diagnosztikai naplók elérése
Az App Service-ben az alkalmazáskódból létrehozott konzolnaplók eléréséhez kapcsolja be a diagnosztikai naplózást a következő parancs futtatásával Cloud Shell-:
az webapp log config --resource-group <resource-group-name> --name <app-name> --docker-container-logging filesystem --level Verbose
A --level lehetséges értékei a következők: Error, Warning, Infoés Verbose. Minden szint tartalmazza az azt megelőző szintet. Például Error csak hibaüzeneteket tartalmaz.
Verbose az összes üzenetet tartalmazza.
A diagnosztikai naplózás bekapcsolása után futtassa a következő parancsot a naplóstream megtekintéséhez:
az webapp log tail --resource-group <resource-group-name> --name <app-name>
Ha a konzolnaplók nem jelennek meg azonnal, ellenőrizze újra 30 másodpercen belül.
Ha bármikor le szeretné állítani a naplóstreamelést, válassza a CtrlC+.
A tárolón belülről létrehozott konzolnaplókhoz hozzáférhet.
A tárolónaplózás bekapcsolásához futtassa a következő parancsot:
az webapp log config --name <app-name> --resource-group <resource-group-name> --docker-container-logging filesystem
Cserélje le a <app-name> és a <resource-group-name> értékeket a webalkalmazásnak megfelelő nevekre.
A tárolónaplózás bekapcsolása után futtassa a következő parancsot a naplóstream megtekintéséhez:
az webapp log tail --name <app-name> --resource-group <resource-group-name>
Ha a konzolnaplók nem jelennek meg azonnal, ellenőrizze újra 30 másodpercen belül.
Ha bármikor le szeretné állítani a naplóstreamelést, használja a Ctrl+C billentyűparancsot.
URL-átírások
Ha Node.js-alkalmazásokat helyez üzembe Azure-alkalmazás Linux-szolgáltatásban, előfordulhat, hogy az URL-átírásokat közvetlenül az alkalmazáson belül kell kezelnie. Ez a konfiguráció különösen hasznos annak biztosításához, hogy bizonyos URL-minták a webkiszolgáló konfigurációinak használata nélkül a megfelelő végpontokra legyenek átirányítva. Az URL-átírások többféleképpen is elvégezhetők Node.js. Ilyen például az express-urlrewrite csomag használata.
Alkalmazás figyelése az Application Insights használatával
Az Application Insights segítségével kódmódosítások nélkül figyelheti az alkalmazás teljesítményét, kivételeit és használatát. Az Application Insights-ügynök csatolásához nyissa meg a webalkalmazást a portálon, válassza az Application Insights lehetőséget a Figyelés területen, majd válassza az Application Insights bekapcsolása lehetőséget. Ezután válasszon ki egy meglévő Application Insights-erőforrást, vagy hozzon létre egy újat. Végül válassza az Oldal alján található Alkalmaz lehetőséget. A webalkalmazás PowerShell-lel történő kialakításához tekintse meg ezeket az utasításokat.
Ez az ügynök figyeli a kiszolgálóoldali Node.js alkalmazást. Az ügyféloldali JavaScript monitorozásához adja hozzá a JavaScript SDK-t a projekthez.
További információ: Alkalmazásfigyelés engedélyezése az Azure App Service for .NET- és Node.js-, Python- és Java-alkalmazásokban.
Hibaelhárítás
Ha egy működő Node.js alkalmazás másképp viselkedik az App Service-ben, vagy hibákat tapasztal, próbálkozzon a következőkkel:
- Naplófolyam elérése.
- Tesztelje az alkalmazást helyileg éles módban. Az App Service éles módban futtatja Node.js alkalmazásait, ezért gondoskodnia kell arról, hogy a projekt a várt módon működjön helyileg éles módban. Például:
- Attól függően, hogy a package.json-od milyen beállításokat tartalmaz, előfordulhat, hogy különböző csomagok vannak telepítve éles üzemmódra (
dependenciesilletve adevDependencies). - Egyes webes keretrendszerek eltérően helyezhetnek üzembe statikus fájlokat éles módban.
- Egyes webes keretrendszerek egyéni indítási szkripteket használhatnak éles módban való futtatáskor.
- Attól függően, hogy a package.json-od milyen beállításokat tartalmaz, előfordulhat, hogy különböző csomagok vannak telepítve éles üzemmódra (
- Futtassa fejlesztési módban az alkalmazását az App Service-ben. Például a MEAN.js-ben az alkalmazást futtatás közben fejlesztési módba állíthatja az
NODE_ENValkalmazás beállításának segítségével.
Nincs engedélye a mappa vagy az oldal megtekintésére.
Miután telepítette a Node.js kódot egy natív Windows-alkalmazásba az App Service-ben, előfordulhat, hogy az üzenet You do not have permission to view this directory or page megjelenik a böngészőben, amikor az alkalmazás URL-címére lép. Ez a hiba valószínűleg azért fordul elő, mert nincs web.config fájlja. (Lásd a sablont és egy példát.)
Ha a fájlokat a Git használatával vagy a zip-alapú üzembe helyezéssel helyezi üzembe, és engedélyezve van a buildautomatizálás, az üzembehelyezési motor automatikusan létrehoz egy web.config fájlt az alkalmazás webes gyökerében (%HOME%\site\wwwroot), ha az alábbi feltételek egyike teljesül:
- A projektgyökér egy package.json fájlt tartalmaz, amely egy
startJavaScript-fájl elérési útját tartalmazó szkriptet határoz meg. - A projektgyökér egyserver.js vagy egyapp.js fájlt tartalmaz.
A létrehozott web.config fájl az észlelt indítási szkripthez van igazítva. Egyéb üzembehelyezési módszerek esetén adja hozzá manuálisan a web.config fájlt. Győződjön meg arról, hogy a fájl megfelelően van formázva.
Ha zip-alapú üzembe helyezést használ (például a Visual Studio Code-on keresztül), mindenképpen engedélyezze a build automatizálását. Alapértelmezés szerint nincs engedélyezve.
az webapp up ZIP-üzembe helyezést használ, és engedélyezve van a buildautomatizálás.
A robotok933456 üzenetének figyelmen kívül hagyása a naplókban
A tárolónaplókban a következő üzenet jelenhet meg:
2019-04-08T14:07:56.641002476Z "-" - - [08/Apr/2019:14:07:56 +0000] "GET /robots933456.txt HTTP/1.1" 404 415 "-" "-"
Az üzenet biztonságosan figyelmen kívül hagyható.
/robots933456.txt egy hamis URL-cím. Az App Service azt használja annak ellenőrzésére, hogy a tároló képes-e a kérések kiszolgálására. A "404" hibaválasz azt jelzi, hogy az elérési út nem létezik, és azt jelzi az App Service-nek, hogy a tároló kifogástalan állapotban van, és készen áll a kérésekre való válaszadásra.