Я немного потерялся, у меня есть Debian
9 сервер и Python
Flask
скрипт, который я пытаюсь запустить при запуске.
В прошлом я использовал rc.local
запускать что-то при запуске, но при чтении кажется, что он устарел.
Может ли кто-нибудь сказать мне, что это за замена, какой метод мне лучше всего использовать сейчас?
Debian 9 (как и многие другие текущие дистрибутивы Linux) использует systemd для запуска и управления вашей системой и службами.
Вы столкнетесь с некоторой кривой обучения по сравнению с добавлением строк в rc.local
но писать файлы модулей (Системный жаргон для того, что фактически является эквивалентом сценария запуска и остановки службы) будет полезным навыком для изучения.
Специальная документация Debian по systemd находится на https://wiki.debian.org/systemd
Страница https://wiki.debian.org/systemd/Services содержит подробные пошаговые инструкции по написанию собственного (минимального) файла модуля:
Создайте файл модуля "myservice.service" в каталоге /etc/systemd/system/
# /etc/systemd/system/myservice.service
[Unit]
Description=My Service
After=network.target
[Service]
Type=simple
Restart=always
ExecStart=/usr/local/bin/myservice
[Install]
WantedBy=multi-user.target
Перезагрузите systemd, чтобы получить измененные / новые файлы модулей: systemctl daemon-reload
Включите и запустите новую службу
systemctl enable myservice.service
systemctl start myservice.service
Вы запускаете его с помощью модуля systemd, как и любую другую службу.
В Интернете есть множество руководств о том, как это настроить. Или вы можете просто начать со скелета, например:
[Unit]
Description=uWSGI instance to serve my project
After=network.target
[Service]
User=you
Group=www-data
WorkingDirectory=/home/you/project
Environment="PATH=/home/you/project/venv/bin"
ExecStart=/home/you/project/venv/bin/uwsgi --ini uwsgi.ini
[Install]
WantedBy=multi-user.target
Однозначного ответа нет, но можно использовать что-то вроде Руководитель:
Supervisor - это система клиент / сервер, которая позволяет пользователям отслеживать и контролировать ряд процессов в UNIX-подобных операционных системах.