如何从subversion存储库开始部署PHP应用程序?

And*_*rew 24 php svn deployment zend-framework setup-deployment

我听过"部署应用程序"这个短语比将个别更改的文件上传到服务器听起来好多了/更容易/更可靠,但我不知道从哪里开始.

我有一个受版本控制的Zend Framework应用程序(在Subversion存储库中).如何"部署"我的应用程序?如果我有一个"上传"目录,我不想覆盖,该怎么办?

我通过第三方托管我的应用程序,所以除了FTP之外我不太了解.如果其中任何一项涉及登录我的服务器,请解释该过程.

tro*_*skn 21

自动部署+运行测试到登台服务器称为持续集成.我们的想法是,如果你签入了破坏测试的东西,你会立即得到通知.对于PHP,您可能需要查看XincphpUnderControl

您通常希望自动部署到生产.正常的做法是编写一些自动执行任务的脚本,但仍需要手动启动.您可以使用诸如Phing或其他构建工具之类的框架(一种流行的选择是Capistrano),但您也可以将几个shell脚本放在一起.我个人更喜欢后者.

脚本本身可以执行不同的操作,具体取决于您的应用程序和设置,但典型的过程是:

  • ssh到生产服务器.其余命令通过ssh在生产服务器上运行.
  • svn export svn://path/to/repository/tags/RELEASE_VERSION /usr/local/application/releases/TIMESTAMP
  • 停止服务(Apache,守护进程)
  • 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)


zom*_*bat 7

我不建议自动更新.仅仅因为您的单元测试通过并不意味着您的应用程序100%正常工作.如果有人在没有任何新单元测试的情况下检查随机新功能并且该功能不起作用怎么办?您现有的单元测试可能会通过,但无论如何都可能会破坏该功能.您的用户可能会看到一半已完成的事情.通过办理登机手续的自动部署,您可能不会注意到几个小时内是否有不可用的内容.

无论如何,如果你真的想要自动部署就不会那么困难了.你需要一个post-check-in hook,实际上步骤是:

1)从最新的登记处导出2)上传导出到生产服务器3)解压缩/配置新上传的导出

我总是手动执行最后的步骤.通常它就像SVN导出,压缩,上传,解压缩,配置一样简单,最后两个步骤我只是将几个bash命令混合起来执行.然后我将新的应用程序目录替换为新应用程序目录,确保我将旧的应用程序目录作为备份保留,并且最好去.

如果您对自己在自动上线之前捕获错误的能力充满信心,那么您可以考虑自动执行该过程.它给了我jibbly-jibblies但是.

  • 我同意您关于自动更新的建议.但是,我会通过一些自动过程替换您的手动更新过程.步骤越少,出错的可能性就越小.我们每天进行十几次部署,并尽可能地自动化以减少错误.我可以为此推荐Webistrano,它主要是您的步骤,但是自动且更加灵活.如果您的需求更简单,使用rsync的脚本可能会很好. (2认同)

Jam*_*ore 5

这是一篇关于使用Subversion部署Web项目的优秀文章 - 它回答了您的许多问题.

http://athleticsnyc.com/blog/entry/on-using-subversion-for-web-projects