【问题标题】:Deployment with Capistrano使用 Capistrano 进行部署
【发布时间】:2009-09-20 16:20:12
【问题描述】:

我正在尝试使用 Capistrano 进行 PHP 应用程序部署。我有两个配置文件需要“编辑”,具体取决于我部署它的位置。它是数据库名称和根 url (Codeigniter) 之类的基本内容。我可以自动指定 Capistrano 编辑吗?假设我想在文件 /system/config/edit.php 中编辑以下内容:

$test = '';
// edit to
$test = 'Hello World';

谢谢, 最大

【问题讨论】:

  • 如果有查找字符串解决方案,我更喜欢查找行解决方案!

标签: php capistrano


【解决方案1】:

在这种情况下我通常会做的(即使我不使用 Capistrano) 是将多个配置文件提交到源代码管理。

例如:

  • config.php 用于开发机器
    • 此文件是应用程序始终使用的文件
  • config.testing.php
  • config.staging.php
  • config.production.php

并且在将应用程序部署到服务器时,我只需将与当前环境对应的文件复制到“config.php”——因为这是应用程序始终使用的文件。

这意味着我必须在构建过程中进行文件复制,是的,但是:

  • 这意味着不需要任何可能会破坏的搜索和替换
  • 这也意味着每个配置文件都提交给 SVN(或您使用的任何源代码控制软件)


如果您的配置文件变得过于复杂,并且重复了很多东西,您可以考虑拥有一个始终包含在内的“默认”配置文件,以及只定义取决于环境的内容的子配置文件。

那是什么,我之前所说的仍然有效:只需在彼此的开头包含“默认”文件即可。

【讨论】:

    【解决方案2】:

    我的 Unix 知识还不是很全面,所以我不能完全得到适合你想要的语法。但是,Capistrano 允许您通过在配置中调用 :run_method 来直接使用 Unix 命令行。

    Capistrano 代码可能如下所示:

    run "grep -R --files-with-matches '$test = "";' /system/config/ | xargs perl -pi~ -e 's/\$test = "";/$test = "Hello World";/'"
    

    我会在实际实施之前检查该查找和替换功能是否按预期工作。

    如果您需要更多帮助,我建议您查看Capistrano Handbook,它应该可以回答您的大部分问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-13
      • 2014-01-08
      • 2016-03-29
      • 2012-10-03
      • 1970-01-01
      • 2018-09-27
      相关资源
      最近更新 更多