svn - 如何发布Web应用程序?

标签 svn release

我真的不知道如何在 Web 开发中正确执行从离线开发到实时 Web 服务器的部署。我主要依靠直觉,但这或多或少是我到现在为止所做的:我有一个使用 python 或 php 编写的 Web 应用程序,并且我将它托管在实时网络服务器上。我使用的是离线开发版本,其源代码在 svn 下。

现在,当我开发离线版本时,我将对 svn 执行提交。当发布时间到了,我可以:

  • 将代码从离线服务器复制到实时网络服务器上的临时目录,然后将旧代码库与新代码库交换(例如,使用链接),或者...
  • 让实时网络服务器在结帐 svn 上工作,然后运行 ​​svn update。

  • 我通常会做第二个,尽管如果我必须在实时部署之前升级数据库,我通常会编写升级 sql 脚本,并首先在实时数据库上运行它们,然后结帐。

    此任务的最佳实践是什么?

    最佳答案

    我建议利用 SVN 导出而不是结帐。这样,您就不会向全世界公开任何 SVN 文件。它还通常会创建一个更清晰的文件夹结构。

    我之前在舞台和生产之间移动文件时利用过 rsync。

    我的典型部署过程如下:

  • 备份生产站点
  • 从备份还原到暂存服务器
  • 从所有外部 IP 地址锁定服务器
  • 将代码从存储库导出到临时文件夹(可选择将两个文件夹进行比较以进行小的更改)
  • 将临时文件夹中的 rsyc 文件复制到舞台服务器文件夹
  • 验证只有您希望更改的文件实际上已更改。
  • 将 SQL 脚本应用到数据库
  • 测试升级
  • 解锁网络服务器

  • 现在,要部署到生产环境,请快速重播这些步骤。使用脚本使它变得更容易。

    关于svn - 如何发布Web应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1262283/

    相关文章:

    svn - 如何添加多个 SVN Hooks

    svn diff 输出不正确的结果

    flutter :错误:由于sliding_up_panel-1.0.2,非抽象类 'RenderParagraphX'缺少这些成员的实现

    android - Google Maps 开发和发布之间的关键

    visual-c++ - dll大小(调试和发布)

    svn - 简单的 SVN 提交后 Hook ,用于将更改的文件导出到测试服务器

    svn - 如何在NetBeans中强制本地文件同步?

    svn - 寻找有关 SubVersion 最佳实践、分支和社交方面的提示

    build - 如何使用正确分发的发布 pdb 文件构建 Qt5

    .net - 以编程方式检测发布/ Debug模式 (.NET)