Чому мій Apache не працює після оновлення до Ubuntu 14.04?


36
[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файлу.


3
Це не працює, оскільки у вас є помилка синтаксису в рядку 74 /etc/apache2/apache2.conf . Завантажте вміст цього файлу, щоб побачити, що не так.
Лусіо

2
Пошук в Google з вчорашнього дня
Amandeep Singh

завантажив файл за адресою: pastebin.ubuntu.com/7298873
Amandeep Singh


Чи потрібно перейти / var / www до / var / www / html ??
Амандейп Сінгх

Відповіді:


31

У мене була така проблема: причина - у файлі

/etc/apache2/sites-available/000-default.conf 

де змінився корінь:

перед оновленням = /var/www
після оновлення =/var/www/html

Тому відредагуйте, щоб змінити цей файл

sudo gedit /etc/apache2/sites-available/000-default.conf

І перезапустіть апаш

sudo service apache2 restart

Оскільки це проблема, з якою може зіткнутися ОП, це не проблема, яку він має в даний момент. У будь-якому випадку, як я пояснив у цій відповіді , я не рекомендую редагувати 000-default.confфайл.
День

Її робота працює після переходу на / var / www / html
Amandeep Singh

2
+1 Я також не міг цього зрозуміти. Ти людина!
gion_13

2
У моєму випадку у мене все ще виникає ця проблема, і htmlпідпапка вже існує, що в моєму випадку насправді не має значення, оскільки всі мої сайти використовують
VirtualHosts

4
Це не може бути відповіддю! Помилка, наведена вище, не пов’язана з DocumentRootналаштуваннями.
Reinier Post

50

Я мав цю проблему, хоча апаш працював на мене. Я просто хотів зробити швидку

$ /usr/sbin/apache2 -V

щоб знайти значення SERVER_CONFIG_FILE. Тому що це не спосіб запустити apache2 більше, він не вдається з помилками ОП. Швидкий і брудний спосіб вирішити проблему - це просто встановити обертів, які пропущені спочатку:

$ source /etc/apache2/envvars
$ /usr/sbin/apache2 -V

Це встановлює змінну APACHE_LOCK_DIR і все добре ( -D SERVER_CONFIG_FILE="apache2.conf").


1
Це працювало для мене. З тієї ж проблеми, Apache працював і працював, але запуск apache2 -Sне вдався. Все виправлено.
Twisty

Дивно. Це, здається, не працювало для мене. Це має сенс, чому він повинен хоч.
Тайлер Кромптон

@TylerCrompton - Як це вийшло з ладу? Яка помилка була?
провулок

Це не мало значення. Я все ще відчував проблему, яка була в ОП. Запуск apache2як root вирішив проблему.
Тайлер Кромптон

4
Простіша альтернатива:apache2ctl -V
Reinier Post

14

Симптоми та рішення

На багатьох веб-сайтах чи форумах з питань питань та питань, люди плутають симптоми та фактичні причини. Я щойно модернізував сервер ubuntu з 13.10 до 14.04.1 і зіткнувся з точно такими ж симптомами, які описані ОП, включаючи:
1- апаш, очевидно, не працює. 2- змінної конфігурації apache не визначено. 3- синтаксична помилка, згадана ОП.

Проблема полягає в тому, що не всі ці симптоми насправді відносяться до фактичної проблеми, і вони служать лише відволіканням тих, хто намагається допомогти.

Різні проблеми з корінням можуть спричинити заходу адміністраторів на подібні сайти приблизно з таким же описом: "Я оновив ОС, і зараз апарат не працює ..."

Одна конкретна причина

Маючи всі такі ж явні симптоми, що й ОП, мене привернуло це питання. На жаль, єдиною відповіддю, що містила дійсний натяк на справжню першопричину моєї проблеми, було оскаржено (-1), опублікований користувачем1469291 з повтором 1 !! Тому я шукав подальші інші веб-сайти, поки не знайшов чіткого пояснення проблеми (і тим самим рішення).

Наступне рішення може не вирішити справжню проблему ОП, але я впевнений, що це допоможе іншим, хто може залучати до цього питання з тих же причин, що і я.

/etc/apache2/apache2.conf містить:

# Include generic snippets of statements
IncludeOptional conf-enabled/*.conf

# Include the virtual host configurations:
IncludeOptional sites-enabled/*.conf

що означає, що завантажуватимуться лише файли конфігурації сайту в / etc / apache2 / включеному / розміщеному в .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 / кудись, переконайтеся, що відповідним чином буде змінено директиву.


1
Це хороша відповідь. Найкраще зрозуміти зміни, перш ніж поспішати та скаржитися, що все не працює як слід.
MikeNGarrett

1
Дякую за це, я не зрозумів, що перейменування файлу не видалило посилання з увімкнених сайтів.
Бенно

Це не забезпечує рішення.
Reinier Post

6

Придивившись уважно до своєї проблеми, ти просто біжиш apache2. Щоб запустити apache в Ubuntu, запустіть таку команду:

sudo apache2ctl start

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

Скрипт apache2ctl буде завантажувати змінні (і робити якісь інші речі, а також, коли потрібно), перш ніж запустити apache з apache2 -k start.


1
#sudo apache2ctl start httpd (pid 1390) вже працює
Amandeep Singh

То яка проблема у вас виникає тоді?
День

@AmandeepSingh: спробуйте sudo apache2ctl restartзамість цього.
scheffield

1
@scheffield кілька разів пробував цю команду. Проблема сталася через зміну місця розташування кореневої папки в новій версії Apache з / var / www в / var / www / html. Я перемістив усі файли в підпапку / html і він працював.
Амандейп Сінгх

4

Редагуйте конфігурацію sudo leafpad /etc/apache2/apache2.conf:

# Include the virtual host configurations:

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

або видалити файл.


+1. Відповідь була оскаржена, але вона містила вирішення проблеми багатьох адміністраторів, які можуть відвідати це питання.
серпень

2

Августина відповідь працював для мене , коли всі мої віртуальні хости зникли після поновлення сервера від 12.04 LTS до 14.04 LTS. Я б підтримав це, якби мав це репутація.

Наступна команда додасть .confсуфікс до всіх посилань, у /etc/apache2/sites-enabledяких його ще немає:

sudo find /etc/apache2/sites-enabled -type l ! -name '*.conf' -exec rename 's/$/.conf/' {} \;

Крім того, спостерігається перехід від використання Allow from/ Deny fromсинтаксис Requireв mod_authz_host модуль ( тут посилання для документації 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/* 

1

Насправді докроот дійсно змінюється між точним та надійним від / var / www до / var / www / html. Погано, що сценарій do-release-upgrade не регресує назад docroot.

A) Або дійсне, але html є більш звичайним. CentOS впливає в цьому плані. Сторінка "це працює" зараз вже більш зріла.

Б) Вам не потрібно використовувати / var / www / html, але якщо ви робите ...

  • вам потрібно перенести вміст або його псевдонім (не рекомендується).
  • вам потрібно оновити будь-де посилання на старе місце розташування.
  • особливо сценарії резервного копіювання / відновлення / налаштування.

В) І може бути простіше будувати з нуля і мігрувати.

Г) Цей симптом виникне, якщо ви "sudo apache2 -k граціозний" вийшов із поля на Trusty, оновив чи не через те, що envvars не входить у сферу дії ?. Використовуйте натомість "sudo apache2ctl start / stop / restart".


0

У моєму випадку:

  • htmlвкладена в/var/www/ уже існував , але до сих пір я отримую повідомлення про помилку:AH00526: Syntax error on line 74 of /etc/apache2/apache2.conf
  • Я вже вирішив розмістити свої веб-сайти в корені мого користувача, наприклад, /home/{user}/sites/замість типового/var/www/html
  • Я використовую Apache 2.4.7 (Ви можете перевірити свою версію за допомогою apache2 -v)

Як я вирішив проблему за п’ять простих кроків:

  1. У /etc/apache2/apache2.confрядок 169 я додав наступне:

    <Directory /home/{user}/sites/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>
    
  2. Я переконався, що моя конфігурація Virtual Host, названа 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>
    
  3. Я перезавантажив свій сайт ( sudo a2dissite website && sudo a2ensite website) і мій сервер, і початкова помилка не стала. WOOHOO! Але з'явився новий: "AH00035: доступ до / заборонено (шлях до файлової системи" / додому / {користувач} / сайти "), оскільки в компоненті шляху відсутні дозволи на пошук". Це я вирішив на кроці 4.

  4. Нова проблема була пов’язана з дозволами, тому я просто встановив для кожного з каталогів, що ведуть до websiteпапки chmod 755. Кожен! ThehomeПапка, то {користувач} папка, папка сайтів, і навіть мій сайт папка

  5. Після оновлення мого браузера на website.devвсе завантажено прекрасно!

PS Я вже встановив website.devу своєму /etc/hostsфайлі.

Порада про бонус: Щоб перевірити дозволи певної папки, ви можете скористатися командою stat -c %a /path/to/file/or/folder. Для перевірки дозволів кожної частини каталогу використовуйте namei -m /path/to/final/folder.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.