Code Deploy ApplicationStart 卡在 pending using node 上
Code Deploy ApplicationStart gets stuck on pending using node
您好,我是 Code Deploy 的新手。我正在尝试启动节点应用程序。我的根目录中有 setup.sh、start.sh 和 app.js。
这是我的 appspec.yml 文件
version: 0.0
os: linux
files:
- source: /
destination: /
hooks:
Install:
- location: setup.sh
timeout: 3600
ApplicationStart:
- location: start.sh
timeout: 3600
setup.sh
yum -y install nodejs npm --enablerepo=epel
npm install
start.sh
node /app.js
app.js(只是一个基本的虚拟服务器)
var express = require("express");
var app = express();
app.get("/",function(req,res) {
res.send("Hello world")
})
var server = app.listen(8080,function() {
console.log("Listening at " + server.address().address + ": " + server.address().port);
});
安装步骤成功完成,但 Code Deploy 在执行 ApplicationStart 步骤时卡在挂起状态。
我很确定这是因为 app.js 程序连续运行,那么 CodeDeploy 应该如何知道它正在运行并继续运行?
命令node /app.js
不是在后台而是在前台运行,因此start.sh脚本永远不会完成。
有关 运行 后台节点 Node.js as a background service
的更多信息,请参阅此主题
CodeDeploy 代理正在等待它启动的脚本到 return 退出代码并关闭 stdout
和 stderr
。要在后台启动进程并将其与主机代理分离,以便它可以 运行 作为守护进程,请尝试:
node /app.js > /dev/null 2> /dev/null < /dev/null &
注意:您需要修改您的程序以写入日志文件而不是控制台,因为守护进程通常没有可写入的控制台(就像在这个版本中一样)。
您好,我是 Code Deploy 的新手。我正在尝试启动节点应用程序。我的根目录中有 setup.sh、start.sh 和 app.js。
这是我的 appspec.yml 文件
version: 0.0
os: linux
files:
- source: /
destination: /
hooks:
Install:
- location: setup.sh
timeout: 3600
ApplicationStart:
- location: start.sh
timeout: 3600
setup.sh
yum -y install nodejs npm --enablerepo=epel
npm install
start.sh
node /app.js
app.js(只是一个基本的虚拟服务器)
var express = require("express");
var app = express();
app.get("/",function(req,res) {
res.send("Hello world")
})
var server = app.listen(8080,function() {
console.log("Listening at " + server.address().address + ": " + server.address().port);
});
安装步骤成功完成,但 Code Deploy 在执行 ApplicationStart 步骤时卡在挂起状态。
我很确定这是因为 app.js 程序连续运行,那么 CodeDeploy 应该如何知道它正在运行并继续运行?
命令node /app.js
不是在后台而是在前台运行,因此start.sh脚本永远不会完成。
有关 运行 后台节点 Node.js as a background service
的更多信息,请参阅此主题CodeDeploy 代理正在等待它启动的脚本到 return 退出代码并关闭 stdout
和 stderr
。要在后台启动进程并将其与主机代理分离,以便它可以 运行 作为守护进程,请尝试:
node /app.js > /dev/null 2> /dev/null < /dev/null &
注意:您需要修改您的程序以写入日志文件而不是控制台,因为守护进程通常没有可写入的控制台(就像在这个版本中一样)。