G.系列导航

【G】开源的分布式部署解决方案 - 导航

微软官方部署方式

右键项目->发布

这个大家应该再熟悉不过,在部署前有个预览界面可以看本次更新到底更新哪些文件。

既然它可以预览部署结果,那其实它部署也不会完全覆盖,而是采取部分覆盖的方式,并提供了增、删、改的实际数量。

这都要依赖一个叫做 Web Deploy 的项目。 传送门

当然,web deploy功能绝不仅仅如此,包括打包、备份、还原、更新数据库等。

在此不多做普及,提到了它的优点,自然要支持它。所以本项目支持原始+Web Deploy两种部署方式。

Web Deploy部署方式

不推荐用IIS的Web 平台安装程序来下载Web Deploy,我们使用的Web Deploy 3.6版本,结果运行的时候是乱码状态。

建议官网自己下载英文版,完整安装。

项目编辑界面的部署流程中的第七个部署流程,选择部署方式为Web Deploy。并填写宿主属性Json。格式可以点击宿主属性前面的问号。

注意:因为我们配合Jenkins使用,所以zip包是自己压缩的。一定要从根目录压缩,不能包含上一层文件夹。否则Web Deploy比对时会删除网站下所有文件!!!

压缩命令格式:"C:\Program Files (x86)\7-Zip\7z.exe" a -r $deploy\WebsiteName.zip C:\ProjectInstance\WebsiteName\*

如你的网站目录为 C:\ProjectInstance\WebsiteName ,则你的压缩文件解压后应该是可以直接解压到 C:\ProjectInstance\WebsiteName,而不是 C:\ProjectInstance,这里跟本项目支持的原始部署方式是有本质区别!

namespace G.Infrastructure.Plugin.DeployHost.IIS.DeployModes
{
public class WebDeployDeployWorker : IDeployWorker
{
public void Deploy(string deployFilePackagePath, string jsonHostProperty)
{
var webDeployHostProperty = JsonConvert.DeserializeObject<WebDeployHostProperty>(jsonHostProperty);
List<Tuple<string, string, string>> lstCommand = new List<Tuple<string, string, string>>(); lstCommand.Add(new Tuple<string, string, string>(
@"C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe",
$@"-verb:sync -source:package=""{deployFilePackagePath}"" -dest:contentpath=""{webDeployHostProperty.WebsiteName}""",
"总更改数")); lstCommand.ForEach(command =>
{
ProcessHelper.Run(command.Item1, command.Item2, command.Item3);
});
}
}
}

Web Deploy部署调用的 msdeploy.exe,并通过package命令操作zip发布到网站名称相同的内容路径。

原始部署方式

此方式已不推荐使用,原理就是解压覆盖目录,并修改web.config文件触发最后修改,保证网站以最新状态启动。

升级版本

目前最新版本为0.0.0.2(Beta),升级执行脚本 G\SQLScripts\0.0.0.2(Beta).sql

