Подтвердить что ты не робот

Как контролировать, где работает Meteor

Я устанавливаю Meteor (framework) на экземпляр AWS EC2 (micro) и следую инструкциям, и после создания тестового проекта я запустил meteor в этом каталоге, давая мне ожидаемый

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

Running on: http://localhost:3000/

Но я не могу перейти на свой сервер localhost в своем браузере, чтобы увидеть проект примера hello world. Есть ли способ, которым я могу заставить метеорит работать над чем-то вроде:

http://mydomain.com/meteortest/

или

http://mydomain.com/meteortest:3000
4b9b3361

Ответ 1

То, как Meteor устанавливает URL ROOT, используется переменная среды ROOT_URL:

http://docs.meteor.com/#meteor_absoluteurl

Итак, вы можете запустить свой экземпляр Meteor так: ROOT_URL = "http://mydomain.com/" meteor --port 80

Однако, если вы хотите, чтобы экземпляр метеорита служил из папки (например, http://mydomain.com/meteortest), вам нужно будет использовать nginx для пересылки портов (см. Tyr пример), но замените строку:

location / {

с:

location /meteortest {

и соответствующим образом измените ROOT_URL. Если вы по-прежнему не можете получить доступ к своему домену извне, возможно, вы не настроили свои группы безопасности для EC2. Вам нужно открыть порт 80. Дополнительная информация о том, как это сделать, может быть здесь: http://docs.amazonwebservices.com/AWSEC2/latest/UserGuide/using-network-security.html

Ответ 2

Вы можете настроить 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;
  }
}

Подробнее см. http://wiki.nginx.org/HttpProxyModule.

Однако запуск метеора на порте 3000 является средой разработки. Если вы хотите использовать его в производстве, запустите " пакет метеоров", а затем следуйте README внутри созданного tarball.

Ответ 3

Я думаю, проблема в том, что порт 3000, вероятно, заблокирован брандмауэром Amazon. Вы можете посмотреть, как это можно открыть, попробуйте решение Tyr или попробуйте только запустить метеорит с помощью

meteor --port 80

Для этого могут потребоваться права root (т.е. sudo).

Ответ 4

Запуск непосредственно на порт 80 потребует привилегий root, которые вы действительно не хотите, чтобы ваш веб-сервер выполнялся, поскольку - запуск его с правами root и дезакалирование для обычного пользователя возможен, но не совсем идеальный, как вы может показаться, что ошибка программирования в течение некоторого времени забывает о дезакализации привилегий, и вы не увидите никаких ошибок.

Во многих случаях я действительно не хочу/не должен запускать балансировщик нагрузки, чтобы использовать несколько ячеек, особенно если я запускаю одномерные типы экземпляров типа t1 или t2 AWS, которые я просто масштабирую, когда мне это нужно - следовательно, лучший совет, который у меня есть видел, - это просто использовать возможности ядер ядра Linux для перенаправления портов, сопоставляя порт 80 с портом 3000, как это

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

Приятно и легко и ничего больше не делать - и суперэффективно одновременно с тем, что в обслуживании запросов не задействованы дополнительные процессы.