Кто-нибудь успешно удалил приложение node (express) с Amazon OpsWorks? - программирование
Подтвердить что ты не робот

Кто-нибудь успешно удалил приложение node (express) с Amazon OpsWorks?

Как явствует из названия, я занимался развертыванием приложений с новой системой управления OpasWorks Amazons, однако мне не удалось выяснить, как запустить сервер node для запуска в экземпляре. Из портов, к которым у приложений есть доступ, я также предполагаю, что мне нужно слушать порт 80, однако я чувствую, что проблема в том, что правильный файл не запускается.

Как и в Procfile на Heroku, существует специальный файл типа start- script, который должен быть включен для OpsWorks, чтобы запустить его правильно?

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

4b9b3361

Ответ 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. В противном случае он просто молчал.

Надеюсь, что кто-то поможет.