2014-03-05 170 views
2

我在阅读有关Deploying to EC2。最后的步骤是这样的,在这里我把我的流星项目流星:部署到Amazon EC2

PORT=80 MONGO_URL=mongodb://localhost:27017/sidebar 
ROOT_URL=http://ec2-23-20-113-59.compute-1.amazonaws.com/ 
sudo node ../bundle/main.js 

,我在我的AWS控制台中显示的公共DNS更换ROOT_URL外捆文件夹。我不太确定使用什么MONGO_URL,所以我通过命令启动流星

meteor 

,看看有什么MongoDB的地址流星用途,这原来是

mongodb://127.0.0.1:3002/meteor 

但对于节点应用程序能够连接到mongodb,我必须保持流星应用程序运行。当它似乎工作,与控制台显示

listening 

我尝试使用公共DNS访问该网站,但它不起作用。所以我不知道下一步该怎么做。

+0

或者,你可能想尝试在生产中按预期运行(通过流星束)不同的方法:https://github.com/matb33/meteor-ec2-install – matb33

+0

在usi那个脚本,MONGO_URL仍然是mongodb://127.0.0.1:3002/meteor? – user2191332

+0

差不多。端口27017而不是3002. – matb33

回答

5

您需要启动您自己的mongodb实例。使用meteor命令运行项目时看到的只是流星为开发提供的就地mongo db。在生产中,您只需启动您自己的mongodb(通过您的linux软件包管理器安装它),然后将您的MONGO_URL设置为 - 您可以使用本地IP。

在AWS上的Ubuntu上,例如,如果您使用apt-get install mongodb安装了mongodb,它将在此URL上运行:MONGO_URL='mongodb://localhost:27017/yourdbname'。如果您使用单独的AWS实例运行db,那么您只需将该实例的IP替换为localhost即可。

顺便说一句:你应该避免以root身份运行任何东西,包括。你的捆绑应用程序。我假设你只是为了能够绑定到端口80而这样做。一种可能更安全的方式是允许用户在调用节点之前使用以下命令绑定到该端口:

sudo setcap 'cap_net_bind_service=+ep' /usr/bin/nodejs 

更新: 设置这些环境变量的最简单的方法是只用env

sudo env PORT=80 MONGO_URL=mongodb://localhost:27017/sidebar ROOT_URL=http://ec2-23-20-113-59.compute-1.amazonaws.com/ node ../bundle/main.js 
+0

我首先运行sudo mongod --smallfiles,然后用MONGO_URL = mongodb:// localhost:27017/meteor启动节点应用程序,但仍然得到错误:必须在环境中设置MONGO_URL – user2191332

+0

这部分很简单。查看更新。 –

+0

谢谢。现在没有错误(只是空白);但是我的浏览器说我访问ROOT_URL时无法连接到该地址。我想不出什么是缺失的。 – user2191332