Я немного потерялся, у меня есть сервер Debian
9 и Python
] Скрипт Flask
, который я пытаюсь запустить при запуске.
Раньше я использовал rc.local
для запуска при запуске, но, судя по чтению, он устарел.
Кто-нибудь может сказать мне, что это за замена, какой метод мне лучше всего использовать сейчас?
Debian 9 (как и многие другие текущие дистрибутивы Linux) использует systemd для запуска и управления вашей системой и службами.
Вы столкнетесь с некоторой кривой обучения по сравнению с добавлением строк в rc.local
, но записью файлов модулей (жаргон systemd для того, что фактически эквивалентно началу и остановите скрипт для службы) будет полезно изучить.
Специальная документация Debian по systemd находится на https://wiki.debian.org/systemd
На странице https://wiki.debian.org/systemd/Services содержит подробные пошаговые инструкции по созданию собственного (минимального) файла модуля:
Создайте файл модуля «myservice.service» в каталоге / etc / systemd / system /
# /etc/systemd/system/myservice.service
[Единица измерения]
Описание = Моя служба
После = network.target
[Обслуживание]
Тип = простой
Перезагрузка = всегда
ExecStart = / usr / local / bin / myservice
[Установить]
WantedBy = multi-user.target
Перезагрузите systemd, чтобы получить измененные / новые файлы модулей: systemctl daemon-reload
Включить и запустить новую службу
systemctl enable myservice.service
systemctl запустить myservice.service
Однозначного ответа нет, но вы можете использовать что-то вроде Supervisord :
Supervisor - это система клиент / сервер, которая позволяет пользователям контролировать и управлять рядом процессов в UNIX-подобных операционных системах.
Вы запускаете его с помощью модуля 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