Apache:在所有虚拟主机上启用维护模式

问题描述 投票:4回答:1

我有一台服务器运行带有几个VirtualHost的Apache,例如domain1.example1.com domain2.example1.com等所有这些webapp都是相关的。应用程序更新时;我想同时在所有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单独配置?

apache virtualhost maintenance
1个回答
13
投票

创建一个名为maintenance.conf的文件,其中包含以下内容:

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

然后设置你的vhosts,如:

<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.disabledmaintenace.conf.enabled。然后为maintenance.conf创建一个符号链接,指向该文件的启用或禁用版本并退回apache。

你甚至可以在脚本中包装它。一个叫enabled-maintence-mode.shdisable-maintenance-mode.sh,它们将分别删除和创建符号链接并重新启动apache。

© www.soinside.com 2019 - 2024. All rights reserved.