Мне было так удобно использовать foreman с приложениями Rails на Heroku и в других местах, которые я ищу клоны при работе с другими языками; Я использую honcho для Python/Django, и я использовал node-foreman для разработки проекта Express. Я готов переместить этот экспресс-проект в производство (Ubuntu 14.04 на Amazon EC2), и у меня проблемы.Использование узлового мастера под супервизором в производстве
я могу запустить и запустить проект, используя nf start
просто отлично, но node-foreman docs сказать не демон такой вещи, а то, что я должен сгенерировать файл с supervisord
конфом, используя что-то вроде
nf export --type supervisord --user ubuntu
Это работает, и результаты выглядят правильно, но приложение Express не запускается, так как кажется невозможным получить значения из значений среды. supervisord
успешно работает на сервере API RESTful на основе Django на том же хосте. Чувствительные значения заменены 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="[email protected]",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
или моим экспресс-заявлением или с node-foreman
, и я был бы признателен за любые идеи и рекомендации. Я подозреваю, что это что-то простое и очевидное, но это первый раз, когда я пытался собрать все эти части вместе в производственной среде.