我们需要支持几个主要和次要版本的 web 服务,所以我们决定在 URL 中使用这样的版本:
http://service/ # 上次部署的服务版本 http://service/1/ # 指向最后部署的主要版本 1.x 的符号链接 http://service/1.2/ # 指向最后部署的次要版本 1.2.x 的符号链接
我们将所有标签存储在文件夹中,并将符号链接到正确的版本:
这里是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 (此处为上次部署版本的源代码) ......
这里有一个问题,因为我们将在 PHP 的 REQUEST_URI 中有版本前缀,而 Symfony 路由器不会将它与模式匹配。我们怎样才能削减那个版本前缀,但仍然使用特定目录作为文档根目录?
例如,当我们向http://service/1.2/some/handler/pattern
1.2 目录中的 then 代码发出请求时,PHP 中的 REQUEST_URI 将是 /some/handler/pattern