Вопрос или проблема
Когда я запускаю apache2 из командной строки (выполняя команду, вместо сервиса), я получаю следующее:
[Чт Мар 13 12:18:05.594522 2014] [core:warn] [pid 9268] AH00111: Переменная конфигурации ${APACHE_LOCK_DIR} не определена
[Чт Мар 13 12:18:05.594732 2014] [core:warn] [pid 9268] AH00111: Переменная конфигурации ${APACHE_PID_FILE} не определена
[Чт Мар 13 12:18:05.594807 2014] [core:warn] [pid 9268] AH00111: Переменная конфигурации ${APACHE_RUN_USER} не определена
[Чт Мар 13 12:18:05.594867 2014] [core:warn] [pid 9268] AH00111: Переменная конфигурации ${APACHE_RUN_GROUP} не определена
[Чт Мар 13 12:18:05.594934 2014] [core:warn] [pid 9268] AH00111: Переменная конфигурации ${APACHE_LOG_DIR} не определена
[Чт Мар 13 12:18:05.617353 2014] [core:warn] [pid 9268] AH00111: Переменная конфигурации ${APACHE_LOG_DIR} не определена
[Чт Мар 13 12:18:05.617809 2014] [core:warn] [pid 9268] AH00111: Переменная конфигурации ${APACHE_LOG_DIR} не определена
[Чт Мар 13 12:18:05.617895 2014] [core:warn] [pid 9268] AH00111: Переменная конфигурации ${APACHE_LOG_DIR} не определена
AH00526: Ошибка синтаксиса на строке 74 в /etc/apache2/apache2.conf:
Недопустимый каталог Mutex в аргументе file:${APACHE_LOCK_DIR}
строка 74 выглядит так:
Mutex file:${APACHE_LOCK_DIR} default
Я обновил Xubuntu с 13.04 до 13.10, и на нём Apache/2.4.6.
Я думаю, вам следует использовать sudo /etc/init.d/apache2
, потому что стандартный вызов bin
не работает правильно.
Детали ниже:
На загруженной тестовой странице говорится: "Система конфигурации полностью документирована в /usr/share/doc/apache2/README.Debian.gz." – в этом файле написано: "Из-за использования переменных окружения apache2
должен быть запущен/остановлен с помощью ‘/etc/init.d/apache2’, apachectl или
apache2ctl. Прямой вызов ‘/usr/bin/apache2’ не будет работать с
стандартной конфигурацией."
На моей машине apache2ctl restart
и apachectl restart
выдают сообщение Не удалось надежно определить полное доменное имя сервера ....
, но /etc/init.d/apache2 restart
работает без вопросов.
Это ожидаемо, потому что apache2 ожидает, что некоторые переменные будут установлены в его окружении. Таким образом, правильные способы запуска apache2 это использование ваших обычных скриптов управления сервисами (service или systemctl), или apache2ctl (apachectl).
Вы должны иметь возможность запустить apache с помощью команды service:
service apache2 start
Смотрите такую же проблему и более подробный ответ по адресу https://lists.debian.org/debian-apache/2013/08/msg00053.html
Ответ или решение
Исправление ошибки "Invalid Mutex directory in argument file:${APACHE_LOCK_DIR}" в Apache2
Ошибка, которую вы наблюдаете при запуске Apache2 из командной строки, обусловлена тем, что некоторые переменные окружения не определены. В частности, ошибка указывает на то, что переменная ${APACHE_LOCK_DIR}
не инициализирована, что приводит к проблеме с конфигурацией.
Причины возникновения проблемы
Когда Apache запускается, он ожидает, что определённые переменные окружения будут установлены, поскольку они необходимы для корректной работы сервиса. При запуске Apache напрямую с использованием команды /usr/bin/apache2
эти переменные окружения могут не быть установлены должным образом. Именно этого и требует стандартная конфигурация Apache, особенно на дистрибутивах, таких как Debian и его производные, включая Xubuntu.
Среди ключевых переменных, которые следует учитывать:
${APACHE_LOCK_DIR}
– директория для файлов блокировки.${APACHE_PID_FILE}
– файл идентификатора процесса.${APACHE_RUN_USER}
– пользователь, под которым запускается Apache.${APACHE_RUN_GROUP}
– группа, к которой принадлежит пользователь.${APACHE_LOG_DIR}
– директория для логов.
Решение проблемы
Для корректного запуска Apache2 рекомендуется использовать provided system control scripts или специальные команды, такие как apache2ctl
или apachectl
.
-
Запуск через систему управления сервисами:
Используйте команду, которая позволяет управлять сервисами напрямую:sudo service apache2 start
Или, если ваша система поддерживает
systemctl
:sudo systemctl start apache2
-
Использование
apache2ctl
илиapachectl
:
Эти команды должны корректно настроить окружение перед запуском сервера:sudo apache2ctl start
-
Проверка конфигурации:
Перед тем как снова запускать сервер, может быть полезно проверить настройки Apache:sudo apache2ctl configtest
Это поможет выявить другие потенциальные ошибки в конфигурационных файлах.
Дополнительная информация
Обратите внимание, что ошибки, связанные с "Could not reliably determine the server’s fully qualified domain name" могут быть связаны с неправильной настройкой имени хоста. Убедитесь, что в вашем файле конфигурации /etc/hosts
присутствует запись для вашего имени хоста.
В случае возникновения других вопросов или проблем, вы можете обратиться к документации Apache, доступной по пути /usr/share/doc/apache2/README.Debian.gz
, которая содержит полезные сведения о конфигурации и запуске сервиса.
Заключение
Запуск Apache таким образом, как это предусмотрено стандартными системными утилитами, обеспечит корректную работу сервиса и избавит вас от большинства потенциальных ошибок конфигурации. Используйте специальные команды для управления сервисами и внимательно следите за результатами тестирования конфигурации, чтобы избежать ошибок в будущем.