LINUX.ORG.RU

Кто чем (переза)пускает fcgi процессы?


0

0

Зачача: сервить пару django сайтов, git репозиторий и может быть ещё redmine.

Сейчас используется: nginx, за которым fcgi приложение. Есть скрипт, который должен поднимать этот процесс при старте системы.

Пробовал: lighttpd, но он умер. Версия 1.4.х не поддерживает один заголовок (точно уже не помню, но нужен был для git'а), ждать 1.5 как-то нет смысла.

Сейчас запуск происходит строкой вида

python projectname/manage.py runfcgi host=127.0.0.1 port=10001 pidfile=/tmp/projectname.pid

Мне это не особо нравится, потому что если процесс по каким-то причинам упал, то он его нужно запускать руками. Как грамотно сделать перезапуск процесса? В идеале хотелось бы чтобы nginx в случае недоступности определённого сокета, как-то запускал процесс. Но это уже из области фантастики. Ещё можно попробовать xinetd, но не знаю насколько это костыльно.

У меня fcgi реализован на perl и там этим занимается FCGI::ProcManager.

Если какой из потоков умирает, то он сам его перезапускает. Очень удобно.

Или можно пользоваться сторонним приложением, например, http://vds-admin.ru/unix-commands/spawn-fcgi , кстати он по-моему входит в пакет lighttpd

Mrak ★★★
()
Ответ на: комментарий от Mrak

Я сейчас к раз запускаю через spawn-fcgi (да, он идёт с lighttpd), но не знал, что он перезапускает процессы если они умирают. Видимо плохо курил маны. Спасибо.

AlexKiriukha ★★★★
() автор топика
Ответ на: комментарий от AlexKiriukha

Не я не писал что spawn-fcgi перезапускает мертвые процессы. Это надо проверять, я просто писал что в perl есть удобный менеджер для этого. Погугли может и в питоне есть похожее

Mrak ★★★
()

>Мне это не особо нравится, потому что если процесс по каким-то причинам упал, то он его нужно запускать руками.

Скажи честно, каким образом у тебя падают джанго-процессы?

У меня за 2 года активного использования никогда даже проблемы такой не было.

Есть скрипт, который должен поднимать этот процесс при старте системы.

Сделай модный скрипт, который по крону смотрит, живы ли сайты. Так как падение всего процесса - вещь редкая, то этого хватит.

anonymous
()
Ответ на: комментарий от anonymous

> Скажи честно, каким образом у тебя падают джанго-процессы?

У меня за 2 года активного использования никогда даже проблемы такой не было.

Это я теоретизирую, пока не падали. Просто мне казалось, что возможность серверу запускать процесс вместо показа 502 или что там была бы интересной.

AlexKiriukha ★★★★
() автор топика
Ответ на: комментарий от AlexKiriukha

в комплекте гламурная веб-морда ;-)

hizel ★★★★★
()
Ответ на: комментарий от AlexKiriukha

>Это я теоретизирую, пока не падали.

Ну вот потеоретизируй ещё:) В случае какой-либо ошибки джанговский процесс обычно просто даёт эксепшен и 500. Заодно почта идёт на нужные адреса. Это всё, что может с ним произойти.

Так падать, чтобы падал весь процесс намертво стабильная версия джанги просто не может. А если так случилось - значит дело плохо, и тут не рестарт нужен, а серьёзное разбирательство с кодом.

Говорю по собственному опыту, что мы только не делали, насколько диким не был код - всё равно оно не падает.

anonymous
()
Ответ на: комментарий от AlexKiriukha

>Fedora.

Так там вроде перешли на upstart, может им запускать? Он умеет перезапускать демона если он умер. Нужно указать параметр respawn для этого.

firestarter ★★★☆
()
Ответ на: комментарий от firestarter

На хостинге не очень большой выбор систем и федора версии 12, там (вроде) ещё нету upstart. Из того, что помню, ещё был centos, но с таким старьём вообще не хочется связываться.

AlexKiriukha ★★★★
() автор топика
Ответ на: комментарий от vvnab

Я слышал о них, но в федоровских репах их нету. Можно и самому собрать, но не хочется разбираться с созданием spec файла, хотя всё равно было бы полезно.

AlexKiriukha ★★★★
() автор топика
Ответ на: комментарий от fuxter

Да вот читаю про supervisord и как создавать spec файлы для rpm чтобы поставить daemontools. Можно, конечно, так собрать, но хочется без бардака.

AlexKiriukha ★★★★
() автор топика
Ответ на: комментарий от d0de-stillhet

У меня перезапускает, ЧЯДНТ?

root@b000:/home/b000# ps ax|grep python
 3544 pts/0    D+     0:00 grep --color=auto python
27368 ?        Sl     8:36 /usr/bin/python /home/www/aaa.b000.ru/wallp/on.fcgi
27378 ?        Sl     0:40 /usr/bin/python /home/www/aaa.b000.ru/wallp/on.fcgi
root@b000:/home/b000# kill 27368
root@b000:/home/b000# kill 27378
root@b000:/home/b000# ps ax|grep python
 3549 ?        Sl     0:01 /usr/bin/python /home/www/aaa.b000.ru/wallp/on.fcgi
 3562 ?        Sl     0:01 /usr/bin/python /home/www/aaa.b000.ru/wallp/on.fcgi
 3576 pts/0    S+     0:00 grep --color=auto python

Никаких скриптов нет. На первом же запросе к сайту - процесс перезапускается.

pi11 ★★★★★
()
Ответ на: комментарий от pi11

то что в генте зовется пакетом spawn-fcgi никогда не умело оживлять мертвые фцги-приложения. 502 bad gateway будет висеть до скончания времен, если не перезапустить руками или кроном. возможно кто-то другой оживляет питоновские веб-приложения, но точно не spawn-fcgi.

вот например у меня на сях глючное фцги-приложение, которое можно закликать до сегфолта, скрипт по крону его и перезапускает :3

d0de-stillhet
()
Ответ на: комментарий от d0de-stillhet

Может быть и лайти, надо будет проверить.

pi11 ★★★★★
()
Ответ на: комментарий от d0de-stillhet

Лайти можно передать путь к скрипту, который нужно (пере)запустить. В nginx я не нашёл такого функционала. В этом и загвостка.

AlexKiriukha ★★★★
() автор топика
Ответ на: комментарий от AlexKiriukha

у энжыныкса философия такая - адов минимализм, следовательно не делать ничего, что не положено http/mail-серверу. поэтому люди ставят за ним всякие апачи с лайтями

d0de-stillhet
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.