Конфигурационная переменная Apache2 не определена
Я установил apache2 на Ubuntu 13.10. Если я попытаюсь перезапустить его, используя
sudo /etc/init.d/apache2 restart
Я получаю это сообщение:
AH00558: apache2: не удалось надежно определить полное доменное имя сервера, используя 127.0.1.1. Установите глобальную директиву "ServerName", чтобы подавить это сообщение
Поэтому я прочитал, что я должен отредактировать httpd.conf
файл. Но, так как я не могу найти его в /etc/apache2/
папку, я попытался найти ее с помощью этой команды:
/usr/sbin/apache2 -V
Но вывод, который я получаю, таков:
[Fri Nov 29 17:35:43.942472 2013] [core:warn] [pid 14655] AH00111: Config variable ${APACHE_LOCK_DIR} is not defined
[Fri Nov 29 17:35:43.942560 2013] [core:warn] [pid 14655] AH00111: Config variable ${APACHE_PID_FILE} is not defined
[Fri Nov 29 17:35:43.942602 2013] [core:warn] [pid 14655] AH00111: Config variable ${APACHE_RUN_USER} is not defined
[Fri Nov 29 17:35:43.942613 2013] [core:warn] [pid 14655] AH00111: Config variable ${APACHE_RUN_GROUP} is not defined
[Fri Nov 29 17:35:43.942627 2013] [core:warn] [pid 14655] AH00111: Config variable ${APACHE_LOG_DIR} is not defined
[Fri Nov 29 17:35:43.947913 2013] [core:warn] [pid 14655] AH00111: Config variable ${APACHE_LOG_DIR} is not defined
[Fri Nov 29 17:35:43.948051 2013] [core:warn] [pid 14655] AH00111: Config variable ${APACHE_LOG_DIR} is not defined
[Fri Nov 29 17:35:43.948075 2013] [core:warn] [pid 14655] AH00111: Config variable ${APACHE_LOG_DIR} is not defined
AH00526: Syntax error on line 74 of /etc/apache2/apache2.conf:
Invalid Mutex directory in argument file:${APACHE_LOCK_DIR}
Строка 74 /etc/apache2/apache2.conf
это:
Mutex file:${APACHE_LOCK_DIR} default
Я посмотрел на мой /etc/apache2/envvar
файл, но я не знаю, что с ним делать.
Что я должен делать?
8 ответов
[Fri Nov 29 17:35:43.942472 2013] [core:warn] [pid 14655] AH00111: Config variable ${APACHE_LOCK_DIR} is not defined
Это сообщение отображается потому, что вы напрямую выполнили двоичный файл apache2. В Ubuntu/Debian конфигурация apache опирается на файл envvar, который только активирован.
Если вы запускаете apache с помощью скрипта init или apachectl.
Ваша первоначальная проблема заключается в том, что у вас нет правильного имени хоста (fqdn) для вашей машины.
Если вы не можете изменить это, измените ServerName
переменная в /etc/apache2/apache2.conf
в localhost
или ваше предпочтительное полное доменное имя.
Источник ваши envvars, запустив его так:
source /etc/apache2/envvars
а потом
/usr/sbin/apache2 -V
Вы должны получить:
el@apollo:/home/el$ apache2 -V
Server version: Apache/2.4.7 (Ubuntu)
Server built: Apr 3 2014 12:20:28
Server's Module Magic Number: 20120211:27
Server loaded: APR 1.5.1-dev, APR-UTIL 1.5.3
Compiled using: APR 1.5.1-dev, APR-UTIL 1.5.3
Architecture: 64-bit
Server MPM: prefork
threaded: no
forked: yes (variable process count)
Server compiled with....
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=256
-D HTTPD_ROOT="/etc/apache2"
-D SUEXEC_BIN="/usr/lib/apache2/suexec"
-D DEFAULT_PIDLOG="/var/run/apache2.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="mime.types"
-D SERVER_CONFIG_FILE="apache2.conf"
Проверьте свои /etc/apache2/envvars
для APACHE_LOCK_DIR. В моем Ubuntu 12.04 это /var/lock/apache2$SUFFIX
Будучи SUFFIX обычно пустым.
Проверьте, существует ли каталог и доступен ли для записи.
Может быть, файл envvars поставлен неправильно? Если вы посмотрите на /etc/init.d/apache2
Вы можете видеть, что это источник.
Мой (по умолчанию) /etc/apache2/envvars
:
# envvars - default environment variables for apache2ctl
# this won't be correct after changing uid
unset HOME
# for supporting multiple apache2 instances
if [ "${APACHE_CONFDIR##/etc/apache2-}" != "${APACHE_CONFDIR}" ] ; then
SUFFIX="-${APACHE_CONFDIR##/etc/apache2-}"
else
SUFFIX=
fi
# Since there is no sane way to get the parsed apache2 config in scripts, some
# settings are defined via environment variables and then used in apache2ctl,
# /etc/init.d/apache2, /etc/logrotate.d/apache2, etc.
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
export APACHE_PID_FILE=/var/run/apache2$SUFFIX.pid
export APACHE_RUN_DIR=/var/run/apache2$SUFFIX
export APACHE_LOCK_DIR=/var/lock/apache2$SUFFIX
# Only /var/log/apache2 is handled by /etc/logrotate.d/apache2.
export APACHE_LOG_DIR=/var/log/apache2$SUFFIX
## The locale used by some modules like mod_dav
export LANG=C
## Uncomment the following line to use the system default locale instead:
#. /etc/default/locale
export LANG
## The command to get the status for 'apache2ctl status'.
## Some packages providing 'www-browser' need '--dump' instead of '-dump'.
#export APACHE_LYNX='www-browser -dump'
## If you need a higher file descriptor limit, uncomment and adjust the
## following line (default is 8192):
#APACHE_ULIMIT_MAX_FILES='ulimit -n 65536'
Если ничего не работает, я бы попытался переустановить пакет (ы).
Как уже говорилось, вы должны загрузить (создать) свою среду, прежде чем запускать ее напрямую. Другой вариант - использовать:apache2ctl
например
sudo apache2ctl -S
бросить моих хозяев
TL;DR; Вы должны запустить apache2, используя то, что у вас уже есть:
sudo /etc/init.d/apache2 {start|stop|restart}
Подробно:
AH00558: apache2: не удалось надежно определить полное доменное имя сервера, используя 127.0.1.1. Установите глобальную директиву "ServerName", чтобы подавить это сообщение
Это сообщение означает, что вам нужно определить имя вашего сервера / имя домена. Это не обязательно делать для локального хоста / тестирования продукции, вам не нужно беспокоиться об этом.
Когда вы пытаетесь запустить его по-другому, используя только apache2
вы получите эти сообщения об ошибках из-за того, что было сказано ранее: переменные среды определяются, когда вы начинаете использовать скрипт по умолчанию в init.d
,
Может быть, это решит вашу проблему
sudo bash -c '. /etc/apache2/envvars ; apache2'
Вам нужно обновить DocumentRoot из /var/www/html
в /var/www
Отредактируйте файл /etc/apache2/sites-available/000-default.conf следующим образом
DocumentRoot /var/www
Это работает для меня
sudo -u root bash -c "source /etc/apache2/envvars; apache2 -V"