Apache: включить режим обслуживания на всех виртуальных хостах

У меня есть сервер под управлением Apache с несколькими виртуальными хостами, например. domain1.example1.com domain2.example1.com и т. д. Все эти веб-приложения связаны между собой. Когда приложение обновляется; Я хочу включить режим обслуживания в apache для всех виртуальных хостов одновременно, перенаправляя на страницу централизованного обслуживания. Прямо сейчас у меня есть одна из моих конфигураций виртуального хоста:

<VirtualHost *>
  ServerAdmin [email protected]
  DocumentRoot /var/www/website
  ServerName  website.com
  ServerAlias www.website.com      

  RewriteEngine On
  RewriteCond %{DOCUMENT_ROOT}/maintenance.html -f
  RewriteCond %{REQUEST_FILENAME} !/maintenance.html
  RewriteRule ^.*$    /maintenance.html [L]
</VirtualHost>

В идеале я хочу включить режим, переименовав один файл где-нибудь на сервере, например.

mv /app/system/maintenance.disabled /app/system/maintenance.html

Возможно ли что-то подобное или это можно настроить только для каждого VirtualHost отдельно?


person ec30    schedule 11.02.2014    source источник
comment
Вы можете сделать перезапись зависимой от переменной среды… а затем установить эту переменную для активации режима обслуживания.   -  person CBroe    schedule 11.02.2014


Ответы (1)


Создайте файл с именем maintenance.conf со следующим:

RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}/maintenance.html -f
RewriteCond %{REQUEST_FILENAME} !/maintenance.html
RewriteRule ^.*$    /maintenance.html [L]

Затем настройте свои виртуальные хосты следующим образом:

<VirtualHost *>
  ServerAdmin [email protected]
  DocumentRoot /var/www/website
  ServerName  website.com
  ServerAlias www.website.com      

  Include conf/maintenance.conf
</VirtualHost>

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

В качестве альтернативы вы можете сделать maintenace.conf.disabled и maintenace.conf.enabled. Затем создайте символическую ссылку для maintenance.conf, указывающую на включенную или отключенную версию файла и отказ от apache.

Вы даже можете обернуть это в скрипт. Один называется enabled-maintence-mode.sh и disable-maintenance-mode.sh, которые будут удалять и создавать символические ссылки соответственно и перезапускать apache.

person Welsh    schedule 12.02.2014