Ahm*_*mad 7 php svn deployment minify
我只想讨论我们的部署策略并找出其中的差异.这个过程是这样的
- >特定版本的开发完成
- >所有开发人员将他们的文件提交到trunk
- >使用TOAD比较数据库模式并迁移更改
- >在SVN上创建一个新分支
- >使用SVN导出(删除.svn文件夹等)
- >缩小JS,CSS
- >上传到登台服务器
- >执行测试周期
- >修复分支上的错误并验证它们
- >重新缩小JS,CSS [如果需要]
- >上传到生产服务器
- >当我说上传时,它意味着通过SSH将文件上传到/ var/www/html文件夹
- >首先上传js,css,images
- >然后上传php文件
- >上传期间排除目录,如用户上传的图片等.
- >执行测试周期
- >修复错误并再次上传(可能需要重新缩小 - 几个文件)
- >验证错误
- >验证完成
- >将分支提交到svn
- >将更改合并回主干
- > commit trunk [在此部署周期中,没有人将任何文件提交到主干]
这个过程非常复杂,需要很多关注.
关于如何改进它的任何建议?
我使用了以下部署路径。它消除了您将文件重新上传到不同目录的许多需要。初始设置后,您需要做的最复杂的工作是每个测试位置中的“svn update”命令。
此设置假设您使用配置文件来指向资产、图像和 css 等目录。
所有项目都有一个配置文件,允许设置开发数据库、共享图像等的路径。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/'
?>
Run Code Online (Sandbox Code Playgroud)
生产和开发服务器上的所有测试版本只能通过受限制的 ip 访问,并放在 .htaccess 文件后面。Apache 配置为不提供 .svn 目录服务。