Как я могу оставить сервер Node.js на EC2 навсегда?

Как вы можете сказать по моему вопросу, я новичок в этом...

Я построил свой первый веб-сайт, я настроил свой первый сервер Node.js для его обслуживания, а затем нажал все на EC2.

Я тестировал все на своем IP-адресе EC2, и все, кажется, работает.

До сих пор я тестировал свое приложение локально, поэтому имеет смысл, что всякий раз, когда я закрываю терминал, app.js перестает работать, поэтому на локальном хосте ничего не будет.

Теперь, когда мой сервер находится на EC2, происходит то же самое ( "очевидно" можно сказать...) всякий раз, когда я закрываю терминал.

Итак, мой вопрос заключается в том, как сохранить мой сервер Node.js на EC2, например, навсегда... так что мой сайт остается в живых.. навсегда:)

Я прочитал что-то о модуле node, который называется "forever", но мне интересно (быть новым и все..), почему эта функциональность "навсегда" не используется по умолчанию для параметра Node.js-EC2 система?

Я имею в виду, исправьте меня, если я ошибаюсь, но не все ли нужно настраивать веб-сервер и настаивать на нем, чтобы он оставался жить вечно? Разве это не то, что серверы должны делать в любом случае (бесконечное прослушивание запросов)? И если это так, зачем нам нужны дополнительные модули/настройки для этого?

Спасибо за вашу помощь. Как вы можете сказать, я не только ищу решение, но и объяснение, потому что я действительно запутался..:-)

РЕДАКТИРОВАТЬ (несколько деталей, которые могут вам понадобиться). После установки моего приложения в EC2 это шаги, которые я выполняю на терминале (кстати, приложение работает на Amazon Linux):

  • Я печатаю ssh -i xxxxxxxxxxx.pem [email protected] на Терминал

  • После входа в систему Amazon я перейду в соответствующую папку и запустил node app.js

  • В машине есть 3 папки: node, node_modules и *name of my app*

  • app.js находится в *name of my app*

  • После этого сайт переходит на мой IP-адрес EC2

  • Как только я закрою терминал, все выключено

Ответ 1

Перед вызовом Node.js запустите команду:

screen

Это создаст постоянную среду, которая позволит вашему процессу продолжать работу после отключения.

При повторном подключении вы можете использовать эту команду для повторного подключения к этой среде:

screen -r

Здесь случайная ссылка, чтобы узнать больше о экране:

http://www.rackaid.com/blog/linux-screen-tutorial-and-how-to/

Однако это не поможет вам, если ваш экземпляр EC2 перезагрузится. Существует много разных способов сделать это. Добавление вашей команды запуска в /etc/rc.local является одним из способов. Здесь ссылка на руководство Amazon, которое включает добавление чего-либо к /etc/rc.local.

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/building-shared-amis.html

Надеюсь, что это поможет,

Джеймс

Ответ 2

Я работал с действительным ответом на некоторое время, но в некоторых случаях экран просто заканчивается без причины, и экран не имеет балансировщика и других функций, которые в производственной среде вам нужно заботиться. В настоящее время я использую компонент npm для выполнения этой работы.

https://www.npmjs.com/package/pm2

Это так просто использовать.

$ npm install pm2 -g

тогда просто запустите свое приложение с pm2, как это.

$ pm2 start app.js

В приведенной выше ссылке вы можете найти различные задачи для выполнения, если вам нужно.

Надеюсь, что это поможет новичкам, как я.

Ответ 4

Или используйте tmux Просто введите экран запуска tmux node server Ctrl + b Хит D, и все готово.