Да, вам нужно сделать полноценный исполняемый файл веб-сервера службой. Предпочтительно использовать для службы учетную запись не root - я бы даже сказал, что это обязательно - для ограничения ущерба в случае взлома веб-сервера. Я думаю1 systemd
достаточно хорошо документирован, чтобы провести вас через все необходимые шаги.
1 Я не запускаю systemd
, если вдруг возникнет вопрос...
Создайте скрипт (например, /home/user/start_service.sh
) со следующим содержанием:
#!/bin/sh
while true; do
path/to/service/executable
done
И добавьте его в /etc/rc.local:
#!/bin/sh -e
su user -c '/home/user/start_service.sh' &
exit 0
Затем запустите скрипт вручную:
/home/user/start_service.sh
Таким образом, вы можете забыть о своем веб-приложении. Оно будет запускаться автоматически при старте системы.
Используйте такие инструменты, как systemd и upstart
для создания службы из вашего приложения.
В системах init старого образца вы можете использовать старое доброе приложение start-stop-daemon, которое позаботится о перезапуске процесса, если он умрет. Просто сделайте что-то вроде:
start-stop-daemon --start --background --exec /path/to/your/executable
Оно также позволяет установить приоритет планирования, приоритет ввода-вывода и т.д. для запущенного процесса.
В системе с поддержкой systemd вы также можете (или даже лучше) создать единицу обслуживания systemd, как вы упомянули. Он будет делать то же самое, но используя функциональность systemd вместо отдельного вызова start-stop-daemon. Подробности см., например, здесь: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/sect-Managing_Services_with_systemd-Unit_Files.html