【问题标题】:Nodejs/Strongloop: working upstart config exampleNodejs/Strongloop:工作新贵配置示例
【发布时间】:2014-12-24 11:42:06
【问题描述】:

将 strongloop 更新到 v2.10 slc 后停止写入日志。 我也无法让应用程序以production 模式启动。

/etc/init/app.conf

#!upstart
description "StrongLoop app"

start on startup
stop on shutdown

env NODE_ENV=production

script
        exec slc run /home/ubuntu/app/ \
                -l /home/ubuntu/app/app.log \
                -p /var/run/app.pid
end script

任何人都可以检查我的新贵配置或提供另一个工作副本吗?

【问题讨论】:

  • 在您升级到 strongloop@2.10.0之前,这个 Upstart 工作是否有效?
  • 是的,它在以前的 2.9.x 版本中运行良好。我会尝试恢复 strongloop 并再次测试。

标签: node.js ubuntu upstart strongloop


【解决方案1】:

您是否正在将 pid 写入文件,以便可以使用它将SIGUSR2 发送到进程以触发从 logrotate 重新打开日志?

假设您使用的是 Upstart 1.4+(Ubuntu 12.04 或更新版本),那么您最好让 slc run 登录到其标准输出并让 Upstart 负责将其写入文件,以便为您完成日志轮换:

#!upstart
description "StrongLoop app"

start on startup
stop on shutdown

# assuming this is /etc/init/app.conf,
# stdout+stderr logged to: /var/log/upstart/app.log
console log

env NODE_ENV=production

exec /usr/local/bin/slc run --cluster=CPUs /home/ubuntu/app

“免费”的日志轮换很好,但这种方法的最大好处是 Upstart 可以记录 slc run 报告的错误,即使它们在尝试设置其内部日志记录时发生崩溃,这使得调试很多更容易。

除了它对您的实际应用程序的意义之外,NODE_ENVslc run 的唯一影响是将集群工作的默认数量设置为检测到的 CPU 内核数,字面意思是 --cluster=CPUs

我发现的另一个问题是节点/npm 路径前缀不在 Upstart 使用的 $PATH 中,因此我通常将可执行文件的完整路径放在我的 Upstart 作业中。

服务安装程序

你也可以尝试使用strong-service-install,这是slc pm-install用来安装strong-pm as an OS service的模块:

$ npm install -g strong-service-install
$ sudo sl-svc-install --name app --user ubuntu --cwd /home/ubuntu/app -- slc run --cluster=CPUs .

注意-- 周围slc run 之前的空格

【讨论】:

  • 感谢您的回复!是的,我正在将 pid 写入 /var/run/app.pid。几天后我会检查 upstart 日志和 strong-service-install。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-27
  • 1970-01-01
  • 1970-01-01
  • 2013-11-30
  • 2014-06-12
  • 1970-01-01
相关资源
最近更新 更多