Автозапуск приложения (systemd)
Если запустить приложение просто в терминале, оно остановится после закрытия SSH-сессии или перезагрузки сервера. systemd решает эту задачу: он держит сервис запущенным, перезапускает его после падения и стартует автоматически при загрузке VDS.
Unit-файл службы
Заголовок раздела «Unit-файл службы»Создайте файл /etc/systemd/system/myapp.service:
[Unit]Description=My ApplicationAfter=network.target
[Service]Type=simpleUser=www-dataWorkingDirectory=/opt/myappExecStart=/usr/bin/node /opt/myapp/index.jsRestart=alwaysRestartSec=5Environment=NODE_ENV=production
[Install]WantedBy=multi-user.targetРазбор ключевых полей:
| Поле | Назначение |
|---|---|
ExecStart | полная команда запуска (абсолютные пути) |
WorkingDirectory | рабочая директория процесса |
User | от чьего имени запускать (не обязательно root) |
Restart=always | перезапуск при любом завершении |
RestartSec | пауза перед перезапуском, секунды |
Environment | переменные окружения |
Активация
Заголовок раздела «Активация»Перечитайте конфигурацию systemd, включите автозапуск и стартуйте службу:
systemctl daemon-reloadsystemctl enable --now myappПроверьте состояние:
systemctl status myappПросмотр логов
Заголовок раздела «Просмотр логов»Весь вывод приложения (stdout/stderr) автоматически попадает в журнал systemd:
journalctl -u myapp -fФлаг -f показывает логи в реальном времени. Последние 100 строк:
journalctl -u myapp -n 100Управление службой
Заголовок раздела «Управление службой»systemctl restart myapp # перезапуститьsystemctl stop myapp # остановитьsystemctl disable myapp # убрать из автозагрузкиЧто дальше
Заголовок раздела «Что дальше»- Перенести код на сервер — Перенос файлов на VDS
- Разместить бота как службу — Хостинг Telegram/Discord-бота
- Вопросы — поддержка PG19