我们需要支持少数大版本和小版本的网络服务, 所以我们决定使用类似 URL 的版本 :
http://service/ # last deployed version of service http://service/1/ # symlink that points to the last deployed major version 1.x http://service/1.2/ # symlink that points to the last deployed minor version 1.2.x
我们把所有标签存储在文件夹中, 并制作与正确版本的符号链接 :
Here the root directory for apache: lrwxr-xr-x 1 xxxx xxxx 28 May 23 15:21 1 -> /home/site/tags/20120523084844-HEAD lrwxr-xr-x 1 xxxx xxxx 28 Apr 27 15:21 1.1 -> /home/site/tags/20120427152123-HEAD lrwxr-xr-x 1 xxxx xxxx 28 May 23 08:48 1.2 -> /home/site/tags/20120523084844-HEAD lrwxr-xr-x 1 xxxx xxxx 28 May 24 16:12 2 -> /home/site/tags/20120524161232-HEAD (source code here for last deployed version) .....
这里存在一个问题, 因为我们将会在 PHP 中的 REQUEST_ URI 中拥有版本前缀, 而 Symfony 路由器不会匹配模式 。 我们如何剪切该版本前缀, 但仍然使用特定目录作为文档根?
例如,当我们向 请求
http://service/1.2/some/ handler/patten
时,将使用1.2目录的代码,PHP中的 REQUEST_URI 将 /pos/ handler/pattern