参数化的Apache虚拟主机

我有这样一个虚拟主机

<VirtualHost *:80> Servername www.website.com DocumentRoot /path/to/application-1.2.1/client/app/ ErrorLog /var/log/apache2/logs/application.log </VirtualHost> 

application程序的名称在每次部署新版本时都会更改,例如下一个DocumentRoot将是:

 DocumentRoot /path/to/application-1.2.2/client/app/ 

是否有可能使用通配符或类似的东西来创build虚拟主机:

 DocumentRoot /path/to/application-*/client/app/ 

这样我就不必每次部署新版本的应用程序就改变虚拟主机了。

不,你不能在那里有一个通配符。

而是使用符号链接:

 ln -s /path/to/application-1.2.2/client/app /path/to/application/client/app 

并configuration读取

 <VirtualHost *:80> Servername www.website.com DocumentRoot /path/to/application/client/app/ ErrorLog /var/log/apache2/logs/application.log </VirtualHost> 

这有额外的好处,你可以保持旧版本在需要时快速回滚。

根据您的主要configuration,您可能需要添加

  <Directory /path/to/> Options +FollowSymlinks </Directory> 

到你的configuration,以及。