【发布时间】:2015-05-27 04:29:36
【问题描述】:
我在 Heroku 和其他地方的 Rails 应用程序中使用 foreman 非常自在,以至于当我使用其他语言时我会寻找克隆;我将honcho 用于Python/Django,我一直在使用node-foreman 开发一个Express 项目。我已准备好将该 Express 项目投入生产(Amazon EC2 上的 Ubuntu 14.04),但遇到了麻烦。
我可以使用nf start 启动和运行项目,但node-foreman docs 说不要守护这样的东西,而是我应该使用类似的东西生成一个supervisord conf 文件
nf export --type supervisord --user ubuntu
这可行,结果看起来正确,但 Express 应用程序无法启动,因为它似乎无法从环境值中获取值。 supervisord 正在同一主机上成功运行基于 Django 的 RESTful API 服务器。敏感值被替换,foreman-web-1.conf 看起来像:
[program:foreman-web-1]
command=npm start
autostart=true
autorestart=true
stopsignal=QUIT
stdout_logfile=/var/log/foreman-web-1.stdout.log
stderr_logfile=/var/log/foreman-web-1.stderr.log
user=ubuntu
directory=/home/sites/site-root
environment=PORT="3000",API_HOST="api.example.com",USER="user",PASS="password",SES_USER="ses_user",SES_PASS="ses_pass",SES_SMTP_HOST="email-smtp.us-west-2.amazonaws.com",SES_SMTP_PORT="587",RECAPTCHA_SITE_KEY="site_key",RECAPTCHA_SECRET="secret",FEEDBACK="someone@example.com",PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games",PORT="3000",FOREMAN_WORKER_NAME="web.1"
但 stderr.log 包含
/home/sites/site-root/node_modules/express-recaptcha/lib/express-recaptcha.js:27
if (!this.site_key) throw new Error('site_key is required');
^
Error: site_key is required
表示看不到RECAPTCHA_ 环境变量。
我无法确定问题出在 supervisord 或我的 Express 应用程序还是 node-foreman 上,如果有任何见解或建议,我将不胜感激。我怀疑这很简单明了,但这是我第一次尝试让所有这些部分在生产环境中协同工作。
【问题讨论】:
标签: node.js express supervisord foreman