PM2 — это процесс-менеджер для Node.js-приложений.
На общем хостинге PM2 может быть полезен для управления Telegram-ботами, API, или веб-приложениями.
Но PM2 можно также использовать и для Python-приложений.
Итак, у нас установлено python-приложение, телеграм бот. Установлены все необходимые библиотеки и т.д.
То есть бот работает. (Как установить Python )
Если Ваш бот использует webhook (вебхук) - то Вам сюда.
Так как PM2 работает только в среде Node, то нужно создать субдомен, установить Nodejs-приложение и уже в виртуальном окружении nodejs - запустить файл python.
Итак, приступим:
- Cоздать субдомен, например node-for-python.sample.uz (Как создать субдомен).
- Установить Node.js-приложение (Как установить Node.js).
- Копируем команду для входа в виртуальное окружение проекта, и вставляем в терминал
Для этого подключаемся по ssh, или открываем Терминал в cpanel. Вставляем команду для виртуального окружения вашего проекта.
2. Теперь нужно установить PM2 через npm:
npm install pm2 -g
и проверить его установку можно командой:
pm2 -v
3. Запустить бота через PM2:
pm2 start /home/путь_к_файлу/app.py --interpreter=/путь/к/расположению/python --name bot_python
где:
pm2 start - команда на старт
/home/путь_к_файлу/app.py - полный путь к файлу
--interpreter=/путь/к/расположению/python - для запуска языка python - берем часть из команды виртуального окружения python
--name bot_python - имя процесса для PM2
например:
pm2 start /home/sampleuz/pythonbot.sample.uz/app.py --interpreter=/home/sampleuz/virtualenv/pythonbot.sample.uz/3.12/bin/python --name bot_python
запускает файл app.js и присваивает процессу имя nodejs-bot
4. Теперь сохраним текущую конфигурацию
pm2 save
Также можно создать cron для автоматического входа в виртуальное окружение и восстановления списка сохраненных процессов. Время запуска - каждый час.
source /home/sampleuz/nodevenv/node-for-python.sample.uz/22/bin/activate && cd /home/sampleuz/node-for-python.sample.uz && pm2 resurrect >/dev/null 2>&1
где source /home/sampleuz/nodevenv/node-for-python.sample.uz/22/bin/activate && cd /home/sampleuz/node-for-python.sample.uz - команда виртуального окружения Nodejs
pm2 resurrect - восстанавливает сохраненную конфигурацию
5. Управление приложением с помощью PM2:
pm2 stop my-app Остановить приложение
pm2 restart my-app Перезапустить приложение
pm2 list Посмотреть список процессов
pm2 delete my-app Удалить процесс
Файл тестового бота - скачать