Debian 9 - rc.local устарел, как запускать python при запуске

Я немного растерялся, у меня есть Debian 9 сервер и PythonFlask скрипт, который я пытаюсь запустить при запуске.

В прошлом я использовал rc.local запускать вещи при запуске, но после чтения кажется, что это устарело.

Может кто-нибудь сказать мне, что его замена, какой метод я лучше всего использую сейчас?

3 ответа

Решение

Debian 9 (как и многие другие современные дистрибутивы Linux) использует systemd для запуска и управления вашей системой и службами.

Вы столкнетесь с небольшой кривой обучения по сравнению с добавлением строк в rc.local но написание файлов модулей (systemd jargon для того, что фактически эквивалентно сценарию запуска и остановки для службы) будет полезным навыком для изучения.

Специальная документация 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
    

Вы запускаете его, используя системный модуль, как и любой другой сервис.

В Интернете есть множество учебных пособий о том, как это настроить. Или вы можете просто начать со скелета, например:

[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

Единого ответа нет, но вы можете использовать что-то вроде http://supervisord.org/:

Supervisor - это система клиент-сервер, которая позволяет пользователям отслеживать и контролировать ряд процессов в UNIX-подобных операционных системах.

Другие вопросы по тегам