天博体育app_天博综合app-首页
|
|
|
|
|
|
|
|
|
最新提示:
 向党说说心里话-山西省小浪底引黄工程建设管理局  06-28  从马克思主义文艺理论培训中获益-山西省小浪底引黄工程建设管理局  06-24  水闸工程规模 界定-山西省小浪底引黄工程建设管理局  06-15  永远跟党走“四下乡服务”在西平古镇-山西省小浪底引黄工程建设管理局  06-15  4个涉水监督举报电话整合并入12314平台-山西省小浪底引黄工程建设管理局  06-15
   热点文章
  首页
  图片中心
  战略发展
  中心新闻
  办事指南
  表格下载
  水利要闻
  时政要闻
  走进小浪底
天博体育app_天博综合app-首页 > 时政要闻 > 文章内容
简单几步 优化网站的发布流程-山西省小浪底引黄工程建设管理局
时间:2021-06-30 07:21 来源:山西省小浪底引黄工程建设管理局 作者:baidu.com 点击:

“下班了,走不走?”   “你先走吧,今晚上线。。。”      “。。。。”

上线又是上线,上线这个大问题,几乎每个程序员每天都会执行很多次的机械操作。测试环境、仿真环境,预上线环境,生产环境;互联网思维的“快速迭代”,“小步快跑”;强调用户体验 的快速用户反馈响应 等这些大环境,再到开发时间仓促、开发人员的配合情况、测试的严格程度、线下环境线上环境的差异等等因素,小到页面文字的修改,大到性能问题、架构问题的大幅调整,就算是生产环境,都不得不无时无刻面对着强大的上线压力。

那么我们是怎么上线呢?

1,借助VS的发布网站发布到本地;

2,从tfs里查看,从上次发布之后开发人员签入的历史记录,识别出需要更新哪个dll、哪个页面或view、样式、脚本等,按网站的目录结构制作一个上线的增量更新包;

3,如果有配置修改,复制一个线上的web.config到更新包,再加上或修改相应的配置;如果有文件压缩任务的,执行压缩;等等的修改完善增量包使之符合上线要求;

4,找一个合适的时机覆盖线上网站目录,如果有多台实际服务器,就执行多次;或者你们有跳板机,并且有相应的文件的同步机制;再或者先更新预上线环境,测试之后,线上直接切换站点到预上线。

好,一次上线完成了。这只是我正在经历并且一直在重复的上线流程,当然其中会经过多个环境的测试不说了,熟练之后整个上线过程可以在10几分钟内完成。并且我要告诉你的是,所有的线上服务器,我们都是上一台测试一台没有大问题之后再上另一台。可以说这个过程虽然麻烦点,但基本做到无痛更新,也算是稳定高效的,^_^ 。。。

当然上面说的最见的小幅更新或打补丁或增加新功能,有时候你会碰到破坏式的更新,需要数据库的变动并且修改不能兼容现在的生产环境,那么恭喜你,发个网站公告,高挂休战牌,找个半夜,速度更新吧,而网站更新流程基本和上边差不多。

有什么不妥吗

如果以目的为衡量,流程完全可以啊;但是,整个流程各个步骤全手动,全手动,小浪底天气,全手动啊,最不靠谱的就是手动,常言说:常在河边走,哪有不手抖;手抖把线上数据给全删了,手抖覆盖错网站目录了。。。;怎么避免手抖啊,健身。。。来罐红牛。。。C,怎么办,好,用工具替代。

如何改进1,静态文件的处理自动化

专职做前端的都会了解grunt或gulp,这些工具把前端发布的压缩、合并、模糊等全都以代码的方式做到流程化、自动化,看得让VS开发者着急啊。

令人欣喜的是,VS2015已经做了足够工作,加入了任务管理器,让我们在发布过程中方便的加入自己的逻辑;并且可以集成grunt、gulp、npm、bower等让我们以更现代的方式管理前端依赖、流程化、自动化;typescript、less等也有了更完美的使用方式。不得不说,vs2015在开放性这块进步太大了,强力推荐有条件的速度升级啊。想了解15的看下这个:

15之前如何完成静态文件的自动化呢?这里推荐一个插件:Web Essentials,安装完成后,在相应文件夹上菜单上选择相应操作执行一次压缩操作生成压缩文件,之后每次编辑文件,保存时就会自动执行压缩操作,你所要做的就是加一个配置:让生产环境使用压缩或合并之后的文件。

说到配置,如何避免频繁的配置修改呢?避免上线时的手工修改配置呢?

2,Web.config 转换

你是否对网站web.config下边的Web.Debug.config 和 Web.Release.config 产生过兴趣?他们是什么作用,嗯,我知道,无非就是debug发布模式下,会使用Web.Debug.config,相应的release发布模式下使用Web.Release.config。哈哈,恭喜你,答错了。。。

我们知道web.config是一个XML格式的配置文件,而web.xxx.config也是一个XML文件,它不是配置,而是对web.config的配置的转换:它定义的内容都是对web.config里配置节点的执行一个匹配和转换的操作。

例如:我们在web.config中定义静态文件后缀的配置:

<add key="StaticFileType" value=""/>

配置为空,这样表示使用原始文件。

而在web.release.config中:

<add key="StaticFileType" value=".min" xdt:Locator="Match(key)" xdt:Transform="Replace"/>

这样,我们在release模式下发布的网站,配置的值就会是 .min ,这样就是我们在生产环境下使用的静态文件的后缀。

更详细的转换语法描述:https://msdn.microsoft.com/zh-cn/library/dd465326(VS.100).aspx

推而广之,我们通过这种方式,我们在开发时就做好 web.xxx.config,保证release模式下发布出来的配置一定是不经过任何人为修改就可以直接覆盖线上环境的的配置文件。

这样,我们就能保证release发布出来的网站包,直接就是可以覆盖线上目录的网站包。

但是我们怎么可能每次都全量更新啊,对我们要出增量包。

3,自动打出增量更新包

上文描述的手动打增量更新包的方式,费时费力又容易出错,其实这个步骤是最机械重复又没有意义的操作,但是我们就是重复并且还会一直重复,哎。怎么自动打增量包呢?确切的说,我也没有方法。

推荐有兴趣的看下这篇文章:

有毅力的同学可以研究下,但是想通过另外一个方式解决,大概思路就是:用新的网站发布包和上一次的网站发布包比较,把新包里与旧包里不一样的文件按原有目录形成一个增量更新包。

通过一痛猛找,发现在现有的工具:能做到两个文件夹的比较,并且列出不一致的文件,但是没有找到能把不一样的文件自动按原有目录结构形成增量包的功能。怎么办,自己动手,程序员做这个小工具还不简单吗,最近了解了下window下的shell,powershell,就写一个小脚本。

脚本源码:https://github.com/fengzhbo/MySampleCode/blob/master/Code.PS/deploy.ps1

虽说是用来打增量包,其实可以用来比较任意两个文件夹,然后按原来的目录结构开成一个差异包。有兴趣的可以使用,修改最下边的几个配置参数就能使用,当然并没有严格测试,欢迎踊跃测试,提意见,提bug,提交代码。

说到powershell,写惯了正规的C#代码,写ps代码,简直是受虐,几乎要颠覆所有对语言的正常理解。但好在灵活,并且功能强大(能使用.net的所有功能),有兴趣的同学可以了解下,推荐两个网址:https://technet.microsoft.com/en-us/library/bb978526.aspx,。

好,增量包也出来了,该覆盖了,接下来

4,减少应用程序域重启次数

(责任编辑:小浪底)