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

我听说过“部署应用程序”这句话,它比将单个更改的文件上传到服务器听起来好得多/更容易/更可靠,但我不知道从哪里开始。

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

我通过第三方托管我的应用程序,所以除FTP以外我不太了解它。 如果任何这些涉及登录到我的服务器,请解释过程。


向暂存服务器自动部署+运行测试称为持续集成。 这个想法是,如果你检查了一些打破测试的东西,你会立即得到通知。 对于PHP,您可能需要查看Xinc或phpUnderControl

你通常不想自动部署到生产。 正常的做法是编写一些可以自动执行任务的脚本,但仍然需要手动启动。 您可以使用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


    我不会推荐自动更新。 仅仅因为你的单元测试通过并不意味着你的应用程序是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?