2014-02-11 3 views
2

У меня есть сервер с Apache с несколькими VirtualHosts, например. domain1.example1.com domain2.example1.com и т. д. Все эти webapps связаны. Когда приложение обновляется; Я хочу включить режим обслуживания в apache для всех VirtualHosts в одно и то же время, перенаправляя на страницу централизованного обслуживания. Сейчас у меня есть в одном из моих виртуальных конфигураций хостов: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 отдельно?

+1

Вы можете сделать переписывание зависимым от переменной окружения ... и затем установить эту переменную для активации режима обслуживания. – CBroe

ответ

10

Создайте файл с именем 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.