背景:
我有很多域和子域指向我的服务器通过HTTPS(在唯一的IP)。 在根上有一个redirect,将它们redirect到基于域名第一部分的目录(遗留系统不用于使用子域)
https://foo.example.com/redirect到https://foo.example.com/foo和https://customdomain.com/redirect到https://customdomain.com/customdomain
所有这一切都很好,我很高兴。 最终这些URL不能改变。
以下是我正在寻求帮助:
目前在所有域使用的全局DocumentRoot是一个版本受控版本的符号链接,对于每个域可以是不同的( https://zap.example.com/zap将提供版本1.2.0):
foo -> /path/to/release/1.2.3 bar -> /path/to/release/1.2.3 zap -> /path/to/release/1.2.0
这意味着https://foo.example.com/foo最终将被发布到1.2.3版本。
这一切工作只是罚款。 但是我觉得使用符号链接来维护这个是很麻烦的,而且Apache可以在一个简单的configuration文件中为我处理。 然后我可以在多台服务器上同步该configuration文件。
任何人都可以提供如何我可以做到这一点的build议?
首先,如果你还没有,你需要一个域名虚拟主机的定义(可以在同一个文件,但单独的文件更清晰)。
那么从这一点来说,你不能真正的逃避符号链接的需要,但更简单的方法是将所有的虚拟主机指向一个名为current的符号链接,指向你当前的/ path / to / release / xxx
然后,当你部署一个新版本时,你只需要改变当前的符号链接,这样可以保持你的url清洁,并且更容易知道你指向的是当前版本,而不是一个名为foo的文件夹。
Vhost的例子是:
<VirtualHost *:443> ServerName foo.example.com DocumentRoot /var/www/html/foo/current .... </VirtualHost> <VirtualHost *:443> ServerName bar.example.com DocumentRoot /var/www/html/bar/current .... </VirtualHost>
在哪里现在点:
/ var / www / html / foo / current – > / var / www / html / foo / release / xxx
/ var / www / html / bar / current – > / var / www / html / bar / release / xxx
希望能帮助到你。
在你的Apacheconfiguration中这样做的方法是:
Alias /foo /path/to/release/1.2.3
但是,正如Sven在评论中提到的那样,交换configuration(然后运行Apache服务的正常重启)所需的努力水平并不比交换一些符号链接容易。
你真正需要的是像Puppet或Chef这样的configurationpipe理工具 – 这些工具可以轻松pipe理符号链接或Alias es,并且通过一个简单的中央configuration在多台服务器上应用相同的configuration。