我真的不知道如何在Web开发中正确执行从离线开发到实时Web服务器的部署。我主要依靠直觉,但这或多或少是我到目前为止所做的:我有一个 python 或 php 的 Web 应用程序,并将其托管在实时 Web 服务器上。我用的是离线开发版本,源码在svn下。
现在,当我开发离线版本时,我将执行对 svn 的提交。当发布时间到来时,我可以:
- 将代码从离线服务器复制到实时网络服务器上的临时目录,然后将旧代码库与新代码库交换(例如,使用链接),或者...
- 让实时网络服务器在结帐 svn 上工作,然后运行 svn update。
我通常会执行第二个操作,尽管如果我必须在实时部署之前升级数据库,我通常会编写升级 sql 脚本,并首先在实时数据库上运行它们,然后结帐。
这项任务的最佳实践是什么?
我建议利用 SVN 导出而不是结帐。这样,您就不会向外界公开任何 SVN 文件。它通常还会创建更清晰的文件夹结构。
我之前在阶段和生产之间移动文件时利用过 rsync。
我的典型部署过程如下:
- 备份生产站点
- 从备份恢复到阶段服务器
- 锁定服务器,使其无法访问所有外部 IP 地址
- 将代码从存储库导出到临时文件夹(可以选择区分两个文件夹以进行小更改)
- rsyc 文件从临时文件夹到阶段服务器文件夹
- 验证只有您期望更改的文件实际上已更改。
- 将 SQL 脚本应用到数据库
- 测试升级
- 解锁网络服务器
现在,要部署到生产环境,请快进重播这些步骤。使用脚本使其变得更加容易。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)