| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия |
| python:supervisor [2015/11/26 23:25] – [WEB GUI] 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]]. |
| ===== Установка ===== | ===== Установка ===== |
| | |
| | ==== apt-get ==== |
| | |
| |
| $ sudo apt-get install supervisor | $ sudo apt-get install supervisor |
| Можно установить еще и так, самая свежая версия из питоновского установщика, но для этого нужно еще тянуть кучу пакетов для питона и компиляторов | |
| |
| | ==== 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]}} |