部署策略,PHP+;SVN
我只想讨论一下我们的部署策略,找出其中的差异。过程是这样的 ->特定版本的开发完成 ->所有开发人员都将其文件提交到主干 ->使用TOAD比较数据库模式并迁移更改 ->在SVN上创建新分支 ->使用SVN导出(删除.SVN文件夹等) ->缩小JS、CSS ->上载到临时服务器 ->执行测试循环 ->修复分支上的错误并验证它们 ->重新缩小JS、CSS[如果需要] ->上载到生产服务器 ->当我说上传时,它意味着通过SSH将文件上传到 /var/www/html文件夹 ->首先上传js,css,图片 ->然后上传php文件 ->在上传过程中,排除用户上传图片等目录 ->执行测试循环 ->修复错误并再次上传(可能需要重新缩小-很少文件) ->验证错误 ->验证完成 ->将分支提交给svn ->将更改合并回主干 ->提交中继[在此部署周期内,没有人向中继提交任何文件] 这个过程非常复杂,需要大量的关注部署策略,PHP+;SVN,php,svn,deployment,minify,Php,Svn,Deployment,Minify,我只想讨论一下我们的部署策略,找出其中的差异。过程是这样的 ->特定版本的开发完成 ->所有开发人员都将其文件提交到主干 ->使用TOAD比较数据库模式并迁移更改 ->在SVN上创建新分支 ->使用SVN导出(删除.SVN文件夹等) ->缩小JS、CSS ->上载到临时服务器 ->执行测试循环 ->修复分支上的错误并验证它们 ->重新缩小JS、CSS[如果需要] ->上载到生产服务器 ->当我说上传时,它意味着通过SSH将文件上传到 /var/www/html文件夹 ->首先上传js,css,图
关于如何改进它有什么建议吗?如果您使用单元测试(例如Selenium),您可以使用构建工具来编写所有这些内容的脚本 如果没有,我将只编写以下步骤的脚本:
- 使用SVN导出(删除.SVN文件夹等)
- 缩小JS、CSS
- 上载到临时服务器
- 重新缩小JS、CSS[如果需要]
- 上载到生产服务器
- 当我说上传时,它意味着通过SSH将文件上传到/var/www/html文件夹
- 首先上传js,css,图片
- 然后上传php文件
- 在上传过程中,排除用户上传图片等目录
最后,标记您的发布我使用了以下部署路径。它消除了您将文件重新上载到不同目录的许多需要。在初始设置之后,您需要做的最复杂的工作是在每个测试位置执行“svn update”命令 此设置假定您使用配置文件指向资产、图像和css等目录
<?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/'
?>
上传时如何实现原子性?因为在上传过程中,网站完全有可能崩溃。。我应该上传到其他文件夹吗?然后在服务器上复制它们?该操作几乎没有优化,但可能会产生自身的问题,如设置权限等。主干只能与100%的工作分支合并。您可以在主干和当前分支之间导出已更改的文件,以创建一组要上载的文件,并让开发人员至少每天提交一次。使用架构管理器自动迁移数据库更改并在VCS中对其进行版本设置。使用持续集成服务器和Phing之类的构建工具。看看周围吧。这些话题以前已经讨论过了。是的。。我认为这种模式是有道理的,我的想法是一致的。。我们可以在办公室里安装一台svn服务器。。生产服务器和暂存服务器从主repo获取svn更新。。另外,我们已经有了这样的配置文件。。谢谢你的回复:)+1,这正是你应该做的事情!还允许跨负载平衡的服务器进行复制,只需在每个其他服务器上执行svn更新即可