Найти в Дзене
Codica Около IT

Автоматический запуск python скрипта на сервере Ubuntu 20.04 после включения и перезагрузки с помощью supervisor

Статья написана для себя =) Не более чем шпаргалка, так как использовать иногда приходится, а вспоминать каждый раз лень. В данном конкретном случае скрипт используется для автоматизации действий в браузере с уведомлением о успешном выполнении в Telegram. По этой причине будут указаны устанавливаемые пакеты. Первым делом нам необходимо установить всe необходимые пакеты на сервер через ssh клиент , к примеру putty. Переходим к установке всего необходимого на сервер.
Первым делом проверяем обновления на сервере:
sudo apt-get update sudo apt-get upgrade Ждем окончания установки обновлений на сервер и устанавливаем pip (менеджер пакетов для python): sudo apt install python3-pip Проверяем версию pip и что он корректно установился: pip3 --version Далее нам необходимо установить необходимые пакеты через pip для работы нашего скрипта. pip install pyTelegramBotAPI pip install selenium Устанавливаем браузер с которым будет работать наш selenium, в моём случае это Mozilla Firefox sudo apt inst

Статья написана для себя =) Не более чем шпаргалка, так как использовать иногда приходится, а вспоминать каждый раз лень.

В данном конкретном случае скрипт используется для автоматизации действий в браузере с уведомлением о успешном выполнении в Telegram. По этой причине будут указаны устанавливаемые пакеты.

Первым делом нам необходимо установить всe необходимые пакеты на сервер через ssh клиент , к примеру putty.

Переходим к установке всего необходимого на сервер.
Первым делом проверяем обновления на сервере:

sudo apt-get update
sudo apt-get upgrade

Ждем окончания установки обновлений на сервер и устанавливаем pip (менеджер пакетов для python):

sudo apt install python3-pip

Проверяем версию pip и что он корректно установился:

pip3 --version

Далее нам необходимо установить необходимые пакеты через pip для работы нашего скрипта.

pip install pyTelegramBotAPI
pip install selenium

Устанавливаем браузер с которым будет работать наш selenium, в моём случае это Mozilla Firefox

sudo apt install firefox

Для взаимодействия selenium с нашим браузером необходимо установить драйвер прослойку geckodriver . Скачиваем последнюю версию (на 18.07.2022) geckodriver-v0.31.0-linux64.tar.gz , распаковываем в любую папку и заливаем на сервер с помощью WinSCP в папку "usr/bin".
Туда же переносим наш python скрипт.

Возвращаемся в putty - выдаем драйверу необходимые права и перемещаем в папку куда будет обращаться наш скрипт.

cd /usr/bin
sudo chmod +x geckodriver
sudo mv geckodriver /usr/local/bin/

Следующим шагом устанавливаем supervisor:

sudo apt install supervisor

Выдаём нашему скрипту необходимые права для работы с supervisor

sudo chmod a+x /usr/bin/Имя нашего скрипта.py

Конфигурируем supervisor под наш python скрипт:

sudo sh -c 'echo_supervisord_conf > /etc/supervisor/supervisord.conf'; cd /etc/supervisor; sudo sed -i -e 's|file=/tmp/supervisor.sock|file=/var/run/supervisor.sock|' -e 's/;chmod=0700/chmod=0766/' -e 's/\;\[inet_http_server]/[inet_http_server]/' -e 's/;port=127.0.0.1:9001/port=*:9001/' -e 's/;user=chrism/user=root/' -e 's|logfile=/tmp/supervisord.log|logfile=/var/log/supervisor/supervisord.log|' -e 's|pidfile=/tmp/supervisord.pid|pidfile=/var/run/supervisord.pid|' -e 's/nodaemon=false/nodaemon=true/' -e 's|serverurl=unix:///tmp/supervisor.sock|serverurl=unix:///var/run/supervisor.sock|' -e 's/\;\[include]/[include]/' supervisord.conf; sudo sh -c "echo 'files = /etc/supervisor/conf.d/*.conf' >> supervisord.conf"

echo -e '; supervisor config file\n\n[program:01-Bot]\ncommand = python3 Имя нашего скрипта.py\ndirectory = /usr/bin\nstdout_logfile_maxbytes = 50MB\nstdout_logfile = /var/log/bot.log\nstderr_logfile = /var/log/bot.log\nstartsecs = 10\nnpriority = 999\nautostart = true\nautorestart = true' | sudo tee /etc/supervisor/conf.d/bot.conf > /dev/null; sudo supervisorctl reread; sudo supervisorctl update; sudo systemctl restart supervisor.service

Проверить статус запуска нашего скрипта мы можем командой

sudo supervisorctl status

После перезагрузки или включения сервера наш скрипт запускается автоматически.