【发布时间】:2011-10-05 12:06:32
【问题描述】:
我刚刚开始使用 Symfony。
我使用 Git/github 作为管理项目的一种方式。我为日志和缓存设置了两个忽略,这很好。
我现在需要建立一个生产站点。目前,在这个小项目中,我在同一台服务器上开发和生产,但文件位置和数据库不同。
例如
www.example.com/mysymfonyproject_dev/ < development area
&
www.example.com/mysymfonyproject/ < Live / Production site
在服务器上它的/homes/sites/example.com/www/mysymfonyproject_dev & /home/sites/example.com/www/mysymfonyproject
所以现在我已将我的项目克隆到新的生产文件夹。
它当然会忽略日志和缓存文件夹,但现在我需要更改 database.yml 文件,并且可能需要更多以使生产区域正常工作。
处理这个问题的最佳方法是什么?
是否有其他文件我应该添加到.gitignore,可以说明该站点的版本,例如开发或生产。
或者有没有其他方法可以在不使用 git 的情况下做到这一点?
最佳做法是什么?
您可以想象,我不想在每次对生产站点执行 git push 时都更新 database.yml 文件。
更新:
我有一个开发环境。我正在寻找的是部署到生产的分步指南。我可以使用 git 来做到这一点,但例如,我该如何设置环境,以便在部署时所有设置都正确。我确实看到 database.yml 可以有不同的登台和生产设置,但是我在哪里告诉 symfony 哪个站点是什么?就像 symfony 怎么知道 www.example.com/kickboxing 是生产而 www.example.com/kickboxing_dev 是登台?
更新 2:
最后,对于我的具体要求,这似乎运作良好。
1 <?php
2
3
4 require_once(dirname(__FILE__).'/../config/ProjectConfiguration.class.php');
5
6 $theurl = explode('/', $_SERVER['PHP_SELF']);
7 $mydir = $theurl[1];
8
9
10 if ($mydir == "mysymfonyproject") //live
11 {
12 $configuration = ProjectConfiguration::getApplicationConfiguration('frontend', 'prod', false);
13 sfContext::createInstance($configuration)->dispatch();
14 }
15 else // dev
16 {
17 $configuration = ProjectConfiguration::getApplicationConfiguration('frontend', 'dev', true);
18 sfContext::createInstance($configuration)->dispatch();
19 }
我认为在您可以配置主机文件的本地机器上使用 $_SERVER['SERVER_NAME'] 会更好,例如mysymfonyproject.local 只需添加到索引文件中,然后 git 存储库就可以了,所有文件都是可移植的。
【问题讨论】:
-
Symfony 是环境感知的,你为什么不在 symfony 配置文件中设置环境?
-
我绝对可以,这就是为什么我要问这个问题,我该如何做到这一点,以及在我的设置下什么是最佳实践。
-
你看过 symfony 的“入门”指南和“symfony 的简单介绍”吗?如果您遇到任何具体问题,我会很乐意提供帮助,但您现在所问的问题在官方文档中已经解释得很清楚了。 symfony-project.org/doc/1_4
-
抱歉,我可能遗漏了一些东西,诚然,我还没有完整地阅读所有内容,但是在这两个简短的指南中,它在哪里解释了设置环境?
标签: git deployment symfony1 doctrine