我正在阅读有关部署到EC2的内容.最后一步看起来像这样,我把bundle文件夹放在我的meteor项目之外
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访问该站点,但它不起作用.所以我不知道接下来该做什么.
您需要启动自己的mongodb实例.使用该meteor
命令运行项目时所看到的只是meteor为开发提供的就地mongo db.在生产中你只需要启动自己的mongodb(通过你的linux包管理器安装它),然后设置你MONGO_URL
的那个 - 你可以使用本地IP.
例如,在AWS上的Ubuntu上,如果您使用mongodb安装apt-get install mongodb
,它将在此URL上运行:MONGO_URL='mongodb://localhost:27017/yourdbname'
.如果您使用单独的AWS实例来运行db,那么您只需替换localhost
该实例的IP.
顺便说一句:你应该避免以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