我使用了以下部署路径。它消除了将文件重新上传到不同目录的许多需求。初始设置完成后,您需要做的最复杂的工作是在每个测试位置上执行“svn update”命令。
此设置假设您使用配置文件指向资产,图像和css等目录。
- Init存储库。始终有一个用于生产和测试结账的独特用户。这允许在紧急情况下从活动服务器返回到主干的独特提交。
- Devs开发并提交。版本标有内部版本号,以及标签为LIVE,当它们应该是项目准备好的时候。
- 签出在测试服务器上进行。如果一切都变好了。 #dev.example.com /〜test/project/
- svn更新到生产服务器上的测试目录。 #example.com /〜test/project
- svn将生产服务器上的主项目目录更新为LIVE标签。 #example.com
- 如果在步骤3到5任何异常,返回步骤2
所有项目都有一个配置文件,它允许一个设定的发展道路数据库,共享图像等。config.dist.php可以很好地作为命名模式。每个结帐然后将config.dist.php复制到config.php。这允许没有SVN冲突的许多配置。
每个配置文件通常有一些代码,如
<?php
#hopefully, your project can leave these first two constants set to '', because relative paths work for everything
define('localPath', '/home/www/projectName');
define('baseURL', 'http://example.com/~projectName');
#if you want to write everything over a shared filesystem for instance, uploads.
define('localAssetsDirectory', '/sharedFileSystem/localPath');
#if you want to include a shared assets directory
define('assetsURL', 'assets/images');
#OR if you want to host assets in one location.
define('assetsURL', 'http://assets.example.com/images/'
?>
生产和开发服务器所有的测试版本只能通过有限的IPS accessable,以及把后面的.htaccess文件。 Apache被配置为不提供.svn目录。
来源
2010-11-24 19:51:37
Tor
开发人员是否至少每天都会提交。使用模式管理器来自动化DB更改并在VCS中对其进行版本管理。使用持续集成服务器和Phing等构建工具。看看周围。这些话题已经在之前讨论过了。 – Gordon 2010-11-24 08:10:54