Сервер Apache не запускається автоматично


11

Я встановив Apache досить давно, як частина створення середовища розробки на своєму ноутбуці.

Однак, оскільки я зупинив це кілька місяців тому, він більше не запускається автоматично під час завантаження. У мене ця проблема є на ноутбуці вдома і на ноутбуці на роботі.

В обох випадках я встановив Apache в Ubuntu 10.10 кілька місяців тому, кілька тижнів використовував його без збоїв, але потім одного разу я його зупинив і тепер він більше не запускається автоматично. Я спробував виконати оновлення rc для нього вручну, але мені сказали, що сценарій init вже використовується.

Однак, запустивши / перезапустивши його вручну

sudo service apache2 start/restart

працює чудово. В обох випадках я дозволяв це робити до оновлення до 11.04, тому що я сподівався, що це буде вирішено новою версією. Але це не так! Я буду вдячний, якщо хтось може сказати мені, як знову запустити Apache автоматично.

Відповіді:


10

Спробуйте бігти

update-rc.d apache2 enable [list of run levels]

як корінь.

Ви можете зацікавити читати

man update-rc.d

1
Велике спасибі, я запустив команду (без переліку рівнів, лише за замовчуванням), і, здається, працює. Чи знаєте ви, чому, здавалося, перестали працювати? Я не спішився зі сценаріями init, я думаю, що я просто зупинив Apache з командного рядка - але я не мав наміру зупиняти його назавжди . :-)
Карстен Аггер

Я не маю жодної думки, чому це перестало працювати :) Можливо, після оновлення щось почне працювати не правильно.
ігнар

Дякую, але це не допомагає. Як би я не викликав активацію update-rc.d apache2, apache знову перестає працювати автоматично. Мені завжди доводиться запускати це вручну. Здається, немає справжніх проблем, оскільки це завжди запускається правильно, коли я це роблю вручну.
Карстен Аггер

9

Я додаю цю відповідь на основі останніх питань, з якими я стикався з тими ж симптомами.

Спочатку деякі основні дані:

  • Ubuntu використовує сценарії в /etc/init.d/папці для запуску / зупинки послуг.
  • Ubuntu використовує посилання на ті /etc/init.d/сценарії, які зберігаються у /etc/rc#.d/папках, для запуску / зупинки служб на основі "runlevel".
  • Посилання, які починаються з "S", вказують на те, що послугу потрібно запустити.
  • Символьні посилання, що починаються з «K», вказують на те, що послугу слід припинити (вбити).
  • Runlevel 1 виконує сценарії, з якими посилається зв'язок /etc/rc1.d/, використовує runlevel 2 /etc/rc2.d/тощо.
  • Типовий рівень запуску для Ubuntu - 2.
  • Установка Apache по суті працює, sudo update-rc.d apache2 defaultsщо створює відповідні символьні посилання в /etc/rc#.d/папках.

Тож здається, що на моєму сервері щось або хтось у якийсь момент побіг, sudo update-rc.d apache2 disableякий видалив усі символи "S" та замінив їх на "K". Таким чином, вбиваючи або просто не починаючи, Apache при ініціалізації будь-якого з рівнів запуску.

Моє рішення полягало лише в тому, щоб знову включити Apache:

sudo update-rc.d apache2 enable

Тепер Apache починається / зупиняється, як очікувалося, при запуску або перемиканні рівнів.

Примітка:

Варто зазначити, що просто запустити sudo update-rc.d apache2 defaultsзнову недостатньо, оскільки він бачить, що символьні посилання існують, і вважає, що вони є тим, чого потрібно. Він просто відповідає:

System start/stop links for /etc/init.d/apache2 already exist.

1
Дякую! Це було дуже цінним у вирішенні проблем з моєю конфігурацією.
reor

1
У мене є ця проблема, але це рішення, на диво, не спрацювало. Коли я запускаю, sudo update-rc.d apache2 enable defaultsвін видаляє те, що у мене є, а потім повертає його назад. У мене є K09apache2в rc0, 1 і 6, і S91apache2в rc2, rc3, rc4, rc5. service apache2 startпрацює добре, але я повинен це робити після кожного перезавантаження, оскільки він не запуститься автоматично. mysql, з іншого боку, завжди починається прекрасно.
Buttle Butkus

1
Вони виглядають правильно. Можливо, ви захочете відкрити нове запитання з деталями вашої конкретної проблеми та обов'язково включіть відповідні рядки з вашого /var/log/syslogта /var/log/apache2/error.log. Надішліть мені посилання на запитання, і я побачу, чи можу я допомогти.
Карл Вільбур

3

У цьому випадку я дізнався, чому Apache не запускається. Я не зміг знайти сліду цього в журналах запуску, лише у вихідних даних, надрукованих на екран під час завантаження.

Але ось вам: останній рядок у сценарії /etc/apache2/apache2.confне вдався.

Чому?

Він говорить:

Include sites-enabled/

Однак два сайти, які я створив, знаходяться у моєму домашньому довіднику - який зашифрований!

Отже, під час завантаження (під час запуску Apache) цих сайтів не існує, і Apache виходить з ладу і відмовляється працювати.

Рішення?

Я створив невеликий сценарій під назвою "enable_sites" і символізував його в /etc/rc0.dі /etc/rc6.d(вимкнення та перезавантаження):

#!/bin/bash

/usr/sbin/a2dissite vvsshop
/usr/sbin/a2dissite neoflex
/etc/init.d/apache2 reload

exit 0

Я також створив сценарій для повторного включення сайтів кожного разу, коли я входив у систему, і додав його як програму запуску в моїх системних налаштуваннях. Тож тепер це працює!

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


Я здивований, що ви не знайшли помилок у журналах. У минулому я виявив, що деякі помилки запуску Apache були не у файлі журналу, який я очікував, а у файлі журналу одного з моїх віртуальних хостів. Чи може це бути так?
Маріус Гедмінас

apachectl configtestсповістив би вас про відсутність дозволів на доступ до файлів, працюючи як демон.
Anuga

1

Щоб інші проблеми шукали (гуглили), переконайтеся, що якщо ви працюєте:

chkconfig |grep httpd

ти отримуєш

httpd 0: off 1: off 2: on 3: on 4: on 5: on 6: off

ще робіть:

chkconfig httpd on

(вибачте, що для ubuntu еквівалент chkconfig є update-rc.d, див. альтернативу Chkconfig для Ubuntu Server? )


0

У мене була така ж проблема, і я запускаю Ubuntu 14 на локальній програмі Vagrant. Я видалив /etc/apache2/sites-enabledкаталог і додав посилання на свій домашній каталог, який, звичайно, встановлений на мій локальний диск відповідно до конфігурацій Vagrant.

Виявляється, apache не бачив каталогу, оскільки ресурс ще не був змонтований. Я переписав своє положення про Vagrant, щоб просто скопіювати sites-enabledкаталог, а не додати симпосилання.

Я також робив так, sudo update-rc.d apache2 enableяк було запропоновано, Karl Wilburщоб бути впевненим, що Apache init увімкнено.

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