Различия
Показаны различия между двумя версиями страницы.
| Следующая версия | Предыдущая версия | ||
| 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> | ||