【问题标题】:How set upstart correctly for a node.js app如何为 node.js 应用程序正确设置新贵
【发布时间】:2015-04-08 01:51:51
【问题描述】:

我正在使用带有 ubuntu 的亚马逊 ec2 实例来托管我的 node.js 应用程序,我已经进行了所有配置,并且在我输入时运行良好:

nodemon ./bin/www

./bin/www 是创建服务器的文件。

现在,我正在尝试设置暴发户,我按照教程进行操作,这是我的配置文件:

路径:

/etc/init/photogrid.conf:

内部:

description "Photogrid"

start on started mountall
stop on shutdown

respawn
respawn limit 99 5

env NODE_ENV=production

exec node /home/ubuntu/photogrid/bin/www >> /var/log/photogrid.log 2>&1

但是当我尝试访问该站点时,显示:

Cannot GET /

我跟着一个教程,和我的配置文件唯一不同的是这部分:

原文:

exec node /home/ubuntu/photogrid/app.js >> /var/log/photogrid.log 2>&1

我的:

exec node /home/ubuntu/photogrid/bin/www >> /var/log/photogrid.log 2>&1

从暴发户开始:

从 nodemon bin/www 开始:

在我的日志中,当我尝试访问主页“/”时看到以下内容:

^[[0mGET / ^[[33m404 ^[[0m12.036 ms - 13^[[0m

【问题讨论】:

  • Upstart 正在正确启动进程,并且 express 显然正在运行并提供 HTTP,因为这是默认的 express 404 Not Found 消息。您是否真的定义了您的路线,包括像app.get("/", ... 这样的主页?
  • 当然@PeterLyons,如果我从 nodemon 开始 ./bin/www 可以正常工作,页面将正常呈现。
  • 查看我的更新问题@PeterLyons
  • 您需要发布您的快递代码。那里有些奇怪,但我不会为您远程盲调试它。您的“找不到模块 /chdir”听起来像是您的应用中有一些奇怪的 javascript。

标签: linux node.js ubuntu amazon-ec2 upstart


【解决方案1】:

您似乎需要在启动 exec 之前切换到正确的目录。也许这会解决你的错误:

description "Photogrid"

start on filesystem and started networking
stop on shutdown

respawn
respawn limit 99 5

env NODE_ENV=production

script
  export HOME="/home/ubuntu/photogrid"
  cd $HOME
  exec node /home/ubuntu/photogrid/bin/www >> /var/log/photogrid.log 2>&1
end script

【讨论】:

    【解决方案2】:

    尝试将chdir /home/ubuntu/photogrid 添加到您的新贵配置中。此外,在终端中以交互方式尝试:NODE_ENV=production nodemon ./bin/www。也许您在不应该使用app.configure 的地方使用?

    【讨论】:

    • NODE_ENV=production nodemon ./bin/www - 正常工作
    • 如果我添加这个 chdir,新贵会崩溃@PeterLyons
    • 我在我的日志中看到了这个.. ^[[0mGET /^[[33m404 ^[[0m11.385 ms - 27^[[0m
    • and.. 找不到模块'/chdir'
    猜你喜欢
    • 2012-12-08
    • 2010-09-22
    • 1970-01-01
    • 1970-01-01
    • 2022-08-10
    • 2015-01-04
    • 1970-01-01
    • 1970-01-01
    • 2014-12-21
    相关资源
    最近更新 更多