Я управляю веб-сервером, работающим на Windows Server 2008, как 64-битный виртуальный хост. Все служебное программное обеспечение работает независимо, а не как часть стека AMP. Диск с данными почти заполнен, и мой системный администратор выделил новый виртуальный диск с дополнительным пространством. Моя задача - скопировать все со старого тома на новый.
При создании тома я убедился, что он был создан с тем же типом тома, файловой системой, размером блока и т. Д. Я остановил все соответствующие службы (Apache, MySQL, оба из которых бегать из C: но все данные которого находятся на D :, включая журналы), и скопировали все файлы.
Отсюда я попробовал два разных подхода к тому, чтобы службы зависели от нового тома и забыли о старом. У MySQL в любом случае нет проблем, но Apache не запускается как услуга используя любой метод. Вот что отображается в журнале системных событий:
Служба Apache2.2 завершена из-за ошибки службы Неправильная функция
Ничего не появляется в error.log
.
Сначала я попытался просто изменить буквы дисков. Я взял старый D: и изменил его на что-то произвольное, и назначил D: новому тому. Это привело к указанной выше ошибке. Я попытался перезагрузить сервер с новыми обозначениями дисков «на всякий случай», но возникла та же ошибка. Поскольку я не совсем понимаю точки монтирования Windows, я изменил буквы дисков на исходные и подтвердил, что служба Apache запускается нормально.
Во-вторых, я попытался просто обновить все файлы конфигурации Apache и MySQL. Каждое появление «D:» (без учета регистра) было заменено на F: (новая буква диска). Я хорошо знаю файлы конфигурации, поэтому знаю, что нашел все случаи. Вышеупомянутая ошибка повторилась точно так же. Чтобы восстановить работоспособность веб-сервера, я отменил все изменения, и службы успешно запустились.
Еще немного информации, которую я собрал:
httpd.exe -k runservice
).Одна вещь у меня есть не Проверено - это попытаться переместить на новый диск только одно расположение данных и журналов, а другое оставить как есть. Я не думал, что это будет иметь значение.
... Тем не менее, я действительно не знаю, что здесь происходит. Я не могу придумать ни одной причины, по которой Apache не сможет работать как служба, просто изменив расположение файлов журналов и данных.
Буду очень признателен за любые предложения или советы по этому поводу. Я буду рад продолжить расследование в ответ на ваши предложения. Если кто-то из вас считает, что стоит попробовать переместить только один из упомянутых элементов (журналов или данных), я попробую. Точно так же, если кто-то из вас считает, что я слишком поспешно отказался от разрешений, я проведу более тщательное изучение.
Любой вклад приветствуется! Я исчерпал все свои идеи.
На следующий день, в пределах выделенного временного интервала для отключения основных функций сервера, я пошел попробовать что-то новое и у меня возникла новая мысль, которая в конечном итоге решила проблему! Детали таковы, в контексте предпринятых мною шагов.
Я начал с повторения второго подхода из исходного вопроса. Я остановил службы, повторно скопировал все файлы (чтобы уловить изменения за последний день) и отредактировал файлы конфигурации Apache и MySQL, чтобы они указывали на новый диск (F :). Я подтвердил, что Apache выдает ту же ошибку. Поскольку у меня уже были открыты файлы конфигурации, я решил попробовать то, что не пробовал изначально (и действительно должен был иметь):
access.log
и error.log
), Я принудительно изменил права доступа: добавил / удалил только для чтения (на всякий случай), обеспечил, чтобы пользователь apache имел рекурсивный доступ на запись через каталоги и к самим файлам.Что я выучил: на самом деле, я не совсем уверен. Если бы я не был так тщателен с различными этапами своего расследования, я бы заподозрил проблемные дескрипторы файлов или что-то в этом роде, но я не понимаю, как это было бы возможно после перезагрузки. Однако я подтвердил ценность не слишком быстро отвергать возможности при устранении проблемы. Как я уже упоминал в вопросе, я не думал, что сегодняшнее исследование может что-то изменить, и я до сих пор не знаю, почему это произошло! Но с результатами не поспоришь.
Вывод: моя проблема решена, но я не знаю почему. Если у кого-то есть теория, поделитесь ею!
Понятия не имею, почему изменение буквы диска вызывает проблему. Но ошибка 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 успешно запустился.