正在 OpsWorks 上启动 Node.js 个应用程序

Launching Node.js app on OpsWorks

我在获取 OpsWorks 自定义配方以启动我的节点应用程序时遇到问题。我刚刚开始学习 Chef 的基础知识,所以我可能遗漏了一些相当明显的东西。

为了让我开始,我分叉了一份 AWS nodejs cookbook and made very minor changes. I was also sure to copy the node deploy script here

我的层现在已完全配置,我可以通过 SSH 手动触发节点,但似乎在部署时它不是由 Ruby 脚本触发的。

我假设启动程序行(这是食谱中唯一可以看到正在启动节点的地方)没有得到 运行:

check host node_web_app_<%= @application_name %> with address 127.0.0.1
  start program = "/bin/bash -c 'cd <%= @deploy[:deploy_to] %>/current; source <%= @deploy[:deploy_to] %>/shared/app.env; /usr/bin/env PORT=<%= @deploy[:nodejs][:port] %> NODE_PATH=<%= @deploy[:deploy_to] %>/current/node_modules:<%= @deploy[:deploy_to] %>/current /usr/local/bin/node <%= @monitored_script %>' --NODE_ENV=prod"
  stop program = "/usr/bin/pkill -f 'node <%= @monitored_script %>'"
  <% if @deploy[:ssl_support] -%>
  if failed port <%= @deploy[:nodejs][:port] %> type TCPSSL protocol HTTP
  <% else -%>
  if failed port <%= @deploy[:nodejs][:port] %> protocol HTTP
  <% end -%>
    request /
    with timeout 10 seconds
    then restart

所以我真的不知道为什么它不这样做。

这本部署指南似乎还没有完全完成。如果有人可以推荐更好的食谱,我会考虑更改。

谢谢。

使用AWS opsworks nodejs 层,您应该可以在应用程序注册期间设置环境变量。您应该看到这样的部分:

在应用设置下:

您可以在其中设置要包含在部署中的所有变量。