[aman@aman-Inspiron-1440:~$ apache2
[Mon Apr 21 17:36:38.019213 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_LOCK_DIR} is not defined
[Mon Apr 21 17:36:38.019345 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_PID_FILE} is not defined
[Mon Apr 21 17:36:38.019370 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_RUN_USER} is not defined
[Mon Apr 21 17:36:38.019385 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_RUN_GROUP} is not defined
[Mon Apr 21 17:36:38.019414 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_LOG_DIR} is not defined
[Mon Apr 21 17:36:38.028756 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_LOG_DIR} is not defined
[Mon Apr 21 17:36:38.029032 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_LOG_DIR} is not defined
[Mon Apr 21 17:36:38.029056 2014] [core:warn] [pid 4134] 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}
Это содержимое файла /etc/apache2/apache2.conf.
У меня была эта проблема, хотя apache работал на меня. Я просто хотел сделать быстрый
$ /usr/sbin/apache2 -V
, чтобы найти значение SERVER_CONFIG_FILE. Поскольку это не способ запускать apache2, он больше не работает с ошибками сообщений OP. Быстрое и грязное обходное решение - это просто установить envvars, которые отсутствуют в первую очередь:
$ source /etc/apache2/envvars
$ /usr/sbin/apache2 -V
Это устанавливает переменную APACHE_LOCK_DIR, и все хорошо (-D SERVER_CONFIG_FILE="apache2.conf").
Во многих сайтах или форумах Q & amp; A люди путают симптомы и фактические причины. Я только что обновил сервер ubuntu с 13.10 по 14.04.1 и столкнулся с теми же симптомами, описанными OP, в том числе: 1- apache, по-видимому, не работает. Неверная конфигурация конфигурации apache. 3 - синтаксическая ошибка, упомянутая OP.
Проблема заключается в том, что не все эти симптомы на самом деле актуальны для реальной проблемы, и они служат лишь отвлечением тех, кто прилагает все усилия, чтобы помочь.
Различные проблемы с корнями могут привести к тому, что администраторы придут на такие сайты, как этот, примерно с одним и тем же описанием: «Я обновил ОС и теперь apache не работает ...»
Имея все те же самые очевидные симптомы, что и OP, меня привлекал этот вопрос. К сожалению, единственный ответ, который содержал правильный намек на истинную основную причину моей проблемы, был опущен (-1), отправленный пользователем1469291 с репутацией 1! Поэтому я искал другие другие веб-сайты, пока не нашел ясное объяснение проблемы (и тем самым решения).
Следующее решение может не решить реальную проблему OP, но я уверен, что это поможет другим, которых можно привлечь к этому вопросу по тем же причинам, что и я.
/etc/apache2/apache2.conf содержит:
# Include generic snippets of statements
IncludeOptional conf-enabled/*.conf
# Include the virtual host configurations:
IncludeOptional sites-enabled/*.conf
, что означает, что только файлы конфигурации сайта в файле / etc / apache2 / sites-enabled / end в .conf получат загружен. Старая символьная ссылка в этом каталоге будет проигнорирована.
Раньше это была просто поддержка сайтов / *. Вот почему все мои файлы конфигурации виртуального хоста, которые я просто назвал ww1.example.com, ww2.example.com и т. Д., Использовали, но внезапно и изначально необъяснимо перестали работать после обновления.
Итак, либо измените директиву выше и перезагрузите apache или, как и я, вручную удалите все старые символические ссылки в разрешенных сайтах /, переименуйте все файлы в доступных сайтах /, чтобы добавить суффикс .conf, а затем повторно включили каждый сайт по отдельности.
Кроме того, директива по умолчанию в apache.conf более строгая:
<Directory />
Options FollowSymLinks
AllowOverride None
Require all deny
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
Итак, если вы размещаете свои виртуальные сайты в / home / user / где-нибудь, обязательно переопределите директивы надлежащим образом.
Внимательно изучая вашу проблему, вы просто запускаете apache2. Чтобы запустить apache в Ubuntu, выполните следующую команду:
sudo apache2ctl start
Конфигурация Apache разделена на несколько файлов, один из этих файлов - переменные среды. Когда вы запускаете только apache2, эти переменные не установлены.
Скрипт apache2ctl будет загружать переменные (и делать некоторые другие вещи, когда это необходимо), прежде чем запускать apache с помощью apache2 -k start.
Измените конфигурацию: sudo leafpad /etc/apache2/apache2.conf:
# Include the virtual host configurations:
#before upgrade =
IncludeOptional sites-enabled/*
#after upgrade =
/IncludeOptional sites-enabled/*.conf
или удалите файл.
Ответ augustin работал для меня, когда все мои виртуальные хосты исчезли после обновления сервера с 12.04 LTS до 14.04 LTS.
Следующая команда добавит суффикс .conf ко всем символическим ссылкам в /etc/apache2/sites-enabled, которые еще не имеют его:
[ f1]Кроме того, произошел переход от использования синтаксиса Allow from / Deny from к Require в модуле answer (здесь ссылка для документации 2.2).
Следующая команда отредактирует общее использование Order allow, deny, а затем Allow from all вместо Require all granted:
perl -0777 -pi.bak -e 's/Order\s+allow\s*,\s*deny\s*\n\s*Allow\s+from\s+all/Require all granted/sg' /etc/apache2/sites-available/*
Фактически, docroot действительно меняется между точным и надежным из / var / www в / var / www / html. Плохо, что скрипт do-release-upgrade не регрессирует docroot.
A) Любой из них действителен, но html более условен. В этом отношении имеет значение CentOS. Страница «it works» также более зрелая.
B) Вам не нужно использовать / var / www / html, но если вы это сделаете ...
вам нужно для переноса вашего контента или его псевдонима (не рекомендуется). вам нужно обновить все, на что ссылается старое местоположение. особенно сценарии резервного копирования / восстановления / настройки.C) И может быть проще построить с нуля и мигрировать.
D) Этот симптом произойдет, если вы «sudo apache2 -k graceful» из коробки на Доверяйте, обновляйте или нет из-за того, что envvars не находятся в сфере видимости. Вместо этого используйте «sudo apache2ctl start / stop / restart».
В моем случае:
Вложенная папка html в /var/www/ уже существует, но все же я получаю ошибку: AH00526: Syntax error on line 74 of /etc/apache2/apache2.conf Я уже решил разместить свои сайты в моем корне пользователя, например. /home/{user}/sites/ вместо default /var/www/html Я использую Apache 2.4.7 (вы можете проверить свою версию с помощью apache2 -v)Как я решил проблему в пяти простых шагах:
В /etc/apache2/apache2.conf я добавил следующее после строки 169:<Directory /home/{user}/sites/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
Я убедился, что моя конфигурация виртуального хоста с именем website.conf в /etc/apache2/sites-available была скопирована из значения по умолчанию 000-default.conf и выглядела так: <VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName website.dev
ServerAlias www.website.dev
DocumentRoot /home/{user}/sites/website
</VirtualHost>
я перезагрузился мой сайт (sudo a2dissite website && sudo a2ensite website), а мой сервер и начальная ошибка исчезли. WooHoo! Но появился новый: «AH00035: доступ к / denied (путь к файловой системе / home / {user} / sites»), поскольку разрешения поиска отсутствуют на компоненте пути ». Это я решил на шаге 4. Новая проблема возникла из-за разрешений, поэтому я просто установил каждую директорию, ведущую к папке website, в chmod 755. Каждый из! Папка home, папка {user}, папка сайтов и даже папка моего веб-сайта. После обновления моего браузера на website.dev все загружено отлично! P.S. Я уже установил website.dev в файле /etc/hosts.
P.S. Чтобы проверить разрешения конкретной папки, вы можете использовать команду stat -c %a /path/to/file/or/folder. Для проверки разрешений для каждой части каталога используйте namei -m /path/to/final/folder.