我正在尝试使用 Capistrano 进行 PHP 应用程序部署。我有两个配置文件需要“编辑”,具体取决于我部署它的位置。它是数据库名称和根 url (Codeigniter) 之类的基本内容。我可以自动指定 Capistrano 编辑吗?假设我想在文件 /system/config/edit.php 中编辑以下内容:
$test = '';
// edit to
$test = 'Hello World';
谢谢,马克斯
我正在尝试使用 Capistrano 进行 PHP 应用程序部署。我有两个配置文件需要“编辑”,具体取决于我部署它的位置。它是数据库名称和根 url (Codeigniter) 之类的基本内容。我可以自动指定 Capistrano 编辑吗?假设我想在文件 /system/config/edit.php 中编辑以下内容:
$test = '';
// edit to
$test = 'Hello World';
谢谢,马克斯
在这种情况下我通常做的(即使我不使用 Capistrano)是将几个配置文件提交给源代码控制。
例如 :
config.php
用于开发机器
config.testing.php
config.staging.php
config.production.php
而在将应用程序部署到服务器时,我只需将与当前环境对应的文件复制到“ config.php
”——因为这是应用程序始终使用的文件。
这意味着我必须在构建过程中进行文件复制,是的,但是:
如果您的配置文件变得过于复杂,并且重复了很多东西,您可以考虑拥有一个始终包含的“默认”配置文件,以及仅定义依赖于环境的子配置文件。
那是什么,我之前所说的仍然有效:只需在彼此的开头包含“默认”文件。
我的 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 手册,它应该可以回答您的大部分问题。