自动发布-asp.net自动发布、IIS站点自动发布(集成SLB、配置管理、Jenkins)
PS:概要、背景、结语都是日常“装X”,可以跳过直接看自动发布
环境:阿里云SLB、阿里云ECS、IIS7.0、Jenkins、Spring.Net
概要
公司一个项目从无到有,不仅仅是系统从无到有的过程,也是项目管理流程、运维流程逐步完善的过程,今天主要说说运维方面的,从人肉运维到自动运维,我们搭建了运维平台来实现。运维平台在很多人理解应该是运维来做,不过就像前面文章说过,在很多公司,资源有限的情况下,研发往往是“万能”的,需要承担更多的责任,本文我们主要讲关于Asp.Net自动发布这一块。
背景
1、新进入一个公司,往往系统已经初具规模,已有成型的框架,但往往由于前期为了赶项目进度或者系统架构规划问题,随着系统功能的不断增加,一些运维方面的问题会越来越突显出来,如:配置管理混乱、站点特殊内容太多且无记录、发布纯人工操作等,发布风险很高,每次发布都提心吊胆,如临大敌;
2、作为一名想“偷懒”的程序员,自从走向管理岗,就开始为运维自动化的投入争取资源,公司的运维平台搭建基本都是自己做产品经理或者研发。目前我们实现了日志管理、调度管理、站点管理、ECS管理、负载均衡管理、配置管理(目前只是实现了配置分离,下一步会实现配置动态生效)、发布申请管理、自动发布管理、MQ消息队列管理,监控主要是用阿里云自带的,业务异常监控应该算目前比较缺失的一块,以及其他很多都需要完善,但对公司最紧急的基本都已经实现;
3、在当前Java风行,其他新兴语言慢慢崛起,并且微软自身也推出.Net Core的情况下,.Net的市场份额越来越小,很多公司都开始转Java,包括我目前所在的公司新系统也开始使用Java了。但就算转Java,以前的系统还是需要维护,对于公司来说花最小的代价达到优化的效果就行,转语言不是目的。对于程序员来说,掌握哪一种编程语言本身并不重要,更重要的是编程的思想、系统架构的思维,编程语言只是一种表现形式(作为一名.Net的老兵,最近在准备做Java的容器化,优化Java架构)。
自动发布
从我加入公司到现在,关于.Net的IIS站点发布大概经历了以下3个阶段:一、手工发布;二、半自动发布;三、系统自动发布;
一、手工发布

该阶段缺点:
1、运维人员需要记住相应的代码路径、解决方案、项目名称,站点新建没有标准,导致不同的站点有一些特殊的设置或操作,导致新入职的运维人员需要很长时间才能上手;
2、需要登录每台服务器修改配置,以及切换IIS站点路径,重启站点,且无法验证是否发布正常,发布工作量巨大,发布效率低,发布风险很高,把问题的发现抛给了用户,每次发布都提心吊胆;
3、没有统一的平台管理各类信息,导致大部分信息都记录在相应的研发或运维人员脑袋里,每次关键人员离职都是“大地震”,信息孤岛严重;
4、大部分工作都压在运维人员身上,且大多数时间都在做一些简单重复的工作,不利于运维人员自身的成长,难以留存人员。
二、半自动发布

该阶段优化内容:
1、制定IIS站点规范(如:配置与应用分离、增加发布成功测试页、规定特殊项的范围);
2、运维平台实现IIS站点信息及配置管理(维护站点基本信息、配置信息、特殊项);
3、运维平台实现阿里云SLB的管理(同步基本信息、添加/移除/刷新ECS状态);
4、搭建Jenkins持续集成平台,实现预发布环境的站点发布(获取最新代码、生成打包、上传服务器、覆盖文件、重启站点)。
该阶段缺点:
1、投产站点发布还是需要运维人员登录到每台服务器里面进行操作,发布工作量大,且人工发布虽然有信息记录,但因为不同运维人员的能力不同,导致发布风险还是很高;
2、发布准备以及操作发布的时间都比较长,导致发布的前置时间比较长,不利于系统的快速迭代。
三、系统自动发布

该阶段优化内容:
1、利于IIS的FTP实现发布文件分发到IIS站点的各服务器,并复制到相应的站点目录下;
2、利于C#类库Microsoft.Web.Administration.dll,实现对IIS的站点管理,如:切换路径、站点重启等,相关代码见:IIS站点管理-IIS站点以管理员身份或指定用户运行;
3、实现IIS站点发布的批量操作,如:从SLB移除ECS、发布配置、发布站点、浏览测试页、从SLB添加ECS、直至成功标记为已发布。
自动发布相关截图:
1、创建发布申请:

2、发布操作页面

3、单个站点一键发布

4、批量发布组1同时移除组2

