我们使用ExpressionEngine CMS(PHP)创建的网站。对于每一个网站,我们成立了一个颠覆存储库并提交EE安装以及任何自定义模板,图片,JavaScript等所使用。包括在存储库是包含所有的环境变量和.htaccess文件该文件。

我们必须通过更新资料库的工作拷贝在开发服务器提交后,我们用它来开发。当我们准备发布,我们建立颠覆一个分支,使生产环境所需的任何变化,标记的版本号,导出资料库,把它上传到现场服务器上的一个新的目录,并将文件的符号链接到位。回滚是符号链接回到先前的释放一样简单。

的问题是,步骤,其中我们必须修改需要被用于开发和生产服务器不同的环境变量。这是这样的东西(UN)评论htaccess的规则,会重定向到错误的地方,换出谷歌地图API密钥,因为域名是不同的,运行脚本的JavaScript减少到一个模糊的文件,以保持一定的尺寸和HTTP连接下来,等

的问题是如何能这个被更自动化?我们很想得到释放过程降到最低限度。我熟悉的工具,例如Capistrano的存在和制作,但我不知道我怎么可能让他们修改所有必要的文件......你将如何组织这样的事情?这是值得花时间,当它发生一次,也许每隔几周自动化?

有帮助吗?

解决方案

一个批次的配置选项可以与由上$ _SERVER切换来处理[“HTTP_HOST”]。

例如

switch ($_SERVER['HTTP_HOST']) {
    case 'developement.domain.com':
        $api_key = "dev environment api key";
        break;
    default:
        $api_key = "live environment api key";
}

然后对的.htaccess的问题,你可以在你的虚拟主机定义使用AccessFileName指令设置备用.htaccess文件:

<VirtualHost *:80>
    ServerName sitename
    AccessFileName .htaccess-dev
</VirtualHost>

其他提示

另一种方法是,一旦分支的配置文件,到释放分支,然后将它们标记为目的地的编辑,然后用合并脚本,记得如何做一个三方合并。如果源上的配置变化,那么它可能会产生冲突,这是一件好事,因为你可能需要做的目的类似的变化。

因此,你保持两棵树会为项目的生命周期:开发和发布。随着事态的发展成熟,你将它们集成在一起了释放。你可以有第三个,QA,树为好,如果你有一个更复杂的释放过程。

当你把一个新的版本,你从工作区复制到“放”区域(如合并/集成),而不是拉品牌新的分支。如果你也希望有一个快照功能于该时间点释放树,然后在单独的分支/复印/只使用备案标签。

顺便说一句:这就是Perforce公司眼前一亮的地区之一 - 它会记住你已经合并了,并且永远不会试图合并两次

我们维持一个特定的配置目录处理这个。

所以,举例来说,如果你有不同的.htaccess和开发和生产之间的config.php文件,他们将被保持在/树干/配置/ {}环境/

我们使用ant /楠脚本来创建发布包,和脚本为每个环境的构建任务。这些任务拿起配置特定文件。

-

另一个评论表明对HTTP_POST切换。不幸的是我不能评论直接(不足够高的声望)。使用HTTP_POST确定环境配置具有潜在的安全问题,因为这个价值来自于客户端。

scroll top