Назад | Перейти на главную страницу

Apache 2.2 на Windows Server: не запускается после попытки изменить букву диска для всех данных и журналов

Я управляю веб-сервером, работающим на Windows Server 2008, как 64-битный виртуальный хост. Все служебное программное обеспечение работает независимо, а не как часть стека AMP. Диск с данными почти заполнен, и мой системный администратор выделил новый виртуальный диск с дополнительным пространством. Моя задача - скопировать все со старого тома на новый.

При создании тома я убедился, что он был создан с тем же типом тома, файловой системой, размером блока и т. Д. Я остановил все соответствующие службы (Apache, MySQL, оба из которых бегать из C: но все данные которого находятся на D :, включая журналы), и скопировали все файлы.

Отсюда я попробовал два разных подхода к тому, чтобы службы зависели от нового тома и забыли о старом. У MySQL в любом случае нет проблем, но Apache не запускается как услуга используя любой метод. Вот что отображается в журнале системных событий:

Служба Apache2.2 завершена из-за ошибки службы Неправильная функция

Ничего не появляется в error.log.

Сначала я попытался просто изменить буквы дисков. Я взял старый D: и изменил его на что-то произвольное, и назначил D: новому тому. Это привело к указанной выше ошибке. Я попытался перезагрузить сервер с новыми обозначениями дисков «на всякий случай», но возникла та же ошибка. Поскольку я не совсем понимаю точки монтирования Windows, я изменил буквы дисков на исходные и подтвердил, что служба Apache запускается нормально.

Во-вторых, я попытался просто обновить все файлы конфигурации Apache и MySQL. Каждое появление «D:» (без учета регистра) было заменено на F: (новая буква диска). Я хорошо знаю файлы конфигурации, поэтому знаю, что нашел все случаи. Вышеупомянутая ошибка повторилась точно так же. Чтобы восстановить работоспособность веб-сервера, я отменил все изменения, и службы успешно запустились.

Еще немного информации, которую я собрал:

Одна вещь у меня есть не Проверено - это попытаться переместить на новый диск только одно расположение данных и журналов, а другое оставить как есть. Я не думал, что это будет иметь значение.

... Тем не менее, я действительно не знаю, что здесь происходит. Я не могу придумать ни одной причины, по которой Apache не сможет работать как служба, просто изменив расположение файлов журналов и данных.

Буду очень признателен за любые предложения или советы по этому поводу. Я буду рад продолжить расследование в ответ на ваши предложения. Если кто-то из вас считает, что стоит попробовать переместить только один из упомянутых элементов (журналов или данных), я попробую. Точно так же, если кто-то из вас считает, что я слишком поспешно отказался от разрешений, я проведу более тщательное изучение.

Любой вклад приветствуется! Я исчерпал все свои идеи.

На следующий день, в пределах выделенного временного интервала для отключения основных функций сервера, я пошел попробовать что-то новое и у меня возникла новая мысль, которая в конечном итоге решила проблему! Детали таковы, в контексте предпринятых мною шагов.

Я начал с повторения второго подхода из исходного вопроса. Я остановил службы, повторно скопировал все файлы (чтобы уловить изменения за последний день) и отредактировал файлы конфигурации Apache и MySQL, чтобы они указывали на новый диск (F :). Я подтвердил, что Apache выдает ту же ошибку. Поскольку у меня уже были открыты файлы конфигурации, я решил попробовать то, что не пробовал изначально (и действительно должен был иметь):

  • Я сбрасываю файлы конфигурации, чтобы они вернулись в исходное состояние, указывая на старый диск (D :).
  • Я обновил только ссылки на файлы журнала на новый диск (F :) и протестировал службу Apache - та же ошибка, что и раньше.
  • Я вернул ссылки на файлы журнала на D: и обновил ссылки на данные на F: - ЭТО РАБОТАЛО! Опять же, мне действительно стоило попробовать это вчера. На этом этапе я узнал, что проблема заключалась в файлах журнала.
  • Так как файлов было всего два (access.log и error.log), Я принудительно изменил права доступа: добавил / удалил только для чтения (на всякий случай), обеспечил, чтобы пользователь apache имел рекурсивный доступ на запись через каталоги и к самим файлам.
  • Обновлены ссылки в файлах журнала на F: - та же ошибка, что и раньше.
  • Думая, я переименовал два файла журнала (распространенный метод ротации файлов журнала) и попытался запустить службу, ожидая появления новых версий исходных имен файлов - они и сделали! Сервис успешно запущен! Победа !!

Что я выучил: на самом деле, я не совсем уверен. Если бы я не был так тщателен с различными этапами своего расследования, я бы заподозрил проблемные дескрипторы файлов или что-то в этом роде, но я не понимаю, как это было бы возможно после перезагрузки. Однако я подтвердил ценность не слишком быстро отвергать возможности при устранении проблемы. Как я уже упоминал в вопросе, я не думал, что сегодняшнее исследование может что-то изменить, и я до сих пор не знаю, почему это произошло! Но с результатами не поспоришь.

Вывод: моя проблема решена, но я не знаю почему. Если у кого-то есть теория, поделитесь ею!

Понятия не имею, почему изменение буквы диска вызывает проблему. Но ошибка The service terminated with service-specific error Incorrect function в Windows Services обычно происходит из-за нехватки физической оперативной памяти.

Проверьте минимальные системные требования в документации Apache и, при необходимости, попробуйте закрыть ненужные программы.

Я только что столкнулся с той же проблемой с mod_wsgi, используя WSGIPythonHome. Из ответа nmjk я ​​решил проверить разрешения и понял, что у пользователя Apache нет разрешений для WSGIPythonHome каталог. После добавления необходимых разрешений Apache запустился нормально.

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

Моя проблема была идентична, я переместил папки журналов на новый диск. Я выполнил инструкции по переименованию файла error.log и попытался запустить Apache, но это не удалось с той же ошибкой. Итак, я перезагрузил свой компьютер с Windows 10, и Apache успешно запустился.