Как заставить Apache2 ждать инициализации сети?

Сервер только что обновлен от Squeeze до Wheezy. После перезагрузки я заметил, что apache2 не запускался, поэтому был установлен bootlogd для проверки вывода скриптов init.

Вывод ошибки из запуска apache был,

Tue Feb 3 08:49:55 2015: [....] Starting web server: apache2(99)Cannot assign requested address: make_sock: could not bind to address [0123:4567:890:abc::d]:80 Tue Feb 3 08:49:55 2015: no listening sockets available, shutting down Tue Feb 3 08:49:55 2015: Unable to open logs Tue Feb 3 08:49:55 2015: Action 'start' failed. Tue Feb 3 08:49:55 2015: The Apache error log may have more information. 

Временные метки в загрузочном выходе показывают 4s между «Настройка сетевых интерфейсов» (08:49:51) и началом apache.

Я работал над этим, вставив sleep 5 в /etc/init.d/apache2 после чего apache2 начинает нормально работать, поэтому я читаю его как медленную инициализацию сети (возможно, специфичную для сетей IPv6). Сервер работает на VMWare, и у меня есть доступ только к виртуальной машине.

  • Какие лучшие методы я могу использовать, чтобы Apache подождал несколько секунд и проверьте, что его адреса запущены и запущены до запуска?
  • Или сделать сетевой сценарий не завершен до тех пор, пока адреса не будут готовы?

One Solution collect form web for “Как заставить Apache2 ждать инициализации сети?”

Какие лучшие методы я могу использовать, чтобы Apache подождал несколько секунд и проверьте, что его адреса запущены и запущены до запуска?

Ну, метод, который я излагаю, очевидно, не решает основной проблемы. Но я считаю, что использование автономного средства мониторинга, которое может справиться с задачей «пинать Apache в службу» без необходимости взломать скрипт init.d является более стабильным решением. Ключ должен использовать monit который описывается как:

Monit – небольшая утилита с открытым исходным кодом для управления и мониторинга Unix-систем. Monit проводит автоматическое техническое обслуживание и ремонт и может выполнять значимые причинные действия в ситуациях с ошибками.

Чтобы установить его в Ubuntu, просто сделайте это; Я использую aptitude и это на Ubuntu 12.04 FWIW:

 sudo aptitude install monit 

После установки мне нравится настраивать почтовый сервер по умолчанию для отправки предупреждений. Предполагается, что на вашем сервере есть postfix или sendmail . Откройте monit управления monit с помощью вашего любимого текстового редактора; Мне нравится использовать nano :

 sudo nano /etc/monit/monitrc 

Посмотрите на set mailserver строки monit и установите эту строку и сохраните monit управления monit :

 set mailserver localhost 

Теперь проверьте и убедитесь, что установлена ​​установка monit conf.d ; Здесь monit индивидуальные задачи monit :

 ls -la /etc/monit/conf.d 

Если каким-то образом /etc/monit/conf.d не был настроен, создайте его так:

 sudo mkdir /etc/monit/conf.d 

Теперь с этим сделаем, давайте создадим monit набор Apache для monit . Сначала .pid , где .pid файл Apache .pid и убедитесь, что он установлен. Обычно это устанавливается на Ubuntu 12.04, используя установку пакета Apache по умолчанию:

 ls -la /var/run/apache2.pid 

Если этот .pid верен, давайте создадим фактический набор правил Apache с nano следующим образом:

 sudo nano /etc/monit/conf.d/apache2.conf 

И поместите этот код в этот файл и сохраните его:

 check process apache with pidfile /var/run/apache2.pid start "/etc/init.d/apache2 start" stop "/etc/init.d/apache2 stop" if failed host 127.0.0.1 port 80 with timeout 15 seconds then restart alert YourEmail@example.com only on { timeout, nonexist } 

Логика для скрипта довольно проста: набор правил monit Apache проверяет файл /var/run/apache2.pid и знает, как использовать определенные директивы init.d для start и stop логики. Магия исходит из блока if / then который в основном контролирует порт Apache 80 на localhost 127.0.0.1 и предпримет действия для восстановления Apache, если время ожидания составляет 15 секунд или более. Линия alert будет отправлять оповещения по электронной почте на указанный адрес электронной почты, если будут выполнены условия timeout или nonexist ; Это необязательно, поэтому не стесняйтесь прокомментировать это, если у вас нет необходимости заливаться оповещениями по электронной почте.

Теперь перезапустите monit :

 sudo service monit restart 

И вы можете следить за monit здесь, чтобы увидеть, как это происходит, и отлаживать его, если что-то не работает должным образом:

 sudo tail -f -n 200 /var/log/monit.log 

Поэтому, когда пыль оседает на этом сервере, у вас будет настройка monit , чтобы убедиться, что Apache запущен. Очень полезно в качестве общего «сохранить серверный сервер Apache», но в вашем случае monit может взять на себя задачу убедиться, что Apache появляется при перезагрузке / запуске, поэтому вам не нужно гадать с помощью ядра Apache init.d Скрипт, который действительно немного грязный и легко забывается в будущем во время обновления.

Также обратите внимание: я вижу, что вы привязываете Apache явно к IPv6, но этот сценарий мониторинга предполагает, что если он не может достичь 127.0.0.1 тогда он должен принять меры. Возможно, вам нужно изменить адрес localhost адреса IPv4 127.0.0.1 на эквивалент IPv6 адреса ::1 . Экспериментируйте и посмотрите, что работает.

  • Что такое «Магический пакет» для пробуждения компьютера?
  • Избегайте корпоративных заблокированных URL-адресов, когда в Cisco VPN
  • Что означает «сеть» в файле / etc / network / interfaces?
  • Метод Windows для обнаружения отравления ARP в локальной сети (LAN)?
  • Windows 7 очень медленно, когда крышка ноутбука закрыта
  • Как контролировать использование Интернета для каждого приложения
  • Как выбрать сетевой интерфейс по умолчанию для Интернета?
  • Список подключенных сетевых дисков из командной строки в текстовый файл
  • Как я могу ограничить Windows 7 только использованием локальной подсети, но заблокировать интернет
  • Я только что получил взломан?
  • Прозрачный туннель между интерфейсами на удаленных хостах
  • Как Windows 7 решает, какой маршрут нужно предпринять, если существуют 2 подключения к интернет-источнику? (Например, беспроводной и Ethernet-маршрутизатор)
  • Interesting Posts

    Почему веб-сайты не отображают свой текст в наши дни?

    Инструмент для определения файловой системы на съемных носителях

    Запросы, связанные с установочным носителем Windows 8 Upgrade

    В чем основное различие между поколениями процессоров Intel?

    Мой 3TB HD не может использовать 3TB? (Только 2)

    Как выбрать правильную область бобов?

    Лучшая практика для создания экземпляра нового флекса Android

    Будет ли мой ноутбук в порядке с этим другим зарядным устройством для ноутбука?

    Что такое отпечаток ключа SSH и как он генерируется?

    Могу ли я определить, какой процесс воспроизводит случайные звуковые сигналы в Windows 7?

    Windows 8 чрезвычайно высокий уровень использования диска и медленный IO

    Будут ли работать настольные и жесткие диски в течение 7 лет?

    Как я могу сделать переадресацию кеширования Chrome?

    Как удалить дубликаты из списка при сохранении порядка?

    Есть ли какие-либо негативные последствия отключения временной метки последнего доступа?

    Давайте будем гением компьютера.