首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >永远运行Upstart

永远运行Upstart
EN

Stack Overflow用户
提问于 2014-04-07 21:04:04
回答 3查看 2.2K关注 0票数 3

我们在Ubuntu (13.10)服务器上有一系列node.js脚本,我们希望尽可能地保持和运行这些脚本,并在服务器重新启动时自动重新启动。我们尝试了几种不同的技术,但还没有找到一个可行的解决方案。

安装程序:没有一个脚本运行在端口80上,而是运行在8000以上的端口上。

Node.js文件目前运行在/usr/lib/sites/path/Node中。

我们在特权良好的用户(而不是根用户)的上下文中运行时,只需在包含脚本的文件夹的上下文中运行以下内容,就可以使用Forever单独设置和运行它们:

代码语言:javascript
复制
forever start server_process.js

我们希望在服务器启动时运行这些脚本,并在以后(如果需要的话)能够重新启动它们。

暴发户听起来应该是解决方案,但我们还没有设法让它发挥作用。下面的脚本开始,然后停止,没有说明原因..。

代码语言:javascript
复制
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没有工作或传递到永久启动。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-04-08 18:30:10

在互联网上寻找解决方案之后,我们决定坚持使用nodejs,而不是永远使用它来完成这项任务。这要容易得多,随着重生,它几乎完成了我们永远需要为我们做的一切。

代码语言:javascript
复制
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
票数 4
EN

Stack Overflow用户

发布于 2014-04-08 21:14:11

可能会有一些更安全的upstart配置脚本(硬化-nodejs.conf):

代码语言:javascript
复制
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应用程序的解决方案之一可能是使用功能工具

如果通过SSL服务,则用户或组必须具有对证书的读取访问权限。检查ssl-cert包这个答案中的基本概念。

票数 1
EN

Stack Overflow用户

发布于 2014-04-07 21:17:49

你查过process.cwd()了吗?可能是您的进程正在其他地方运行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22923077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档