如何开始从Subversion存储库部署PHP应用程序?
我听说过“部署应用程序”这句话,它比将单个更改的文件上传到服务器听起来好得多/更容易/更可靠,但我不知道从哪里开始。
我有一个版本控制下的Zend Framework应用程序(在Subversion存储库中)。 我如何去“部署”我的应用程序? 如果我有一个我不想覆盖的“上传”目录,该怎么办?
我通过第三方托管我的应用程序,所以除FTP以外我不太了解它。 如果任何这些涉及登录到我的服务器,请解释过程。
向暂存服务器自动部署+运行测试称为持续集成。 这个想法是,如果你检查了一些打破测试的东西,你会立即得到通知。 对于PHP,您可能需要查看Xinc或phpUnderControl
你通常不想自动部署到生产。 正常的做法是编写一些可以自动执行任务的脚本,但仍然需要手动启动。 您可以使用Phing或其他构建工具这样的框架(一种流行的选择是Capistrano),但您也可以将几个shell脚本一起拂过。 我个人更喜欢后者。
脚本本身可以做不同的事情,具体取决于您的应用程序和设置,但典型的过程是:
svn export svn://path/to/repository/tags/RELEASE_VERSION /usr/local/application/releases/TIMESTAMP
unlink /usr/local/application/current && ln -s /usr/local/application/releases/TIMESTAMP /usr/local/application/current
ln -s /usr/local/application/var /usr/local/application/releases/TIMESTAMP/var
/usr/local/application/current/scripts/migrate.php
(假设你的应用程序在/usr/local/application/current
)
我不会推荐自动更新。 仅仅因为你的单元测试通过并不意味着你的应用程序是100%的工作。 如果某人在没有任何新的单元测试的情况下检查一个随机的新功能,该功能不起作用会怎么样? 您现有的单元测试可能会通过,但该功能可能会被破坏。 你的用户可能会看到一些已经完成的事情。 借助自动检测功能进行自动部署,您可能会注意到几个小时之后,如果某件事情不应该发生,它就会生存下来。
总之,如果你真的想要自动部署,那就不那么困难了。 你需要一个后登记挂钩,而且真正的步骤是:
1)从最新的签入进行导出2)将导出上传到生产服务器3)解压/配置新上传的导出
我总是手动执行最后一个步骤。 通常它就像SVN导出,压缩,上传,解压缩,配置一样简单,最后两步我只是将几个bash命令混合在一起执行。 然后,我换出新的根目录应用程序目录,确保我保留原来的目录作为备份,这很好。
如果您有信心在自动上线之前发现错误,那么您可以考虑自动执行该过程。 尽管如此,它给了我一些棘手的问题。
这里有一篇关于使用Subversion来部署Web项目的优秀文章 - 它回答了您的许多问题。
http://athleticsnyc.com/blog/entry/on-using-subversion-for-web-projects
链接地址: http://www.djcxy.com/p/37523.html上一篇: How to get started deploying PHP applications from a subversion repository?
下一篇: How to edit log message already committed in Subversion?