Постоянное выполнение Python-скрипта на сервере Apache (инструкция)

Описание проблемы: Через консоль запускаем python-скрипт, но как только отключаемся от сервера - скрипт перестаёт работать. Пробовали запустить с помощью screen (модуль, который создаёт параллельные рабочие столы), однако в случае падения скрипта модуль не перезапускается автоматически.

Решение: Использовать модуль systemd.

Как запустить Python-скрипт на постоянку при помощи systemd

Установим на сервере данный модуль:

apt-get install systemd

На компьютере создадим файл с расширением .service. В моём случае я создаю файл для запуска скрипта Телеграмм-бота, потому называю файл icopydoc-bot.service и наполняю его следующим образом:

[Unit]
Description=Telegram bot 'iCopyDoc Bot'
After=syslog.target
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/var/www/html/bot
ExecStart=/usr/bin/python3 /var/www/html/bot/index.py
RestartSec=10
Restart=always
 
[Install]
WantedBy=multi-user.target

Обратите внимание на правила WorkingDirectory и ExecStart. В первом мы указываем путь до папки, в которой лежат файлы проекта с ботом, а во втором прописываем путь до основного файла нашего проекта.

Теперь нам надо закачать данный файл в /etc/systemd/system. Я делал это через FTP (подробнее о настройке FTP на Апаче).

Загружаем файл .service для systemd

Но вы можете воспользоваться консолью, заменив мои данные на ваши:

pscp.exe "C:\Users\Maxim\MyBot\iCopyDocBot\icopydoc-bot.service" root@123.123.12.12:/etc/systemd/system

Далее выполняем следующие команды в консоли:

systemctl daemon-reload
systemctl enable icopydoc-bot
systemctl start icopydoc-bot
systemctl status icopydoc-bot

Готово! Теперь скрипт будет работать в фоновом режиме даже если вы отключитесь от сервера.

Рейтинг: 5

2023-10-23 / / 0 комментариев / Про кодинг и сервер / ,