0

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

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

谢谢,马克斯

4

2 回答 2

5

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

例如 :

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

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

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

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


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

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

于 2009-09-20T16:44:55.230 回答
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 手册,它应该可以回答您的大部分问题。

于 2009-09-20T17:04:01.823 回答