与Capistrano一起部署

时间:2009-09-20 16:20:12

标签: php capistrano

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

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

谢谢, 最大

2 个答案:

答案 0 :(得分:5)

我在这种情况下通常做的事情(即使我不使用Capistrano)是将几个配置文件提交给源代码控制。

例如:

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

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

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

  • 这意味着不需要任何搜索和替换,可以打破
  • 它还意味着每个配置文件都被提交到SVN (或您正在使用的任何源控制软件)


如果你的配置文件变得太复杂,并且复制很多东西,你可以考虑使用一个“默认”配置文件,它总是包含在内,而子配置文件只定义依赖于环境的内容。

那是什么,我之前说过的话仍然存在:只是在彼此的开头包含“默认”文件。

答案 1 :(得分:0)

我的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,它应该回答您的大部分问题。