Различия
Показаны различия между двумя версиями страницы.
Следующая версия | Предыдущая версия | ||
python:supervisor [2015/11/26 23:14] – создано mirocow | python:supervisor [2024/04/11 13:37] (текущий) – mirocow | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ====== Supervisor ====== | + | {{tag> |
+ | ====== Supervisor by python ====== | ||
+ | |||
+ | * http:// | ||
+ | |||
+ | Служит для демонизации процессов/ | ||
+ | Supervisor написан на [[develop: | ||
+ | ===== Установка ===== | ||
+ | |||
+ | ==== apt-get ==== | ||
+ | |||
+ | |||
+ | $ sudo apt-get install supervisor | ||
+ | |||
+ | ==== pip ==== | ||
+ | |||
+ | Можно установить еще и c помощью пакетного мененджера pip для [[develop: | ||
+ | |||
+ | sudo pip install --upgrade supervisor | ||
+ | sudo ln -s / | ||
+ | sudo ln -s / | ||
+ | |||
+ | ===== Настройка ===== | ||
+ | |||
+ | nano / | ||
+ | или | ||
+ | $ echo_supervisord_conf > / | ||
+ | |||
+ | [unix_http_server] | ||
+ | file = / | ||
+ | | ||
+ | [supervisord] | ||
+ | logfile | ||
+ | logfile_maxbytes = 50MB | ||
+ | logfile_backups | ||
+ | loglevel | ||
+ | pidfile | ||
+ | nodaemon | ||
+ | minfds | ||
+ | minprocs | ||
+ | | ||
+ | [rpcinterface: | ||
+ | supervisor.rpcinterface_factory = supervisor.rpcinterface: | ||
+ | | ||
+ | [supervisorctl] | ||
+ | serverurl = unix:/// | ||
+ | | ||
+ | [program: | ||
+ | command | ||
+ | process_name | ||
+ | numprocs | ||
+ | autostart | ||
+ | autorestart | ||
+ | user = root | ||
+ | stdout_logfile | ||
+ | stdout_logfile_maxbytes = 1MB | ||
+ | stderr_logfile | ||
+ | stderr_logfile_maxbytes = 1MB | ||
+ | |||
+ | ===== WEB GUI ===== | ||
+ | |||
+ | Для запуска web интерфейса supervisorctl необходимо в файле / | ||
+ | [inet_http_server] | ||
+ | port=127.0.0.1: | ||
+ | ; | ||
+ | ; | ||
+ | |||
+ | |||
+ | Для работы через nginx c web версией можно написать прокси сервер: | ||
+ | |||
+ | server { | ||
+ | listen 80; | ||
+ | server_name supervisor.loc; | ||
+ | location / { | ||
+ | proxy_pass http:// | ||
+ | proxy_set_header Host $host; | ||
+ | proxy_set_header X-Real-IP $remote_addr; | ||
+ | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | после чего перезапускаем nginx с supervisor' | ||
+ | |||
+ | |||
+ | / | ||
+ | / | ||
+ | Если при запуске supervisor возникла ошибка: | ||
+ | |||
+ | Пример: | ||
+ | |||
+ | $sudo unlink / | ||
+ | Далее из браузера заходим на http:// | ||
+ | |||
+ | ===== supervisorctl ===== | ||
+ | |||
+ | Создание задач для supervisor: | ||
+ | Для создания задач, необходимо прописывать конфиги в / | ||
+ | |||
+ | |||
+ | [program:] | ||
+ | command= | ||
+ | process_name=%(process_num)s | ||
+ | stdout_logfile=/ | ||
+ | stderr_logfile=/ | ||
+ | redirect_stderr=true | ||
+ | autostart=true | ||
+ | autorestart=true | ||
+ | startsecs=5 | ||
+ | numprocs=1 | ||
+ | |||
+ | * [program:] — заголовок секции. Нижеследующие параметры будут относится только к этому воркеру(демону) | ||
+ | * command — команда на запуск файла. чаще всего путь к исполняемому файлу. | ||
+ | * process_name — имя каждого инстанса воркера. Здесь есть тонкость — В мануале указано, | ||
+ | * stdout_logfile — говорит само за себя. куда перенаправляем стандартную консоль вывода. | ||
+ | * stderr_logfile — то же самое, только для ошибок. Рекомендую указывать эти 2 параметра. Они могут очень выручить, | ||
+ | * autostart — как и следовало ожидать. запускаем воркеров при запуске супервизорда. Как правило при старте системы. | ||
+ | * autorestart — Перазапуск воркера, | ||
+ | * startsecs — сколько времени нужно ждать воркера, | ||
+ | * numprocs — количество инстансов воркеров. | ||
+ | |||
+ | ===== Наблюдения ===== | ||
+ | |||
+ | Иногда при останове supervisor' | ||
+ | |||
+ | sudo netstat -nap | grep 9771 | ||
+ | И грохнуть по pid процесс: | ||
+ | |||
+ | sudo kill 2342 | ||
+ | Прописать параметры $_SERVER в конфиге supervisor можно через переменную environment: | ||
+ | |||
+ | [program: | ||
+ | command=php / | ||
+ | environment=HTTP_HOST=" | ||
+ | далее нам эти переменные будут доступны из $_SERVER[' | ||
+ | |||
+ | {{topic> |