Почему мой Apache не работает после обновления до Ubuntu 14.04?

[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.

1
задан 21 April 2014 в 17:29

7 ответов

У меня была эта проблема, хотя 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").

47
ответ дан 24 May 2018 в 09:06
  • 1
    Это сработало для меня. Такая же проблема, Apache работает и работает, но запуск apache2 -S не удался. Все исправлено. – Twisty 16 March 2016 в 01:26
  • 2
    Странный. Кажется, это не работало для меня. Имеет смысл, почему это должно . – Tyler Crompton 19 May 2016 в 01:53
  • 3
    @TylerCrompton - Как это случилось? Какая ошибка? – lane 19 May 2016 в 10:06
  • 4
    Это не имело никакого значения. Я все еще испытывал проблему, которую имел ОП. Однако запуск apache2 в корне исправил проблему. – Tyler Crompton 19 May 2016 в 10:11
  • 5
    Более простая альтернатива: apache2ctl -V – Reinier Post 16 June 2016 в 22:25

Симптомы и решение

Во многих сайтах или форумах Q & amp; A люди путают симптомы и фактические причины. Я только что обновил сервер ubuntu с 13.10 по 14.04.1 и столкнулся с теми же симптомами, описанными OP, в том числе: 1- apache, по-видимому, не работает. Неверная конфигурация конфигурации apache. 3 - синтаксическая ошибка, упомянутая OP.

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

Различные проблемы с корнями могут привести к тому, что администраторы придут на такие сайты, как этот, примерно с одним и тем же описанием: «Я обновил ОС и теперь apache не работает ...»

cause

Имея все те же самые очевидные симптомы, что и 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 / где-нибудь, обязательно переопределите директивы надлежащим образом.

14
ответ дан 24 May 2018 в 09:06
  • 1
    Это хороший ответ. Лучше всего понять изменения, прежде чем спешить и жалуться, что все не так. – MikeNGarrett 25 September 2014 в 03:29
  • 2
    Спасибо за это, я не понимал, что переименование файла не удаляет символическую ссылку с сайтов. – Benno 1 January 2015 в 06:28
  • 3
    Это не дает решения. – Reinier Post 16 June 2016 в 22:26

Внимательно изучая вашу проблему, вы просто запускаете apache2. Чтобы запустить apache в Ubuntu, выполните следующую команду:

sudo apache2ctl start

Конфигурация Apache разделена на несколько файлов, один из этих файлов - переменные среды. Когда вы запускаете только apache2, эти переменные не установлены.

Скрипт apache2ctl будет загружать переменные (и делать некоторые другие вещи, когда это необходимо), прежде чем запускать apache с помощью apache2 -k start.

6
ответ дан 24 May 2018 в 09:06
  • 1
    #sudo apache2ctl запустить httpd (pid 1390) уже запущен – Amandeep Singh 21 April 2014 в 17:43
  • 2
    Так в чем же проблема, с которой вы сталкиваетесь? – Dan 21 April 2014 в 17:45
  • 3
    @AmandeepSingh: попробуйте sudo apache2ctl restart. – scheffield 7 July 2014 в 15:20
  • 4
    @scheffield Несколько раз пробовал эту команду. Проблема связана с изменением местоположения корневой папки в новой версии Apache из / var / www в / var / www / html. Я переместил все файлы в подпапку / html & amp; это сработало. – Amandeep Singh 9 July 2014 в 08:44

Измените конфигурацию: sudo leafpad /etc/apache2/apache2.conf:

# Include the virtual host configurations:

#before upgrade = 
IncludeOptional sites-enabled/*
#after upgrade = 
/IncludeOptional sites-enabled/*.conf

или удалите файл.

4
ответ дан 24 May 2018 в 09:06
  • 1
    +1. Ответ был подавлен, но в нем было решение проблемы многих администраторов, которые могут посетить этот вопрос. – augustin 17 September 2014 в 15:50

Ответ 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/* 
2
ответ дан 24 May 2018 в 09:06

Фактически, 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».

1
ответ дан 24 May 2018 в 09:06

В моем случае:

Вложенная папка 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.

0
ответ дан 24 May 2018 в 09:06

Другие вопросы по тегам:

Похожие вопросы: