我有一台服务器运行带有几个VirtualHost的Apache,例如domain1.example1.com domain2.example1.com等所有这些webapp都是相关的。应用程序更新时;我想同时在所有VirtualHosts的apache中启用维护模式,重定向到集中维护页面。现在我有一个虚拟主机配置:
<VirtualHost *>
ServerAdmin admin@website.com
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配置?
答案 0 :(得分:13)
创建一个名为maintenance.conf
的文件,其中包含以下内容:
RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}/maintenance.html -f
RewriteCond %{REQUEST_FILENAME} !/maintenance.html
RewriteRule ^.*$ /maintenance.html [L]
然后设置你的虚拟主题:
<VirtualHost *>
ServerAdmin admin@website.com
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。