我有一个非常简单的测试节点服务器
# server.js
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(8080, '127.0.0.1');
console.log('Server running at http://127.0.0.1:8080/');
我有一个简单的 upstart 脚本,/etc/init/myapp.conf
description "myapp"
author "me"
start on started
stop on shutdown
exec /usr/bin/node /path/to/server.js
开始工作很好
sudo start myapp
myapp start/running, process 2518
但停止只会重启应用程序
sudo stop myapp
myapp start/running, process 2527
我没得到什么?
PS:我使用的是 ubuntu 14.04
答案1
我发现您的 Upstart 作业的一个问题是start on
节。您的作业启动的事件是事件started
。通过阅读 upstart-events 的手册页,可以发现在以下情况下会发出启动事件:任何作业由 Upstart 启动。这不是您想要的。相反,请使用诸如 之类的事件runlevel [2345]
,以便您的应用程序在所有多用户运行级别上启动。这应该可以解决您的问题。