背景是这样的,公司有两台服务器,平时一台备用,另一台做为主生产机器。当有大量补丁或者安装什么东西需要重启的时候,交其中一台直接关掉IIS,然后重启即可,此时另一台负责处理用户请求。
之前一台服务器一个网站的时候,发布都是远程上去,然后复制开发机器pubish目录下的文件过去。这种情况有几个弊端:
- 每次复制过去的文件量巨大。
- web.config难以把控,虽然使用Release和Debug来控制连接字符串,但是,必然不如web.config来得正规。
- 每次要登陆远程机器,有时候剪切板无法共享,需要使用驱动器共享来复制文件,然后还要解压之类的操作。容易出现问题。
使用web deploy发布的话,带来了哪些改变:
- 不再需要远程登陆服务器,减少出错机率。多台服务器发布时效率高。
- 文件量明显减少。
- 控制vs在发布前都提交一个svn版本,使用svn作为备份,下次出问题时,只需要回滚到上一个版本,然后进行发布即可。
- 多个网站操作方便,不需要多个文件夹来回切换。
- 不知道是不是错觉,我感觉发布的速度快很多。
使用的方法
环境需要:
- web platform installer。(WEB PI,其实是用来安装web deploy用的,但是我没用,我直接在官网下载的)
- 安装【管理服务】
- 安装web deploy。
操作:
- 如果有WEB PI,则直接使用它先安装WEB DEPLOY 3.5,然后再安装WEB DEPLOY 3.6。(一定要这样,不然会出现404等问题,原因是3.6里面有好多组件由3.5提供的)。
- 如果没有WEB PI,或者不想用它安装,就直接搜索微软官网的WEB DEPLOY3.5和3.6,然后分别安装。
- 检测系统【服务】中的[web management….]有没有打开,没有打开的话,请打开。
- 在IIS中,选择服务器结点,然后在内容里面打开【管理服务】,右边操作栏里面停止服务,把【启用远程连接】前面复选框选上。然后选在下面的使用windows凭据或IIS用户。点右边的应用,然后启动服务。
- 选中你要发布的网站的站点节点,在内容里面打开【IIS管理器权限】,进入之后,右击鼠标,选【允许用户】,然后可以输入IIS用户,也可以输入windows的用户。这个用户将在vs里面被作为远程发布的凭证。
- 打开vs,右击项目名,点发布,输入刚刚那台服务器的IP地址,输入用户名和密码,在【站点名称】的地点输入服务器中对应网站的网站名称,如果是虚拟目录的二级站点,请将名称用/隔开。
- 然后点击vs发布中的【验证连接】,如果成功,则ok。不成功,查看问题,百度一般是百不出答案的,这时时候,google吧。数据库连接字符串在发布的界面记得改啊~~~~~