簡體   English   中英

如何告訴azure運行節點server.js

[英]How to tell azure to run node server.js

我也有在Azure上也可以正常運行的angular 6應用程序,但是我需要為一些服務器變量添加一個server.js文件,我在根目錄上也添加了server.js文件

Server.js

 const express = require('express'); const bodyParser = require('body-parser'); const path = require('path'); const http = require('http'); const app = express(); var router = express.Router(); const publicIp = require('public-ip'); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false})); // Angular DIST output folder app.use(express.static(path.join(__dirname, 'dist/projectname'))); app.get('/getip', (req, res) => { var ipcheck = req.headers['x-forwarded-for'] || req.connection.remoteAddress; (async () => { console.log(await publicIp.v4()); res.json({ ip: await publicIp.v4(), ip2: req.headers['x-forwarded-for'], ip3: req.connection.remoteAddress, ip4: req.ip }); })(); }); // Send all other requests to the Angular app app.get('/*', (req, res) => { res.sendFile(path.join(__dirname, 'dist/projectname/index.html')); }); app.get('/', (req, res) => { res.sendFile(path.join(__dirname, 'dist/prjectname/index.html')); }); //Set Port const port = process.env.PORT || '3000'; app.set('port', port); const server = http.createServer(app); server.listen(port, () => console.log(`Running on localhost:${port}`)); 

然后我轉到cmd並運行node server.js,它在localhost上運行良好,但是現在我想在azure服務器上執行相同的操作,以部署它。 或如何告訴azure始終運行節點server.js

我假設您知道如何在Azure Portal或Azure CLI中創建Azure WebApp。 然后,我看到您在Visual Stodio 2017中開發了Node.js應用程序,並希望使用相同的工具將其部署到Azure,因此建議您參考NTVS Wiki頁面`` Publish to Azure Website using Web Deploy了解如何操作。

接下來,在部署之前必須首先了解以下四個注意事項。

  1. 請確認您創建的WebApp中的Node.js版本,默認版本為0.10+ 您可以通過URL https://<your webapp name>.scm.azurewebsites.net/DebugConsole和命令node -vhttps://<your webapp name>.scm.azurewebsites.net/DebugConsole應用程序的Kudo控制台以獲取它。 您可以在Azure CLI中將其設置為運行命令,例如az webapp config appsettings set --resource-group <your ResourceGroup> --name <app_name> --settings WEBSITE_NODE_DEFAULT_VERSION=10.14.1或在Azure門戶中遵循下圖。 有關Azure WebApp上的節點版本的更多詳細信息,請參閱我對SO線程azure webapp webjob節點版本的回答。

在此輸入圖像描述

  1. 在您的項目中,必須有一個Web.config文件,以便與Azure WebApp上的IIS進行對話以了解如何啟動Node應用程序。 Web.config文件的內容與Kudu Wiki頁面中的示例相同。 Using a custom web.config for Node apps可以直接復制它,因為bootstrap js文件名也為server.js

  2. Azure WebApp上的偵聽端口是由環境隨機分配的,您可以從環境變量HTTP_PLATFORM_PORT獲取它,該變量也將由process.env.PORT 因此,您將不會在代碼中為port做任何事情。

  3. 您的Node應用程序將部署到Azure WebApp的home/site/wwwroot路徑中,也可以通過Kudu控制台進行訪問。 因此,無需任何工具,您還可以使用Kudu控制台來部署您的應用程序,只需將wwwroot的文件結構設置為與項目相同的文件結構即可,其中包括所有js文件和目錄, node_modulesweb.config

只需構建您的項目ng build --prod,然后在vs 17中的dist文件夾中打開項目文件夾,然后添加

的package.json

index.js

web.config中

您可以在此處獲取這3個文件的形式並且可以根據需要編輯index.js,我只需要添加此文件

app.get('/getip', (req, res) => {
  res.json({
      ip: req.headers['x-forwarded-for'].split(":")[0]
    });
});

app.get('*', (req, res) => {
   res.sendFile(path.join(__dirname, 'index.html'));
});

這通過nodejs運行我的應用程序。

當我打電話給getip時,這給了我服務器ip,否則返回處理所有路由的angular index.html。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM