如何发布Web应用程序?

Ste*_*ini 12 svn release

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

现在,当我开发离线版本时,我将执行对svn的提交.什么时候发布,我可以:

  1. 将代码从脱机服务器复制到实时Web服务器上的临时目录,然后将旧代码库与新代码库交换(例如,使用链接),或者......
  2. 让实时网络服务器在checkout svn上工作,然后运行svn update.

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

这项任务的最佳实践是什么?

The*_*lor 10

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

在舞台和制作之间移动文件之前,我已经利用了rsync.

我的典型部署过程如下:

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

现在,要部署到生产环境,请快速重播这些步骤.使用脚本可以更轻松.

  • Web服务器过滤器的好点.不幸的是,我发现人们会经常忘记为什么事情以特定的方式设置,然后在以后改变它们以"增强安全性"或类似的东西.如果您确实发布包含SVN内容的文件夹,请确保有一个简单的程序来验证它们是否仍然被阻止.我最近遇到了由于这种问题而发布日志文件的回归.如果SVN很慢,您可以执行本地导出,然后从那里执行rsync.谢天谢地rsync很快. (2认同)