Сегодня я представляю инструмент управления процессами производственного уровня PM2.Обычно, когда мы говорим о PM2, мы говорим о том, как развертывать программы Node.js, но на самом деле PM2 очень мощный, его можно использовать не только для управления Node.js, он также может использоваться для управления Python, PHP, Ruby, Perl и т. д.
Здесь мы берем Python в качестве примера, чтобы увидеть, как PM2 развертывается и управляет сценариями Python.
PM2-Python
PM2 — это менеджер процессов производственного уровня, который может легко управлять фоновыми процессами.В мире Python PM2 сравним с Supervisord, а PM2 имеет несколько замечательных функций.
Используя PM2, легко перезапускать аварийные ситуации, наблюдать, проверять журналы и даже развертывать приложения, а PM2 придает большое значение опыту работы в интерфейсе командной строки, поэтому PM2 очень прост в использовании и освоении.
Сегодня PM2 разрабатывается уже 5 лет, имеет более 6500 загрузок на Github и стал одним из предпочтительных способов запуска Node.js на рабочих серверах. Но он также поддерживает Python.
Установить PM2
PM2 зависит от node.js, поэтому вам нужно заранее установить Node, этот шаг очень прост:
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt-get install -y nodejs
Как на других платформах установить Node.js, найдите туториалы самостоятельно.
Если у вас есть среда Node, вы можете установить PM2 через npm.
$ sudo npm install pm2 -g
Чтобы инициализировать PM2, вы можете использоватьpm2 ls
команда, вы можете увидеть очень дружественный интерфейс на данный момент.
Теперь, когда PM2 успешно установлен, давайте запустим приложение Python.
Запустить Python
Запустить приложение с помощью PM2 очень просто, он автоматически подбирает интерпретатор на основе расширения скрипта для запуска указанного приложения.
Давайте создадим простые приложения Python, такие как: hello.py.
#!/usr/bin/python
import time
while 1:
print("Start: %s" % time.ctime())
time.sleep(1)
У нас есть простой скрипт Python, затем мы используем PM2 для его запуска.
$ pm2 start hello.py
Затем вы можете увидеть процесс в Терминале.
В этот момент программа Python будет работать вечно, а это означает, что если процесс завершится или выдаст исключение, он будет перезапущен автоматически.
Режим тут форк, то есть закрыть текущее окно Терминала, еще может проверить статус приложения.
Чтобы просмотреть приложения, которые запускаются и управляются PM2, вы можете использоватьpm2 ls
команда для просмотра.
Проверьте журналы
Программы запускаются через PM2, если хотите просмотреть лог, то можете войтиpm2 logs
Заказ.
Если вы хотите указать для просмотра журнала процесса, вы можете использоватьpm2 logs <app_name>
указать.
Кроме того, PM2 также обеспечивает функцию автоматической ротации журналов, но ее необходимо установить.pm2-logrotate
$ pm2 install pm2-logrotate
pm2-logrotate
Это обеспечит функцию обновления ежедневной ротации журнала и сохранит общий размер управления журналом на уровне 10M.
Просмотреть информацию о процессе
Чтобы просмотреть сведения о программах, запущенных в данный момент с помощью PM2, используйтеpm describe <app_name>
команда для просмотра.
В выводе вы можете увидеть путь к файлу журнала, интерпретатору и т. д.
Управление состоянием процесса PM2
После знакомства с журналами запуска и просмотра давайте рассмотрим несколько простых команд управления.
1. остановить программу
$ pm2 stop hello
2. Перезапустить программу
$ pm2 restart hello
3. Остановить и удалить программу из списка процессов
$ pm2 delete hello
Для получения дополнительных команд вы можете напрямую просмотреть официальную документацию.
Продолжайте работать после перезагрузки сервера
После использования PM2 для запуска программы Python, PM2 может только гарантировать, что он будет перезапущен только в случае неожиданного сбоя запущенной программы Python. Если вы хотите, чтобы ваше приложение оставалось в сети при перезапуске сервера, вам необходимо настроить сценарий инициализации, который сообщает системе запустить PM2 и ваше приложение.
Чтобы запустить PM2 вместе с системой, просто запустите эту команду.
$ pm2 startup
startup
Вы можете сгенерировать команду, которая устанавливает переменные среды.
Скопируйте/вставьте последнюю строку этой команды и автоматически выполните PM2 при перезагрузке системы.
Теперь, когда вы можете перезапустить PM2, вам нужно сообщить PM2, какие состояния процессов должны оставаться неизменными при перезапусках, просто введите команду:
$ pm2 save
Это создаст файл дампа, в котором записано состояние процессов, которыми в настоящее время управляет PM2, и PM2 восстановит их в прежнем состоянии после перезапуска.
Мониторинг информации о ЦП/памяти
Чтобы прослушать ЦП/память и проверить некоторую информацию о процессе, вам нужно использоватьpm2 monit
Заказ.
Это откроет интерфейс термина, который позволяет вам попытаться получить запускное приложение.
вы также можете использоватьpm2 show <app_name>
Получить всю возможную информацию о приложении.
Работа с файлами экосистемы
Если необходимо запустить несколько программ или при запуске необходимо передать разные параметры, опции и т. д., вы можете использовать файл eocsystem для настройки приложения.
Eocsystem необходимо настроить с помощью файла экосистемы.config.js, который можно настроить с помощьюpm2 init
генерация команд. После генерации мы можем настроить в нем некоторую конфигурационную информацию.
module.exports = {
apps : [{
name: 'echo-python',
cmd: 'hello.py',
args: 'arg1 arg2',
autorestart: false,
watch: true,
pid: '/path/to/pid/file.pid',
instances: 4,
max_memory_restart: '1G',
env: {
ENV: 'development'
},
env_production : {
ENV: 'production'
}
}, {
name: 'echo-python-3',
cmd: 'hello.py',
interpreter: 'python3'
}]
};
В этом примере мы объявляем два приложения с помощьюinterpreter
Настройте интерпретаторы, запускаемые программой, один для работы с Python2 (по умолчанию), а другой для работы с Python3.
запустите его, все еще используйтеpm2 start
Заказ.
$ pm2 start ecosystem.config.js
Чтобы перезапустить только «производство» (env_production):
$ pm2 restart ecosystem.config.js --env production
Ecosystem.config.js
В файле многие конфигурации могут быть заданы командами, например, командой--interpreter
указать парсер.
Обычно мы устанавливаем среду Python2.x и Python3.x одновременно, а PM2 оценивается по суффиксу файла скрипта по умолчанию, если суффикса нет, его нужно указать--interpreter
.
{
".sh": "bash",
".py": "python",
".rb": "ruby",
".coffee" : "coffee",
".php": "php",
".pl" : "perl",
".js" : "node"
}
Информация о конфигурации также помечает сценарии, поддерживаемые PM2.
Затем, если вам нужно использовать Python3.x для выполнения сценария, вам нужно--interpreter
.
$ pm2 start hello.py --interpreter=python3
резюме
Простое использование PM2 вводится здесь первым. Хотя Python используется в качестве примера здесь, все связанные команды в этой статье могут быть применены к другим скриптам, поддерживаемыми PM2.
PM2 также имеет много мощных функций, таких как простое развертывание на сервер, используя SSH, балансировка нагрузки и т. Д. - это несколько хороших функций, если вы заинтересованы, вы можете проверить документацию. Документация PM2 является надежным, и ответы на большинство вопросов можно найти в документации.
Если у вас есть какие-либо вопросы, добро пожаловать на обсуждение в области сообщений, поделитесь им, если это будет полезно, спасибо!
Ссылаться на:
https://blog.pm2.io/managing-python-application-with-pm2
https://pm2.io/doc/en/runtime/quick-start/
Закулисье паблик-аккаунта реагирует на рост»взросление», получит подготовленные мной учебные материалы, а также сможет ответить «Добавить группу», учитесь и совершенствуйтесь вместе; вы также можете ответить «задавать вопросы', - задали мне вопрос.
Рекомендуемое чтение:
Графический Chrome, Архитектура | Используйте сценарии предварительной обработки для управления кодом апплета| Сегментация слов, популярная наука и решения| Иллюстрация: запрос диапазона HTTP | Учебные материалы для небольших программ |Кодировка HTTP-контента | Боевой режим помощи | Вспомогательный режим для трюков | Гибкий макет апплета