Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия |
python:supervisor [2015/11/26 23:35] – [Установка] mirocow | python:supervisor [2024/04/11 13:37] (текущий) – mirocow |
---|
{{tag>service unix linux python supervisor}} | {{tag>service unix linux python supervisor initd}} |
| |
====== Supervisor ====== | ====== Supervisor by python ====== |
| |
Для запуска программ с определенными параметрами и отслеживания их состояния. Запуск процессов supervisord производит от своего имени, как под процессы, поэтому контроль остается за визором. Supervisorctl предоставляет системный- и веб-интерфейсы для мониторинга и управления процессами. Вы можете предоставить пользователям доступ на определенные программы, а они в свою очередь смогут видеть состояние этих программ и совершать действия над ними (start, stop, restart). Также имеется XML-RPC интерфейс, которым вы можете пользоваться для написания своих расширений и приложений, которым нужен доступ к Supervisord. | * http://supervisord.org |
| |
| Служит для демонизации процессов/программ с определенными параметрами и отслеживания их состояния. Запуск процессов supervisord производит от своего имени, как под процессы, поэтому контроль остается за визором. Supervisorctl предоставляет системный- и веб-интерфейсы для мониторинга и управления процессами. Вы можете предоставить пользователям доступ на определенные программы, а они в свою очередь смогут видеть состояние этих программ и совершать действия над ними (start, stop, restart). Также имеется XML-RPC интерфейс, которым вы можете пользоваться для написания своих расширений и приложений, которым нужен доступ к Supervisord. |
| Supervisor написан на [[develop:python:python]]. |
===== Установка ===== | ===== Установка ===== |
| |
| |
$ sudo apt-get install supervisor | $ sudo apt-get install supervisor |
| |
Можно установить еще и так, самая свежая версия из питоновского установщика, но для этого нужно еще тянуть кучу пакетов для питона и компиляторов | |
| |
==== pip ==== | ==== pip ==== |
| |
| Можно установить еще и c помощью пакетного мененджера pip для [[develop:python:python]], самая свежая версия из питоновского установщика, но для этого нужно еще тянуть кучу пакетов для питона и компиляторов |
| |
sudo pip install --upgrade supervisor | sudo pip install --upgrade supervisor |
sudo ln -s /usr/local/bin/supervisord /usr/bin/supervisord | sudo ln -s /usr/local/bin/supervisord /usr/bin/supervisord |
sudo ln -s /usr/local/etc/supervisord.conf /etc/supervisord.conf | sudo ln -s /usr/local/etc/supervisord.conf /etc/supervisord.conf |
| |
| ===== Настройка ===== |
| |
| nano /etc/supervisor/supervisor.conf |
| или |
| $ echo_supervisord_conf > /etc/supervisor/supervisor.conf |
| |
| [unix_http_server] |
| file = /tmp/supervisor.sock |
| |
| [supervisord] |
| logfile = ./logs/supervisord.log |
| logfile_maxbytes = 50MB |
| logfile_backups = 10 |
| loglevel = info |
| pidfile = /tmp/supervisord.pid |
| nodaemon = false |
| minfds = 1024 |
| minprocs = 200 |
| |
| [rpcinterface:supervisor] |
| supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface |
| |
| [supervisorctl] |
| serverurl = unix:///tmp/supervisor.sock |
| |
| [program:someprogram1] |
| command = bash -c "ulimit -n 10000; exec /usr/bin/php ./bin/some-program-1.php" |
| process_name = Some-Program |
| numprocs = 1 |
| autostart = true |
| autorestart = true |
| user = root |
| stdout_logfile = ./logs/some-program-info.log |
| stdout_logfile_maxbytes = 1MB |
| stderr_logfile = ./logs/some-program-error.log |
| stderr_logfile_maxbytes = 1MB |
| |
| ===== WEB GUI ===== |
| |
Для запуска web интерфейса supervisorctl необходимо в файле /etc/supervisor/supervisord.conf проверить наличие секции: | Для запуска web интерфейса supervisorctl необходимо в файле /etc/supervisor/supervisord.conf проверить наличие секции: |
[inet_http_server] | [inet_http_server] |
;password=123 | ;password=123 |
| |
===== WEB GUI ===== | |
| |
Для работы через nginx c web версией можно написать прокси сервер: | Для работы через nginx c web версией можно написать прокси сервер: |
/etc/init.d/supervisor restart | /etc/init.d/supervisor restart |
/etc/init.d/nginx restart | /etc/init.d/nginx restart |
При запуске supervisor возникла ошибка: Starting supervisor: Error: Another program is already listening on a port that one of our HTTP... Для решения данной проблемы нужно убить socket supervisor.sock, где находится видно из конфига | Если при запуске supervisor возникла ошибка: Starting supervisor: Error: Another program is already listening on a port that one of our HTTP..., то для решения данной проблемы нужно убить socket supervisor.sock, где находится видно из конфига |
| |
Пример: | Пример: |
| |
$sudo unlink /tmp/supervisor.sock | $sudo unlink /tmp/supervisor.sock |
Далее из браузера заходим на http://supervisor.loc, и видим, что-то такое: (если есть созданные задачи) | Далее из браузера заходим на http://supervisor.loc |
| |
===== supervisorctl ===== | ===== supervisorctl ===== |
command=php /path/file.php | command=php /path/file.php |
environment=HTTP_HOST="blog-tree.com",SOME_SERVER_PARAM="my_param" | environment=HTTP_HOST="blog-tree.com",SOME_SERVER_PARAM="my_param" |
далее нам эти переменные доступны из $_SERVER['HTTP_HOST'] и $_SERVER['SOME_SERVER_PARAM'] | далее нам эти переменные будут доступны из $_SERVER['HTTP_HOST'] и $_SERVER['SOME_SERVER_PARAM'] |
| |
| {{topic>[python]}} |