如何使用forever和启动脚本在ubuntu上修复“错误:MONGO_URL必须在环境中设置”?

时间:2013-08-21 13:53:17

标签: ubuntu meteor forever startupscript

我刚在EC2 ubuntu服务器上部署了一个meteor js app。我安装了forever 并将以下启动脚本添加到/etc/init/meteor.conf

start on (local-filesystems)
stop on shutdown

script
        cd /home/ubuntu
        export PORT=80 MONGO_URL=mongodb://localhost27017/parties ROOT_URL=http://ec2-54-235-1-185.compute-1.amazonaws.com
        exec forever start bundle/main.js

end script

当我使用sudo service meteor start启动我的应用时,它显示为:

meteor start/running, process 12481
ubuntu@ip-10-98-57-161:~$ 

但是当我在浏览器中输入公共DNS时,没有。

然后我输入命令forever list,它列出了三行,包含一些信息和一列日志文件。所以我然后打开vim中的最后一个日志文件来查看它的内容,我看到以下错误:

/home/ubuntu/bundle/programs/server/boot.js:184
}).run();
   ^
Error: MONGO_URL must be set in environment
    at Object.<anonymous> (packages/mongo-livedata/remote_collection_driver.js:32)
    at Object._.once [as defaultRemoteCollectionDriver] (packages/underscore/underscore.js:704)
    at new Meteor.Collection (packages/mongo-livedata/collection.js:66)
    at packages/service-configuration/service_configuration_common.js:8
    at packages/service-configuration.js:43:4
    at packages/service-configuration.js:52:3
    at mains (/home/ubuntu/bundle/programs/server/boot.js:153:10)
    at Array.forEach (native)
    at Function._.each._.forEach (/home/ubuntu/bundle/programs/server/node_modules/underscore/underscore.js:79:11)
    at /home/ubuntu/bundle/programs/server/boot.js:80:5
error: Forever detected script exited with code: 1

我尝试了十种不同的启动应用程序的方法,每次我都会遇到同样的错误。 值得一提的是:当我使用以下方式运行我的应用程序时:

sudo PORT=80 MONGO_URL=mongodb://localhost:27017/parties ROOT_URL=http://ec2-54-235-1-185.compute-1.amazonaws.com node bundle/main.js

它启动了,我可以通过我的公共DNS访问它,但当然,只要我关闭终端,应用就会死掉。

有人知道如何解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

它看起来好像你忘记了你的mongourl中的冒号':'

export PORT=80 MONGO_URL=mongodb://localhost:27017/parties ROOT_URL=http://ec2-54-235-1-185.compute-1.amazonaws.com
你尝试过吗?

答案 1 :(得分:-1)

尝试将其永久直接传递而不使用导出:

exec PORT=80 MONGO_URL=mongodb://localhost27017/parties ROOT_URL=http://ec2-54-235-1-185.compute-1.amazonaws.com forever start bundle/main.js

它可能与权限有关,当使用启动脚本时,用户可能会拥有自己的变量范围。