36-网站部署

      部署网站往往是一件麻烦事,因为在安装部署的过程中,经常有许多步骤要运行,对于许多不太熟悉IIS/SQL的新手来说,部署网站编程一件非常困难且危险的事。Visual Studio 2012在ASP.NET网站部署方面提升了不少能力,有助于让你将现有网站快速且简便地发布到远程的IIS服务器上,而免除了许多繁杂的设置程序。在这里所说的危险,是指信息安全方面的风险,因为常常设置不成功就会开始乱设权限,例如,将目录设置成Everyone可擦写等,这些都是非常危险的部署设置。

1.如何部署到本机的IIS

      要部署到IIS,首要动作必须是先安装IIS功能,若要运行ASP.NET MVC 4,则还必须安装.NET Framework 4.0以上版本。一般来说,安装ASP.NET MVC网站到IIS有非常多方法,但我们将专注于介绍Visual Studio 2012内建的Web一键式发布功能,通过这个好用的功能将能有效降低ASP.NET网站安装部署的复杂度。

(1)安装IIS功能

      如果你用的是Windows 7或Windows 8操作系统,可以通过“控制面板”->“程序”->“打开或关闭Windows功能”进行安装,选中“Internet信息服务”选项,以及“应用程序开发功能”选项中的ASP.NET。

                     

      从Windows7的“开启或关闭Windows功能”安装ASP.NET只会安装.NET3.5 SP1,若要运行ASP.NET MVC4.0网站,则必须安装.NET Framework4.0以上版本。

(2)Web一键式发布

      VS2012提供了“Web一键式发布”工具栏,只要创建“发布设置”之后,即可用“单键”将网站安装或更新完成,非常神奇且好用。

      在VS2012的工具栏上单击鼠标右键,在弹出的快捷菜单中选择“Web一键式发布”命令即可开启“Web一键式发布”工具栏,如下图。

 

       开启“Web一键式发布”工具栏后,就新增一个新的发布设置,如下图。

 

      VS2012的“Web一键式发布”功能支持多种发布方法,其中包括Web Deploy、Web Deploy包、FTP、文件系统与常规的FPSE(FrontPage Server Extension)等,如下图所示。

a.使用Web Deploy部署     

     要安装网站到本机IIS,使用Web Deploy是最有效率的方法,不过在开始之前,我们需要先开启IIS具体设置,并介绍一些IIS界面中的专用术语,这有助于帮助我们了解未来如何设置发布时所需的参数。

 

      上图中,标号(1)的节点,叫做“服务器名称”,标号2的节点叫做“站点名称”,标号3的节点叫做“应用程序名称”。

      接着,我们切换至VS2012“创建发布设置”的界面,在“连接”这个步骤,当选定Web Deploy发布方法时,会显示多个设置字段,如下表所示。

域名 输入介绍
服务器 这里要输入的是服务器名称或IP地址,若要安装到本地计算机,直接输入localhost即可
站点名称 这里主要是让你输入“站点名称”与“应用程序名称”,两个参数必须以一个除号(/)作分隔。如果想直接安装到该网站站点的根目录,可以仅输入“站点名称”即可,不用输入除号(/)与应用程序名称
用户名 当“服务器”输入的是本机地址(如localhost),此字段不需要输入
密码 当“服务器”输入的是本机地址(如localhost),此字段不需要输入
目标URL 此字段是这个网站发布到IIS后的网址,每次发布成功,VS2012都会自动开启浏览器,并进入这个网址。此字段可以选择不输入

       设置完成后的界面如下图所示。

      不过,如果你的VS2012运行在UAC(用户账户控制)的状态下,在验证连接时就会发生Need Elevated to Run Msdeploy的警告消息,如下图所示。     

