我们在Ubuntu (13.10)服务器上有一系列node.js脚本,我们希望尽可能地保持和运行这些脚本,并在服务器重新启动时自动重新启动。我们尝试了几种不同的技术,但还没有找到一个可行的解决方案。
安装程序:没有一个脚本运行在端口80上,而是运行在8000以上的端口上。
Node.js文件目前运行在/usr/lib/sites/path/Node中。
我们在特权良好的用户(而不是根用户)的上下文中运行时,只需在包含脚本的文件夹的上下文中运行以下内容,就可以使用Forever单独设置和运行它们:
forever start server_process.js我们希望在服务器启动时运行这些脚本,并在以后(如果需要的话)能够重新启动它们。
暴发户听起来应该是解决方案,但我们还没有设法让它发挥作用。下面的脚本开始,然后停止,没有说明原因..。
description "Our app"
version "1.0"
author "Nautilytics"
start on startup
stop on shutdown
expect fork
env FOREVER_PATH=/usr/bin/forever
env APPLICATION_DIRECTORY=/usr/lib/sites/path/Node
env APPLICATION_START=ourapp.js
env LOG_PATH=/var/log/ourapp.log
chdir /usr/lib/sites/path/Node
script
exec $FOREVER_PATH start --sourceDir $APPLICATION_DIRECTORY -f -v $APPLICATION_START >> $LOG_PATH 2&>1
end script通过直截了当的尝试和错误,我们已经有几次能够获得错误,这些错误表明无法找到其他文件(ourapp.js所要求的),就好像chdir没有工作或传递到永久启动。
发布于 2014-04-08 18:30:10
在互联网上寻找解决方案之后,我们决定坚持使用nodejs,而不是永远使用它来完成这项任务。这要容易得多,随着重生,它几乎完成了我们永远需要为我们做的一切。
start on runlevel [2345]
stop on shutdown
respawn
script
exec sudo nodejs /usr/lib/sites/path/Node/ourapp.js 2>&1 >> /var/log/ourapp.log
end script发布于 2014-04-08 21:14:11
可能会有一些更安全的upstart配置脚本(硬化-nodejs.conf):
description "Managing and monitoring nodejs application"
# start when filesystem is mounted networking is up
start on (filesystem and net-device-up IFACE!=lo)
# stop on shutting down the system
stop on runlevel [016]
# application environment
# staging and development instances should use hardened-nodejs.override to define environment
env NODE_ENV=production
# respawn the job up to 10 times within a 5 second period.
# If the job exceeds these values, it will be stopped and marked as failed.
respawn
respawn limit 10 5
# ssl-cert group can read certificates
setuid www-data
setgid ssl-cert
exec /usr/bin/nodejs /usr/lib/sites/path/Node/ourapp.js 2>&1 >> /var/log/ourapp.log在低端口上运行nodejs应用程序的解决方案之一可能是使用功能工具。
发布于 2014-04-07 21:17:49
你查过process.cwd()了吗?可能是您的进程正在其他地方运行。
https://stackoverflow.com/questions/22923077
复制相似问题