结语
.Net的份额确实是在逐年下降,微软自己开始主推.Net Core,不过对于公司已有的系统,有些并不一定要去花时间重构,能花最小的代价达到能接受的效果对公司才是最划算的;以上很多只是提供了思路,以及关键的实现,如果大家真的需要应用到自己公司的系统,还是需要结合自己公司的情况进行处理。
自动发布-asp.net自动发布、IIS站点自动发布(集成SLB、配置管理、Jenkins)的更多相关文章
- 发布ASP.NET网站到IIS
1. 在Web项目中点击发布网站,如图1所示 图1 2. 选择要发布的路径——>“确定”,如果项目显示发布成功就可以了.如图2所示 图2 3. 打 ...
- 使用PowerShell自动部署ASP.NetCore程序到IIS
Windows PowerShell 是一种命令行外壳程序和脚本环境,使命令行用户和脚本编写者可以利用 .NET Framework的强大功能.有关于更多PowerShell的信息,可参阅百度词条 接 ...
- tfs 2013 利用 web deploy 完成asp.net站点自动发布
课题起因: 目前我们团队使用visual studio 2013开发asp.net项目, 使用tfs2013 做源码管理, 每天早上手动发布项目文件包,复制到测试服务器的站点文件夹下覆盖老文件,用此方 ...
- ASP.NET Core部署系列一:发布到IIS上
前言: 当构建一个ASP.NET Core应用程序并且计划将其运行在IIS中时,你会发现Core应用程序和之前版本的ASP.NET程序在IIS中的运行方式是完全不一样的.与ASP.NET时代不同,AS ...
- Win7 下IIS(7.5)发布 ASP.NET MVC
操作系统 Win 7 旗舰版 开发工具 VS2015 使用技术 IIS7.5 + MVC4.0 一 . 在IIS上部署程序后出现错误-当前标识(NT AUTHORITY/NETWORK SERVICE ...
- Asp.net Core 1.0.1升级到Asp.net Core 1.1.0 Preview版本发布到Windows Server2008 R2 IIS中的各种坑
Asp.net Core 1.0.1升级到Asp.net Core 1.1.0后,程序无法运行了 解决方案:在project.json中加入runtime节点 "runtimes" ...
- 发布 asp.net网站 到本地IIS
http://blog.csdn.net/jiben2qingshan/article/details/9249139 概述 网站是由一个个页面组成的,是万维网具体的变现形式,关于万维网,网页的方面的 ...
- IIS 上发布ASP.NET5
原文 http://docs.asp.net/en/latest/publishing/iis.html 1.安装HTTP Platform Handler ,这个是必需的,不然无法通过IIS访问AS ...
- [ASP.net教程]IIS服务器 远程发布(Web Deploy)配置
asp.net 网站有三种常用的发布方式:分别是拷贝开发机上发布好的文件到服务器硬盘上.打包成安装程序到服务器上安装.通过Visual Studio 开发平台远程发布到服务器. 在asp.net网站的 ...
随机推荐
- java面试题NIO与OIO的区别
面向流与面向缓冲 Java NIO和IO之间第一个最大的区别是,IO是面向流的,NIO是面向缓冲区的. Java IO面向流意味着每次从流中读一个或多个字节,直至读取所有字节,它们没有被缓存在任何地方 ...
- 三个Python自动化测试高效工具的使用总结
##Python语言的特点 Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号 ...
- antd踩坑:日期选择器的可选日期控制的问题
有一个需求是日期选择需要加一个日期限制. 于是我兴高采烈的加上去了. // 日期可选判断方法 disabledDateFunc = current => { const { disabledDa ...
- js获得url传过来的参数
function getParam(url) { var arr = url.split('?'); //取?以后 var a ...
- 三面拿杭州研究院50offer:面对这些问题,你都能做到嘛??
5G的到来证明了互联网行业发展一如既往的快,作为一名开发人员(Java岗)梦想自然是互联网行业的大厂,这次我的一个学员拿到了杭州的一个研究院offer,透露一下,年薪50多万,保底16,在这里分享一拨 ...
- freeRTOS内核学习笔记(1)-编程标准
在开始具体的学习之前,你应该先了解freeRTOS的编程标准.这能够方便你在接下来的阅读中快速的了解一些内容 的基本信息,并方便记忆.此外,良好的编程风格也是工作效率的保障. 你可以在https:// ...
- Skill 脚本演示 ycCommonCenterMos.skl
https://www.cnblogs.com/yeungchie/ ycCommonCenterMos.skl 自动生成一个共质心差分对 Mos ,可以自定布局类型. 回到目录
- recv & recvfrom
#include <sys/types.h> #include <sys/socket.h> ssize_t recv(int sockfd, void *buf, size_ ...
- ERROR 1054 (42S22): Unknown column 'password' in 'field list'
解决: update MySQL.user set authentication_string=password('123456') where user='root'; FLUSH PRIVILEG ...
- 使用Scrapy编写爬虫程序中遇到的问题及解决方案记录
1.创建与域名不一致的Request时,请求会报错 解决方法:创建时Request时加上参数dont_filter=True 2.当遇到爬取失败(对方反爬检测或网络问题等)时,重试,做法为在解析res ...