Как я могу оставить сервер 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
В приведенной выше ссылке вы можете найти различные задачи для выполнения, если вам нужно.
Надеюсь, что это поможет новичкам, как я.
Ответ 3
Там лучший способ. Используйте forever.js.
Смотрите здесь: https://github.com/foreverjs/forever
Это хороший учебник по использованию chkconfig с вечно на CENTOS.
http://aronduby.com/starting-node-forever-scripts-at-boot-w-centos/
Ответ 4
Или используйте tmux
Просто введите экран запуска tmux node server
Ctrl + b Хит D, и все готово.