“我正在 Azure 应用服务上使用 PM2 部署 Node.js 应用程序。应用程序似乎启动成功,但端口 8080 上的 HTTP 运行状况检查失败,并且站点无法启动。”
“应用程序应响应端口 8080 上的 HTTP ping,从而允许应用服务成功启动。”
我创建了简单的 Nodejs 应用程序,并将 PM2 部署到 Azure 应用程序服务。
即使我在 server.js 和 Ecosystem.config.js 中硬编码端口值时也遇到了同样的错误。
Azure 应用服务期望应用程序侦听
PORT environment variable
指定的端口。
我定义
port
值如下
const port = process.env.PORT || 8080;
服务器.js:
const express = require('express');
const app = express();
const port = process.env.PORT || 8080;
app.get('/', (req, res) => {
res.send('Hello, World! Application is running.');
});
app.listen(port, () => {
console.log(`Server is listening on port ${port}`);
});
ecosystem.config.js:
module.exports = {
apps: [
{
name: "nodejs-app",
script: "./server.js",
env: {
PORT: 8080
},
env_production: {
NODE_ENV: "production",
PORT: process.env.PORT
}
}
]
};
成功部署应用程序后,我在 Azure Web App 中的“配置”->“启动命令”下设置了以下启动命令。
pm2 start ecosystem.config.js --no-daemon
Azure Web 应用程序输出: