Я сделал образ одного из моих личных образов Amazon EC2, на котором работает один веб-сайт, а затем начал установку Redmine. После того, как установка будет завершена, произойдет перезапуск Apache. Я столкнулся со следующей проблемой (извините, вам, возможно, придется увеличить масштаб, чтобы увидеть снимок экрана):
Насколько я понимаю, apache2 не запущен, но прослушивает порт 80. Затем я попробовал: что дает тот же сбивающий с толку, но непротиворечивый вывод: apache2 не работает, но я уверен, что это процесс 18304, который apache2 прослушивает порт 80. В конце концов мне пришлось убить процесс и перезапустить apache, который работал. Может ли кто-нибудь объяснить мне, что могло вызвать это и исправить?
Обновление1:
Следующий синтезатор предложение использовать lsof. Это точно такая же проблема с другим процессом, что и раньше.
Иногда, когда вы останавливаете apache (или любую другую программу), скрипт не может должным образом завершить работу программы, потому что он чего-то ждет (например, ввода-вывода), но удаляет файл pid. Таким образом, сценарий полагает, что apache не запущен, потому что нет файла pid, но apache запущен, или иногда не совсем запущен, а застревает и сидит на порту.
В этих случаях вам нужно остановить процесс, и вы можете запустить программу. Я видел много таких зависших процессов из apache, slapd, cirus, ... иногда такое случается.
Бегать
ps aux|grep apache
Ты видишь
/usr/share/apache2/ask-for-passphrase localhost:443 RSA
Если так
Один из сайтов содержит сертификат SSL с парольной фразой. Поэтому, когда apache пытался запустить во время загрузки, он не мог продолжить работу без ввода пароля вручную.
Итак, у вас есть два варианта решения этой проблемы:
Добавить SSLPassPhraseDialog директиву вашей config.
Удалите кодовую фразу (Менее безопасно)
Как сказано выше на плакате, используйте
lsof -n | grep TCP
или
lsof -n | grep "*:www"
Кроме того, в Ubuntu он использует имя процесса «apache2», поэтому вы должны проверять его с помощью
ps -ax |grep apache
Вместо grep httpd
Попробуйте бежать
lsof -n | grep TCP
Кроме того ... контроллер apache2 не всегда самый надежный, он просто проверяет PID-файл, а не сам процесс.
ps -aef | grep httpd
$ 1 говорит, что у вас все еще запущен httpd.