Кто-нибудь успешно удалил приложение node (express) с Amazon OpsWorks?
Как явствует из названия, я занимался развертыванием приложений с новой системой управления OpasWorks Amazons, однако мне не удалось выяснить, как запустить сервер node для запуска в экземпляре. Из портов, к которым у приложений есть доступ, я также предполагаю, что мне нужно слушать порт 80, однако я чувствую, что проблема в том, что правильный файл не запускается.
Как и в Procfile на Heroku, существует специальный файл типа start- script, который должен быть включен для OpsWorks, чтобы запустить его правильно?
Заметьте, что у меня еще нет опыта работы с шеф-поваром, поэтому я надеюсь, что он будет работать с настройками по умолчанию, т.е. не выписывать рецепт повара для этого.
Ответы
Ответ 1
Время, которое я потратил на это, смущает, но я все равно поделюсь в надежде спасти других людей часами своей жизни, которые в противном случае были бы украдены Amazon.
- Чтобы ответить на ваш вопрос, да, я получил мое приложение node/express.
- Если вы использовали какой-либо метод
process.env
для выбора номера вашего порта, измените порт прослушивания на 80 (или, если необходимо, на 443).
- Самое главное, Amazon не заботится о вашем файле
main
. Переименуйте его server.js
и введите его в корневой каталог вашего приложения. Это файл, который пытается выполнить monit.
Надеюсь, это поможет. Если это не так, или если все это очевидно, я извиняюсь за свою глупость и виню недостаток сна.:)
Ответ 2
Отличный ответ от ZachRabbit. Я просто хотел бы добавить, что OpsWorks теперь поддерживает настройку переменных среды (то есть process.env.PORT) для развернутого процесса приложения.
Когда вы добавляете приложение (или редактируете), вы можете перейти к настройке переменной среды с ключом PORT и значением 80, если в вашем сервере server.js используется следующее:
!/usr/bin/env node
var debug = require('debug')('my-app');
var app = require('app');
app.set('port', process.env.PORT || 3000);
var server = app.listen(app.get('port'), function() {
debug('Express server listening on port ' + server.address().port);
});
Более подробную информацию о настройке переменных окружения можно найти здесь:
http://docs.aws.amazon.com/opsworks/latest/userguide/apps-environment-vars.html
Обеспечение того, чтобы имя файла было server.js и настройка переменной окружения PORT на 80 работала как чемпион для меня.
Ответ 3
Просто скопируйте страницу AWS OpsWorks для настройки приложения node.js:
"По умолчанию мы ожидаем, что ваше приложение node.js будет прослушивать порт 80. Кроме того, файл, который мы передаем на node, должен быть назван" server.js "и должен быть расположен в корневой директории приложения."
С уважением.
Ответ 4
Я играл вокруг этого немного, и, надеюсь, мой путь к успеху поможет кому-то. Node.js обычно требует повышенных привилегий для запуска на порту 80, поэтому я обнаружил, что при наименовании примерного приложения app.js все в порядке, вам нужно изменить строку 2 стандартного повара OpsWorks Node.js, чтобы использовать sudo
Ответ 5
Может быть, немного не по теме, но я потратил пару часов на это, поэтому решил, что стоит поделиться:
При настройке сервера Hapi.js на OpsWorks мне пришлось убедиться, что я не использовал имя хоста localhost
, но вместо этого установите его на 0.0.0.0
. В противном случае он просто молчал.
Надеюсь, что кто-то поможет.