对于一个正在运行的网站,请问怎么把二期开发的代码更新上去?

1.整个由二期代码完成,到发布到正式服务器的流程应该是怎样的?
2.是否都需要停止现在的网站?是的话,请问技术上怎么操作比较规范
3.如果在测试服务器上都测试过没问题,怎么更新到正式服务器比较保证最少差错?

阅读 8.7k
12 个回答

假如有十台服务器。
先把其中五台下线,把新代码发布到这五台上面。测试没问题,这五台重新上线。
把另外五台下线,发布代码到这五台服务器上面,测试成功后上线。

测试服务器跟线上服务器也不一定就完全一致,所以还是弄一个测试域名比较安全,
如果没问题那就重命名文件夹?该 web 配置?反正改版又不是家常便饭,
服务器多那就写个 shell 脚本也行,

前提,在保证在开发环境下测试通过后再进行以下步骤。
一、将网站普通用户访问定向到一个“维护中”的通知页面上,但允许开发者的IP访问正常页面以供测试。
二、如新版中存在较多数据结构变动,则必做数据库备份
三、更新代码。
四、测试问题,实际解决。如果问题与开发环境差别不大,系统表现没有异常,则恢复正常访问,升级成功。如果在生产环境发现问题不能当时解决且影响巨大,则迅速恢复数据库,回滚代码,恢复访问,升级失败。然后开发环境中复现该问题解决后再行重复以上过程。

首要条件
内网测试服务器(一般虚拟机代替)
外网二级域名测试服务器(低配置服务器只在测试时开放解析)
以上两台服务器尽力模拟生产环境服务器配置

开发阶段内网测试
发布前进行外网域名测试
在这里尽量保证除数据不同以外其他都尽量相同 包括静态文件 cdn 表结构 等等
运行你需要更新的sql语句
测试完成后发布生产环境
流程一样.

这里建议上线最好开发一个上线系统 通过系统来更新代码减少出错几率(sql还是要手动执行)
好处是可以一键回滚不耽误线上环境运行.而且可以记录操作日志

git pull

如果是大的更新,建议版本迭代。如果更新比较小直接上传也是没什么的。(个人意见)

肯定用git啊,git pull一下就更新了,賊方便。

试一下类似walle这样的代码部署工具,用git管理代码,如果出问题的话也能及时回滚

必要前提:一个线上测试版本,一个线上正式版本(个人项目另说)
二期开发的代码假定都是在本地进行完整的测试通过有的,那么先把线上代码进行 冻结 操作,然后把二期代码 push线上测试版本 进行测试(服务器的环境和本地一定会有不同,这一步骤是必要的),测试通过以后在更新到 线上正式版本

通过git diff 进行增量发布

如果业务有消息队列,最好提前关闭网站防止新消息进入,然后等消息队列任务处理完再部署代码和开启网站。

不要怂,就是干

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题