Столкнулся с такой ситуацией что после аварийного завершения работы (к примеру отключили электричество) апача на моей фре, он(апач) не хотел запускаться должным образом. Помогал только ручной запуск и то не с первого раза. Логи ничего подозрительного не выявляли. После некоторых раздумий и экспериментов пришел к выводу что во всем виноват pid фаил апача, который остается после аварийной перезагруки системы в /var/run . Что самое удивительное апач по каким то причинам при запуске системы не трогал этот файл, хотя по идее, должен был его удалять и спокойно запускать процесс.
Решил эту проблему маленьким редактированием запускающего скрипта /usr/local/etc/rc.d/apache22 .
Перед последней процедурой apache22_prestart(), которая кстати является наоборот запускающей процедурой 🙂 , я дописал свою процедурку:
apache22_delpid() { if [ -e ${pidfile} ]; then rm -f ${pidfile} fi }
которая собственно проверяет существование pid файла и если он сущесвует, удаляет его. После чего апач нормально грузится дальше.
Главное не забыть прописать эту процедуру в запуск. Приведем apache22_prestart() ее к такому виду:
apache22_prestart() { apache22_delpid # Процедура удаления pid-файла apache22_checkfib apache22_precmd }
Вот и все. Конечно этот метод не явлется идеальным, т.к. если снова попробовать запустить апач вручную, он затерет уже работающий pid файл, и врятли запустит новый процесс. Но я думаю нормальному человеку в голову не придет запускать еще один экзампляр апача 🙂
(c) Человек_Разумный
No comments
RSS / trackback