【G】开源的分布式部署解决方案文档 - Web Deploy的更多相关文章

  1. 【G】开源的分布式部署解决方案文档 - 手动安装

    G.系列导航 [G]开源的分布式部署解决方案 - 导航 序言 因各种原因,决定先写使用文档.也证明下项目没有太监.至于安装过程复杂,是因为还没有做一键安装,这个现阶段确实没精力. 项目进度 (点击图片 ...

  2. 【G】开源的分布式部署解决方案文档 - 使用手册

    G.系列导航 [G]开源的分布式部署解决方案 - 导航 已知问题 导航没有联动 因为权限只是做了基础的登录校验,考虑到后面导航要跟权限关联上暂时是写死的. 只有部分界面使用了Vue.js 因为刚开始没 ...

  3. 【G】开源的分布式部署解决方案文档 - 部署Console & 控制负载均衡 & 跳转持续集成控制台

    G.系列导航 [G]开源的分布式部署解决方案 - 导航 设置项目部署流程 项目类型:选择Console,这个跟功能无关,只是做项目分类,后面会有后续功能 宿主:选择Console 部署方式:选择原始, ...

  4. 【G】开源的分布式部署解决方案(一) - 开篇

    做这个开源项目的意义是什么?(口水自问自答,不喜可略过) 从功能上来说,请参考 预告篇,因自知当时预告片没有任何含金量,所以并没有主动推送到首页,而是私下的给一些人发的. 从个人角度上来说,我希望.n ...

  5. 【G】开源的分布式部署解决方案(三) - 一期规划定稿与初步剖析

    G.系列导航 [G]开源的分布式部署解决方案 - 预告篇 [G]开源的分布式部署解决方案(一) - 开篇 [G]开源的分布式部署解决方案(二) - 好项目是从烂项目基础上重构出来的 [G]开源的分布式 ...

  6. 【G】开源的分布式部署解决方案 - 预告篇

    为什么想到要做分布式部署解决方案? 当项目越做越大以后,你会发现部署变成一件极其头疼的事情.当然头疼的绝不仅仅在部署一个环节,比如新服务器环境搭建当中就许多坑要踩.各种重复性的工作,包括但不仅限于增加 ...

  7. 【G】开源的分布式部署解决方案(二) - 好项目是从烂项目基础上重构出来的

    分析目前项目结构 眼前出现这么一坨坨的文件夹,相信很多人已经看不下去了.是的,首先就是要把它给做掉. 按照这个项目文件夹的命名意图,大概可以划分如下: 1.Business:业务代码 2.Data:数 ...

  8. Rhel6-hadoop分布式部署配置文档

    理论基础: Hadoop 分布式文件系统架构 HDFS 负责大数据存储 MapReduce 负责大数据计算 namenode  master守护进程 datanode  slaves上负责存储的进程 ...

  9. _00024 尼娜抹微笑伊拉克_云计算ClouderaManager以及CHD5.1.0群集部署安装文档V1.0

    笔者博文:妳那伊抹微笑 itdog8 地址链接 : http://www.itdog8.com(个人链接) 博客地址:http://blog.csdn.net/u012185296 博文标题:_000 ...

随机推荐

  1. click延时300ms的故事

    这要追溯至 2007 年初.苹果公司在发布首款 iPhone 前夕,遇到一个问题:当时的网站都是为大屏幕设备所设计的.于是苹果的工程师们做了一些约定,应对 iPhone 这种小屏幕浏览桌面端站点的问题 ...

  2. 微信小程序,超能装的实例教程

    序言 开始开发应用号之前,先看看官方公布的「小程序」教程吧!(以下内容来自微信官方公布的「小程序」开发指南) 本文档将带你一步步创建完成一个微信小程序,并可以在手机上体验该小程序的实际效果.这个小程序 ...

  3. 架构师之路——单一职责原则SRP (我单纯,我快乐)

    定义: 不要存在多于一个导致类变更的原因.通俗地讲,一个类只做一件事情.   单一职责原则的好处: 1.类的复杂性降低,实现什么职责都有清晰明确的定义: 2.可读性提高,复杂性降低,那当然可读性提高了 ...

  4. 每天一个linux命令(46)--rcp命令

    rcp代表“remote file copy”(远程文件拷贝).该命令用于在计算机之间拷贝文件.rcp命令有两种格式.第一种格式用于文件到文件的拷贝,第二种格式用于文件或目录拷贝到另一个目录中. 1. ...

  5. 每天一个linux命令(39)--ifconfig命令

    许多人非常熟悉Windows下的ipconfig 命令行工具,它被用来获取网络接口配置信息并对此进行修改.Linux系统拥有一个类似的工具,也就是ifconfig(interfaces  config ...

  6. 关于java socket

    1. 关于new Socket()中参数的理解 Server端: 调用ServerSocket serverSocket = new ServerSocket(1287,2);后Server端打开了指 ...

  7. JNI之C初探

    JNI是Java Native Interface的缩写,从Java1.1开始,JNI标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互.JNI一开始是为了本地已编译语言,尤其 ...

  8. Spring 3.0 Aop 入门

    关于Aop的原理,动态代理,反射,之类的底层java技术网上搜一堆一堆的..我就不多说了,主要说在spring上使用aop的方法. 首先不得不说一下的就是,spring aop的支持需要外部依赖包: ...

  9. Java面试11|Maven与Git

    git的命令一定要掌握,如果学习可以参考:廖雪峰的官方网站 1.Maven 生命周期及Maven多项目聚合与继承 Maven的生命周期分如下的9个阶段. (1)clean 清理自动生成的文件,也就是t ...

  10. 3097: Hash Killer I

    3097: Hash Killer I Time Limit: 5 Sec  Memory Limit: 128 MBSec  Special JudgeSubmit: 425  Solved: 15 ...