接着单击“下一步”按钮继续设置其他参数,如下图。

      你可以点击这个警告消息的链接,它会提示你应该在“系统管理员模式”下启动VS才能运行部署操作。这是必须重新启动关掉VS2012,重新“以管理员身份运行”的方式启动,这样的权限才能发布网站到本机的IIS上。

      接着单击“下一步”按钮继续设置其他参数,如下图所示。

 

      通常有规律的管理团队,都会设置多个不同的方案配置,以便切换“开发环境”与“正式环境”的设置,因此在“Web一键式发布”问世之前,负责发布网站的人,平时大多会将方案配置切换到Debug设置,以方便开发与测试,当要发布网站到“正式环境”时,必须要先手动切换方案配置到Release配置,然后对网站进行编译,最后再将编译好的文档部署到IIS站点,但这个切换动作容易让人忽略,因此这样的发布流程多少回带给我们一些困扰。

      使用VS2012的“Web一键式发布”功能有一个好处,那就是VS会帮助你做完所有“发布”工作所需的前置作业,在“设置”界面中,可以指定“配置”选项。如果指定Release配置,即便当前选择的是Debug配置,VS也会帮你自动切换到Release配置并编译整个网站,最后再将这个编译好的网站发布到远程的IIS中,网站部署的流程被自动化,相应的发生错误的机会就降低了。

      在“配置”设置中,还有个“删除目标上的附加文件”选项,在发布网站之前,会先移除IIS站点目录中的所有文档,然后才发布更新文档。

      因为开发环境的数据库连接参数与正式环境的数据库连接参数往往不太一样,因此可以在“配置”中的设置数据库。可以勾选“在运行时使用此连接字符串(更新目标web.config)”选项,用这里指定的连接字符串,修改Web.config配置文件内的数据库连接字符串。

      接着单击“下一步”按钮进入“预览”设置界面,如下图。

 

      “预览”功能可以将这次要发布到IIS站点的所有文档列出来,并且明确告知你这次发布的动作会有多少文档被新增、删除或更新,如下图。

 

      最后单击“发布”按钮,这些准备发布的文档就会成功地部署到IIS里。

     上述发布设置虽然感觉有些复杂(跟以前相比已经简单很多),但你只需设置一次,当日后在项目中有任何文档被新增、删除或更新时,只要在“Web一键式发布”工具栏上单击“发布Web”按钮,如下图,网站所有的异动就会自动发布到IIS上,非常方便且直观。

 

    

      最后就可以用http://localhost/ShoppingMall网址,浏览该网站了。     

2.可能出现的错误

(1)发生NEED ELEVATED TO RUN MSDEPLOY的警告消息

      如果VS运行在UAC(用户账户控制)状态下,在验证连接时,就会发生NEED ELEVATED TO RUN MSDEPLOY的警告消息。这时可关掉VS,“以管理员身份运行”的方式重新启动VS,这样的权限才能发布网站到本机的IIS上。

(2)遇到“预览失败”错误

       如果遇到“预览失败”错误,可能是由于IIS的应用程序池中,默认网站的.NET Framework版本不对,将2.0修改为4.0,如下图。

 

(3)发生错误处理程序“ExtensionlessUrlHandler-Integrated-4.0”

      如果发生错误处理程序“ExtensionlessUrlHandler-Integrated-4.0”,可能是需要用aspnet_regiis注册4.0框架,然后用4.0的Class池,就可以运行4.0的web项目了。以管理员方式启动“VS2012开发人员命令提示”,具体操作如下图。

(4)出现“用户 'IIS APPPOOL\DefaultAppPool' 登录失败”错误

      如果出现“用户 'IIS APPPOOL\DefaultAppPool' 登录失败”错误,可将IIS中Default Web Site应用程序池的高级设置-->进程模型-->标识,修改为NetworkService。

(5) 页面出现“HTTP 错误 403.14 - Forbidden Web 服务器被配置为不列出此目录的内容”

 

 

posted @ 2015-11-23 10:48  RunningYY  阅读(461)  评论(5编辑  收藏  举报