Как контролировать, где работает 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
Ответы
Ответ 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
Приятно и легко и ничего больше не делать - и суперэффективно одновременно с тем, что в обслуживании запросов не задействованы дополнительные процессы.