目前的情况是项目已经开始正式部署,开始上线,开始推广。而且已经部署了二十几次了,有几次是新功能部署,有几次是临时的bug修复,有几次是体验的改进。

   有几次是在部署新东西之前拷贝整个文件夹,有几次是将需要覆盖的文件重命名,前面添加一个当前的日期,甚至是时间。

   参加了几次部署,感觉手动拷贝和备份简直是噩梦,由于是线上,不是自己的机房,没有专线,带宽不够,所以速度很慢。越来越感觉到使用脚本来加快部署是多么的重要,无论是备份现有的代码,还是备份现有的数据库,还可以添加日期,为将来的版本规划提供资料。如果是界面操作,肯定会等死人的。

   目前还没有决定使用何种版本定义方式。但是觉得目前的部署还是给后续的版本规划留下了空间。目前的新功能部署,会先完整的备份现有的程序和数据库。bug修复和体验的局部改进会在现有文件前面添加一个当前日期。完整的备份其实就可以是一个新的版本,备份过几次版本号就是几,前面带有日期的单个文件备份就是小版本号。这样,等以后定了版本的定义方式,就可以用备份的文件还原没有版本规划这段产生的断层。

   在部署的同时写一些文档,做一些记录,时间,新功能是哪些,bug修复大概是什么情况,体验的改进又是哪里,要是能截一些图那就更好了。

   在windows系统上做备份和部署,那就要说一下批处理bat文件了。

   为了更好的发挥批处理的威力,先来几个约定。将内部部署和线上部署的文件夹位置和文件夹名称统一,这样在写备份脚本的时候只需要写一套就可以到处运行了。当然,也可以写成接受用户输入,然后决定需要备份的文件夹和备份的物理目录。但是感觉统一会给备份部署带来极大的便利性,至少在目前是这样的,以后再根据场景继续改进。

   现在做一些备份部署的规划,目前需要备份的内容包括IIS的文件夹,以及SQLServer数据库,还有apache的配置文件和tomcat的webapps目录以及tomcat的配置文件。部署就简单了,修改配置文件,覆盖IIS文件夹,以及tomcat文件夹,更新数据库结构,导入基础数据。

   如果是bug修复或者是局部的改进,则在需要覆盖的文件前面加上当前的日期,例如将file.txt变成2013-06-11.file.txt.bak。

   完整备份就是将文件和数据库拷贝到d盘的backup目录,按照日期+时间进行区分。


   备份计划:

      1. 停止IIS服务,备份IIS文件夹。

      2. 停止数据库服务,备份数据库。

      3. 备份apache的配置文件。

      4. 备份tomcat的配置文件。

      5. 备份tomcat的webapps目录。


   脚本就写成上面的样子就可以了。


   部署计划:

      1. 覆盖或者新加IIS文件夹。

      2. 变更数据库结构,导入基础数据。

      3. 修改apache配置文件。

      4. 修改tomcat配置文件。

      5. 覆盖或者新加tomcat文件夹。


网站目前的Alexa排名。

上线部署那些事2_部署