Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: HOWTO: Установка Nginx с PHP5 и поддержкой MySQL в Ubuntu 9.04  (Прочитано 32636 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Kalessind

  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
usr/bin/php5-cgi часто падает,
который запускается командой
/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pid
как бы это починить, или ловить момент и перезапускать автоматом?

поддерживаю, как решить проблему с падением?
попробывал в крон засунуть чистую команду, не вышло...
Есть у кого либо еще варинаты?

как вариант: попробуйте написать скрипт, который проверяет жив ли процесс (pid файл у вас уже есть с номером процесса - /var/run/fastcgi-php.pid)

алгоритм примерно следующий: если Pid-файл пустой или его нет, то процесса скорее всего тоже нет. значит запускаем новый
при помощи ps, cat, awk, grep проверяем жив ли процесс с номером из PID-файла. елси нет, то запускаем новый.
ставим этот скрипт в крон и выполняем постоянно.

другой вариант.
можно не заморачиваться с pid-файлом.   листинг процессов можно грепать по имени процесса

пример:

ps -U user_name | grep process_name | grep -v grep
 7624 ?        00:00:00 process_name
 7625 ?        00:00:00 process_name
 7626 ?        00:00:00 process_name

если команда ничего не вернет, значит процесса нет и его надо поднять.

Оффлайн Kalessind

  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
нашёл более лучший вариант.
создаем файл
/etc/init.d/fcgi

в нем примерно такой скрипт:

#############
#!/bin/sh

LOCKFILE=/home/fcgi/var/run/fcgi.lock
OWNER_USER=fcgi
NAME=fcgi

stop_fcgi() {
  rm -f $LOCKFILE
  pkill -9 -u $OWNER_USER -f perl
}

start_fcgi() {
  su -m $OWNER_USER -c "  
    touch $LOCKFILE
    (while true; do test -f $LOCKFILE || exit; /usr/bin/spawn-fcgi -s /home/fcgi/var/run/$NAME.sock -P /home/fcgi/var/run/$NAME.pid -f /home/fcgi/wwwroot/fcgi/bin/fcgi-bin/run.pl -n; sleep 1; done )&
    disown"
}

case "$1" in
  start)
    start_fcgi
    ;;
  restart)
    stop_fcgi
    sleep 1
    start_fcgi
    ;;
  stop)
    stop_fcgi
    ;;
esac
#############

P.S.
1 пример правда не для php, а для perl, но разницы нет, я думаю
2. вместо прослушивания адреса 127.0.0.1 на 9000 порту тут идёт "общение" через сокет. мне так удобнее было.
« Последнее редактирование: 01 Июля 2011, 20:17:32 от Kalessind »

Оффлайн Lojaleto

  • Новичок
  • *
  • Сообщений: 44
    • Просмотр профиля
Чета финала нету в теме прошлого года..
Меня вопрос интересует..
Приемлемых решений я не нашел..
Help

Пробовал выше написанное эта команда проверяет запущена ли служба каждую секунду..
но служба не падает.. она просто перестает работать как нада..
в процессах висит, но при запросе php страниц браузер пишет не найдено..

может знает кто как на 10.04 с неизбежным nginx запустить php..
apache пробовал, но вариант апача на др. порт.. это не подходит..
вот ели бы можно было nginx на др. порт, а апач на 80 было бы круто..

--------------------------------------------------------------------------------------

Ха.. разобрался.. nginx-у какие порты в виртуал хост укажешь.. такие он и использует..
« Последнее редактирование: 29 Июня 2012, 07:43:00 от Lojaleto »

 

Страница сгенерирована за 0.017 секунд. Запросов: 22.