#node.js #nginx #forever
#node.js #nginx #навсегда
Вопрос:
Я работаю с React, и мне нужно, чтобы моя веб-страница была активна после перезагрузки. Поэтому мне нужно навсегда после crontab.
Что я пробовал.
crontab -e
@reboot ~/reboot.sh
@reboot sudo service nginx restart
#!/bin/bash
cd ~/lacirolnikdev amp;amp; sudo ~/.nvm/versions/node/v14.13.1/bin/forever start -c "/.nvm/versions/node/v14.13.1/bin/npm start" .
cd ~/coinwork amp;amp; sudo ~/.nvm/versions/node/v14.13.1/bin/forever start -c "/.nvm/versions/node/v14.13.1/bin/npm start" .
Я пробовал абсолютные пути, sudo и переход к каталогам.
Команды отлично работают, кроме crontab.
Спасибо, Лачи
Комментарии:
1. посмотрите на pm2, даже они предлагают это. тогда это так же просто, как запустить
pm2 startup
один раз. кстати, вы не должны запускать свое приложение от имени root
Ответ №1:
Лучшим способом запуска процессов после загрузки был бы systemd
модульный файл, де-факто стандартный демон инициализации в большинстве дистрибутивов. systemd
заботится о запуске вашего приложения, способен отслеживать и перезапускать его при сбоях.
Взгляните на документацию для файлов модулей здесь: https://www.freedesktop.org/software/systemd/man/systemd.unit.html
Это пример для nginx
:
/lib/systemd/system/nginx.service
[Unit]
Description=A high performance web server and a reverse proxy server
Documentation=man:nginx(8)
After=network.target
[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t -q -g 'daemon on; master_process on;'
ExecStart=/usr/sbin/nginx -g 'daemon on; master_process on;'
ExecReload=/usr/sbin/nginx -g 'daemon on; master_process on;' -s reload
ExecStop=-/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid
TimeoutStopSec=5
KillMode=mixed
[Install]
WantedBy=multi-user.target
Комментарии:
1. У меня нет start-stop-daemon в дистрибутиве AWS, который в данном случае является ключом к ExecStop.