Php 使用Capistrano进行部署

Php 使用Capistrano进行部署,php,capistrano,Php,Capistrano,我正在尝试使用Capistrano进行PHP应用程序部署。我有两个配置文件,需要根据部署位置进行“编辑”。它是一些基本的东西,比如数据库名和根url(Codeigniter)。我可以自动指定Capistrano edit吗?假设我想在/system/config/edit.php文件中编辑以下内容: $test = ''; // edit to $test = 'Hello World'; 谢谢, Max在这种情况下(即使我不使用Capistrano),我通常会将几个配置文件提交给源代码管理

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

$test = '';
// edit to
$test = 'Hello World';
谢谢,
Max

在这种情况下(即使我不使用Capistrano),我通常会将几个配置文件提交给源代码管理

例如:

  • config.php
    用于开发机器
    • 此文件是应用程序始终使用的文件
  • config.testing.php
  • config.staging.php
  • config.production.php
在将应用程序部署到服务器时,我只需将与当前环境对应的文件复制到“
config.php
”——因为这是应用程序始终使用的文件

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

  • 这意味着不需要任何搜索和替换,这可能会中断
  • 它还意味着每个配置文件都提交给SVN(或您正在使用的任何源代码管理软件)

如果您的配置文件变得太复杂,并且重复了很多内容,您可以考虑使用一个“默认”配置文件(始终包含),以及仅定义依赖于环境的内容的子配置文件


这一点,我之前说过的仍然有效:只需在彼此开始时包含“默认”文件。

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

例如:

  • config.php
    用于开发机器
    • 此文件是应用程序始终使用的文件
  • config.testing.php
  • config.staging.php
  • config.production.php
在将应用程序部署到服务器时,我只需将与当前环境对应的文件复制到“
config.php
”——因为这是应用程序始终使用的文件

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

  • 这意味着不需要任何搜索和替换,这可能会中断
  • 它还意味着每个配置文件都提交给SVN(或您正在使用的任何源代码管理软件)

如果您的配置文件变得太复杂,并且重复了很多内容,您可以考虑使用一个“默认”配置文件(始终包含),以及仅定义依赖于环境的内容的子配置文件


这一点,我之前说过的话仍然有效:只需在彼此开始时包含“default”文件。

我的Unix is知识还不太符合要求,因此我无法获得完美的语法。但是,Capistrano允许您通过在配置中调用直接使用Unix命令行

Capistrano代码可能如下所示:

run "grep -R --files-with-matches '$test = "";' /system/config/ | xargs perl -pi~ -e 's/\$test = "";/$test = "Hello World";/'"
我会检查find-and-replace函数是否按预期工作,然后再实时实现它


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

我的Unix is知识还不是最新的,因此我无法获得适合您需要的语法。但是,Capistrano允许您通过在配置中调用直接使用Unix命令行

Capistrano代码可能如下所示:

run "grep -R --files-with-matches '$test = "";' /system/config/ | xargs perl -pi~ -e 's/\$test = "";/$test = "Hello World";/'"
我会检查find-and-replace函数是否按预期工作,然后再实时实现它


如果您需要更多帮助,我建议您查看,它可以回答您的大多数问题。

如果有查找字符串解决方案,我更喜欢它而不是查找行解决方案!如果有一个查找字符串解决方案,我更喜欢它而不是查找行解决方案!