Amazon ec2 如何控制流星在哪里运行

Amazon ec2 如何控制流星在哪里运行,amazon-ec2,localhost,meteor,Amazon Ec2,Localhost,Meteor,我正在我的AWS EC2(micro)实例上安装Meteor(framework),并按照说明进行操作,在创建测试项目后,我在该目录上运行了Meteor,给出了预期的结果 [[[[[ /var/www/html/meteortest ]]]]] Running on: http://localhost:3000/ 但我无法在浏览器中导航到服务器的本地主机以查看hello world示例项目。有没有一种方法可以让meteor在以下方面发挥作用: http://mydomain.com/mete

我正在我的AWS EC2(micro)实例上安装Meteor(framework),并按照说明进行操作,在创建测试项目后,我在该目录上运行了Meteor,给出了预期的结果

[[[[[ /var/www/html/meteortest ]]]]]

Running on: http://localhost:3000/
但我无法在浏览器中导航到服务器的本地主机以查看hello world示例项目。有没有一种方法可以让meteor在以下方面发挥作用:

http://mydomain.com/meteortest/


您可以将nginx设置为将端口3000代理到您的域。比如:

server {
  listen 80;
  server_name meteortest.mydomain.com;
  access_log /var/log/nginx/meteortest.access.log;
  error_log /var/log/nginx/tmeteortest.error.log;
  location / {
    proxy_pass http://localhost:3000;
    include /etc/nginx/proxy_params;
  }
}
有关更多信息,请参阅


然而,在端口3000上运行meteor是一个开发环境。如果您想在生产中使用它,请运行“meteor bundle”,然后在生成的tarball中按照自述进行操作。

我认为问题在于,端口3000可能被亚马逊的防火墙阻止。你可以看看打开它,试试Tyr的解决方案,或者试着用它运行meteor

meteor --port 80

您可能需要根权限(即sudo)才能执行此操作。

Meteor设置根URL的方式是使用名为root\u URL的环境变量:

因此,您可以像这样运行Meteor实例:ROOT_URL=”http://mydomain.com/“流星-80号端口

但是,如果您希望从文件夹(如)提供meteor实例,则必须使用nginx转发端口(请参见Tyr的示例),但替换以下行:

location / {
与:


并适当地更改您的根URL。如果您仍然无法从外部访问您的域,则可能尚未为EC2正确设置安全组。您必须打开端口80。有关如何执行此操作的更多信息,请参见此处:

直接在端口80上运行需要root权限,而您并不希望web服务器以root身份运行--可以以root身份启动它并将其降级为普通用户,但也不太理想,您可能会发现,编程错误有时会忘记取消priv的伸缩性,因此您不会看到任何错误

在许多情况下,我真的不想/不需要运行负载平衡器来使用多核,特别是如果我在AWS单核t1或t2实例类型上运行负载平衡器,我只是根据需要进行扩展——因此我得到的最好建议是简单地使用Linux内核进行端口转发,将端口80映射到端口3000,如下所示

$ sudo iptables -A PREROUTING -t nat -i eth0 -p tcp \
                          --dport 80 -j REDIRECT --to-port 3000

很好,很简单,无需做其他事情——而且非常高效,因为服务请求时不需要额外的进程。

我刚开始使用EC2,一周前还没有做任何服务器工作。我绝对是n00b。您是否正在开发或部署此服务器?值得一提的是,此服务器安装脚本可以为您解决所有这些问题:如果您想从localhost测试任何帐户-*包(或者如果您有一个域指向您的工作环境的IP地址,如我),这将特别有用。
location /meteortest {
$ sudo iptables -A PREROUTING -t nat -i eth0 -p tcp \
                          --dport 80 -j REDIRECT --to-port 3000