php - 在从 SVN 部署期间维护开发环境和实时环境之间的配置差异

标签 php svn configuration makefile release-management

我们使用 ExpressionEngine CMS (php) 创建网站。对于每个站点,我们都设置了一个 subversion 存储库并提交了 EE 安装以及使用的任何自定义模板、图像、javascript 等。存储库中包含包含所有环境变量和 .htaccess 文件的文件。

我们有一个开发服务器,其中包含我们用于开发的通过提交后更新的存储库的工作副本。当我们准备好发布时,我们在 subversion 中创建一个分支,进行生产环境所需的任何更改,标记发布号,导出存储库,将其上传到实时服务器上的新目录,并将文件符号链接(symbolic link)到位。回滚就像符号链接(symbolic link)回到以前的版本一样简单。

问题是我们必须修改开发和生产服务器需要不同的环境变量的那一步。这就像(取消)评论 htaccess 规则会重定向到错误的地方,因为域不同而换掉 google map API key ,运行脚本将 javascript 最小化到一个混淆文件中以保持大小和 http 连接减少,等等.

问题是如何才能更加自动化?我们很乐意将发布程序降至最低限度。我熟悉 Capistrano 和 Make 等工具的存在,但我不确定如何让它们修改所有必要的文件......你将如何组织这样的事情?当它可能每两周发生一次时,是否值得花时间实现自动化?

最佳答案

许多配置选项可以通过打开 $_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>

关于php - 在从 SVN 部署期间维护开发环境和实时环境之间的配置差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/922411/

相关文章:

gradle - 在另一个任务中的一个任务的配置阶段中设置属性

c# - 如何扩展 .Net 中的内置配置提供程序以添加自定义存储?

macos - SVN 1.8.4 libserf-1.1.3.0.dylib

php - jQuery Ajax 第二次提交发送两次,第三次提交发送三次

php - MySQL插入多个数据库-发出整个代码

php - Yii 2 不从 mysql 数据库渲染表情符号

jenkins - SonarQube 不能怪文件

svn - 将文件夹从一个 SVN 存储库移动到另一个

php - 安装 Cakephp 调试套件

php - 从数据库中获取一行并替换其中的一些内容