Завершение работы веб-сервера для обслуживания

Примечание: я новичок в этой ситуации!

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

Я хочу автоматизировать этот процесс (через cron):

  1. Отключение apache
  2. Выполните обслуживание (в течение этого времени каждый запрос должен быть перенаправлен на страницу обслуживания)
  3. Запустите Apache

В пункте 2, как мне перенаправить каждый запрос, когда apache не работает, или как люди управляют этим (автоматически)? Ценю ваши ответы.

Спасибо

3 ответа

Если вы просто хотите сделать сайты недоступными во время обслуживания и использовать один файл для каждого виртуального хоста, как Ubuntu и Debian Do (/etc/apache2/sites-available а также sites-disabled) вы можете просто отключить сайты, удалив ссылки с доступных сайтов (или переместив файлы). Вы также можете создать сайт "поймать все" и включить его, показывая "сообщение об обслуживании".

Другой вариант - использовать iptables для перенаправления всего трафика с порта http на другой порт на сервере, где вы можете запустить вторичный веб-сервер (lighttpd или nginx или что-то действительно маленькое, которое может обслуживать статические HTML-страницы). Правило будет:

iptables -t nat -A PREROUTING -p tcp -i ethX -d <server ip> –dport 80 -j DNAT –to <server ip>:<new port>

Вы также можете полностью перенаправить на другой сервер / порт.

Apache должен оставаться запущенным для обслуживания веб-сайтов, но вы можете настроить его так, чтобы он отправлял все запросы на служебную веб-страницу с помощью директивы DocumentRoot. Предполагая, что вы создаете страницу для уведомления об обслуживании внутри каталога обслуживания, она будет выглядеть следующим образом:

Нормальные операции:

DocumentRoot "/var/www/html"
#DocumentRoot "/var/www/html/maintenance"

Операции технического обслуживания: просто закомментируйте нормальное и раскомментируйте строку технического обслуживания:

#DocumentRoot "/var/www/html"
DoucmentRoot "/var/www/html/maintenance"

Затем просто перезагрузите Apache, чтобы активировать изменения: /etc/init.d/httpd reload, Когда вы закончите, просто полностью измените процесс.

Обратите внимание, что если у вас есть несколько виртуальных хостов, вам нужно будет изменить этот DocumentRoot для каждого. Может быть (возможно, есть) более простой метод - для простой настройки это то, что я делаю.

Я не могу говорить об Apache, но вот как я делаю это в IIS (который, как правило, имеет ИМХО лучший интерфейс для этого).

  • У меня есть сайт в папке (ЯВНО)
  • У меня есть другой сайт в другой папке, которая является "сайтом обслуживания".
  • Я просто меняю папки на сайте перед обслуживанием.

В IIS / ASP.NET также есть хороший механизм, при котором "файл блока" переводит весь сайт в режим обслуживания. Это можно сделать, поместив страницу "app_offline.htm" в корневую папку сайта. Негативная сторона odf заключается в том, что вы не можете проверить сайт по другому URL, пока он находится (что может быть полезно для последней внутренней проверки того, что все работает). Итак, я пошел на сайт технического обслуживания.

ИМХО самый быстрый способ - иметь отдельную папку и перенаправлять сайт.

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