面向新手的Webserver搭建(一)——IIS的搭建

非常多童鞋说自己是做移动开发的,想挂个简单的Web API,但是server又不会搭,这样一来測试就成了问题。看看网上的教程。发现略难懂,并且大多是一个转一个,没价值,所以干脆写几篇文章讲讲简单的Webserver怎么搭。让不太涉及Web的童鞋高速上手。

我计划把几个主流的,比方Apache、IIS、Nginx等在Windows或者Linux上的搭建方法都说说,因为自己做的是.NET,所以,第一篇先上IIS吧!


一、IISserver的搭建

IIS全称Internet Information Service,中文名:Internet信息服务,专用于微软操作系统平台。兼容微软的各项Web技术。尤其是ASP.NET(事实上也就在IIS上能跑)。除此之外,IIS还支持CGI。IIS7以后的版本号对Fast-CGI支持更好,所以PHP 5.3能够使用Fast-CGI和Zend来优化在IIS上的性能,当然早期的ASP也是能够支持的。JSP的支持相对麻烦,并且性能不好,所以基本没人拿IIS跑JSP。

如今。IIS8已经伴随着Windows Server 2012 R2和Windows 8.1的公布而出如今最新的Windows版本号中。所以本文就不拿IIS7曾经的古董说事了。IIS7以后的版本号,变化幅度非常小,应该是在优化性能、添加稳定性和加入新的MIME等一些杂项上的处理。

好了,如今让我们開始!

基本过程例如以下:

启用功能 -> 设置站点路径和port -> 设置权限 -> 设置杂项 -> 正式公布

1.启用功能:

首先,我们以Windows 桌面版系统为例,进入Windows的“控制面板”,如图所看到的

     

(Windows 桌面版控制面板)

进入“程序”,然后点“启用或关闭Windows功能”,然后就能看到一下选项,找到Internet Information Services(在Windows 7为Internet信息服务,下同),如图所看到的

   

(Windows 桌面版的 Windows 功能)

在Internet Information Services之前的选项框上打勾。会发现有些内容是方块型的,意思是没有全然启用当中的功能,建议依照图片上的介绍把“应用程序开发功能”中的内容所有勾选,要不IIS搭好以后仅仅能挂HTML这样的静态网页。勾选完毕后。如还须要其它方面的功能。如ODBC日志、动态内容压缩、HTTP重定向等功能,也能够再次勾选,当然如今不勾选以后再加也没问题。


(关闭 Windows 防火墙)


完毕后,点击确定,Windows自己主动安装IIS功能。安装完毕后。建议在“系统和安全”中。全然关闭防火墙,保证IIS的其它port可被訪问,在IE或其它浏览器中,打开http://localhost。出现例如以下界面。则说明搭建成功


(IIS8 欢迎界面)

接下来,我们来看看在Windows Server 2012 R2上的IIS搭建过程

首先,打开“server管理器”,在右上角找到“管理”->“加入角色和功能”,如图所看到的

   

(Windows Server 2012 R2 server管理器加入角色和功能)

接着。一直点击“下一步”,直到“server角色”一项。在右側列表中找到“Web server(IIS)”一项。如图所看到的

  

(Windows Server 2012 R2 加入server角色)

成功加入角色后,会提示你选择所需的功能,类似前面Windows 桌面版的介绍,选择自己所需的功能。推荐将“应用程序开发”中的所有选项所有勾选!

假设作为真正的server使用,最好把功能所有配齐。省得再次配置。勾选完后,一路“下一步”等待安装完毕就可以。

(Windows 7和Windows Server 2008 R2的配置类似相应的桌面版和server版。可參照上面的介绍配置)

安装完毕后,查看Windows服务,能够发现多出一项名为“World Wide Web Publishing Service”的服务。这个服务用于启动和管理IIS进程,保证Windows开机启动时。自己主动执行,而不须要某一个用户登录。


(IIS的服务)


2.设置站点路径和port

尽管server功能启用完成,尽管我们能够在局域网内通过IP地址或者在本机用localhost进行訪问,但我们仅仅是浏览了微软给我们的演示样例,我们须要让IIS展示我们自己写好的站点,此时就须要将站点相关的文件。如:aspx、html、dll等。这里。我们用ASP.NET中最简单的WebForm形式单页面演示怎样部署一个真正的动态站点。

首先。如果我们的站点已经在VS中全然开发完毕,如图所看到的,站点基本文件夹文件例如以下:


(一个主要的WebForm站点)

提前说明一点:这个站点就是一个主要的Web API。依据參数id(GET或POST提交)。从数据库中取出相应ID的数据。当id为0或不能转换为int型数据时,返回全部数据,超出范围则返回空数据。

假设直接执行或者调试。会看到以下的画面,当中,浏览器地址是localhost+一个随机的port号,这是VS将站点挂在了自带的IIS Express上。但IIS Express仅同意本地调试使用,假设在局域网測试或者把VS的调试关闭,则会发现站点不能訪问。


(IIS Express展示结果)

于是,我们如今能够有两种方式整理站点须要的文件,第一是自己手动去复制,第二是用VS自己主动打包。

假设不是站点特别大,文件特别多,还是建议自己复制。如图所看到的。打开项目的源目录,我们会看到很多文件,有.cs、.vscxproj、.config等,当中,我们须要的仅仅有下面几种类型:

第一,站点的视图或页面文件,WebForm为aspx。MVC为cshtml或aspx。WebService为asmx等等

第二。站点的资源文件,如js脚本、图片、css文件等

第三,站点的动态链接库。即整个bin目录,及及当中的dll文件

第四,站点的配置文件。Web.config


(站点源代码目录)

剩下的文件。无论以什么后缀名结尾,所有都能够不要,可是不要删,都是你自己的心血!

把这些文件拷贝到你须要挂站点的地方。假设是server系统,仅仅要不是系统文件夹。你能够随意放,假设是桌面版系统,别放在桌面上、系统文件夹即可。推荐放在下面几种路径:

第一,IIS默认路径,C:\inetpub\wwwroot\

第二,非C盘的其它路径,如D:\xxx

第三,非网络路径的其它可读写、脚本可运行路径


接着,我们要在IIS里进行站点路径设置。打开IIS,在左边的列表中看到“站点”一项,如图所看到的,这里列出了全部在本机IISserver上挂载的站点

(IIS中的站点列表)

如今要考虑是将站点挂在本机的还有一个TCPport(Default Web Site默认绑定80port,能够将自己的站点挂在8080等port上)上,还是将站点挂在80port下的一个虚拟文件夹中,这里分别介绍。

首先,假设我们将站点挂在8080port上,我们须要在“站点”中新建一个站点。大致操作为:右键“站点”->“加入站点”->输入信息->点击“确定”就可以,当中,“站点名称”随意填写,“物理路径”选择上面放了站点相关文件的文件夹路径,剩下port改为8080或者其它未占用port都行,点击确定,訪问http://localhost:8080/或者IP地址就可以看到自己的站点了,如图所看到的


(加入一个新站点)

其次,我们来看一下虚拟路径的加入方法,所谓虚拟路径。就是类似http://www.xiyoumobile.com/admin/等訪问方法,看似訪问了站点中的还有一个文件夹,实际上訪问了另外一个站点。在IIS中能够选择“加入虚拟文件夹”和“加入应用程序”两种方法实现,个人推荐后者,由于不用由于新建一个虚拟文件夹而考虑.dll文件的放置位置。

详细操作:对着要加入虚拟文件夹的站点右键->"加入应用程序"->填写“别名”和“路径”->确定,在浏览器中输入站点就可以訪问到站点,当中,“别名”请填写希望被訪问的虚拟文件夹名,如http://www.xiyoumobile.com/admin/中。别名就应该填“admin”。而“路径”则依照新建站点的方法填写就可以,如图


(加入虚拟文件夹)

3.设置权限

Windows NT系统出于安全性的考虑。设置了用户组和权限的划分,尤其在普通桌面版或者说家庭版的系统中体现的更为明显。server上常常对Administrator赋予了最高权限,有童鞋说,依照上面的方法。搭建完毕server了以后,Web页面能打开,可是会报错,500或者401等等。基本上是由于权限,假设401就是压根儿啥权限都没有,500有可能是在写本地数据库的时候。文件禁止写入所造成的server错误,于是乎,就请各位童鞋细致查看站点文件夹的权限是否给够了。

怎样检查呢,非常easy,打开IIS,在左边的列表中选择一个站点或者虚拟文件夹,然后在右边的“操作”一栏中,选择“编辑权限”->“安全”,如图所看到的

     

(在IIS编辑站点文件夹权限)

在这里能够看到,我的站点文件夹权限中有“Everyone”、“Authenticated Users”、“SYSTEM”、“Administrators”等几个用户组或者username。并同意“Everyone”用户组进行读取和运行、列出等操作,所以站点的脚本、内容都是同意不论什么人进行訪问或者说获取的。有些童鞋的硬盘中没有设置过权限。有可能就没有Everyone的这个权限。所以有可能訪问出现例如以下情况



(因为权限不够而造成訪问失败)

遇到这样的情况有就能够在刚才(站点目录目录)的“安全”中,加入Everyone或者IIS_IUSRS訪问权限,假设须要文件上传。能够将某个目录设为可读可写可运行,仅仅要在须要的权限上打上勾就可以。如图


(设置IIS_IUSRS的权限)

4.设置杂项

童鞋们该等急了,这下站点应该能够算正式公布了吧,别急,还有点东西要说!!

第一。默认文档

有些童鞋说。安装你说的方法都配置好,怎么打开还是报错啊,就像以下的错误:

HTTP 错误 403.14 - Forbidden
Web server被配置为不列出此文件夹的内容。



(站点未找到默认文档报错)

可是你会发现假设打http://localhost:8080/Default.aspx又能够訪问了,这是由于:IIS默认的默认文档为下面几个:Default.htm、Default.asp、index.htm、index.html、iisstart.htm、default.aspx(在此说明一下,由于Windows系统在路径上不区分大写和小写,所以IIS上公布的站点也是不区分大写和小写的),假设你的主页文件不在上述文件之内。不输文档名,默认是无法訪问到的(这里我有益删除了Default.aspx)。所以,针对这样的情况。请自行设置默认文档,方法例如以下(这里假设要挂php站点):


(加入默认文档)

加入默认文档以后。直接敲域名或者IP及port号就可以方法默认页面了。

第二。数据库连接字符串

有些童鞋由于在本机測试时,SQL Server使用的是Windows身份验证。所以VS自己主动生成到Web.config中的连接字符串例如以下所看到的

<add name="ExampleConnectionString" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=Example;Integrated Security=True"
      providerName="System.Data.SqlClient" />
而假设直接将这个连接字符串使用在站点上时。会发现网页提示:

无法打开登录所请求的数据库 "Example"。登录失败。

用户 'IIS APPPOOL\DefaultAppPool' 登录失败。


如图所看到的:


(数据库异常)

所以,一定要注意。在将站点挂载到真正的IISserver上前,请将改动Web.config中的字符串,确保数据库使用SQL Server身份验证。且假设数据库装在本机。那么Data Source最好设为localhost,1433,如以下的代码所看到的:

<add name="ConnectionString" connectionString="Data Source=localhost,1433;Initial Catalog=Example;User 

ID=sa;Password=123456" providerName="System.Data.SqlClient"/>

第三,.NET Framework版本号

尤其是在Windows 7版本号中。默认仅仅支持.NET Framework 3.5。假设.NET Framework 4和IIS的安装顺序不同。还会造成.NET没有在IIS中注冊的问题。所以建议无论先装.NET Framework,还是先装IIS,都在挂站点前,以管理员身份执行cmd,然后进X:Windows\Microsoft.NET\Framework\v4.0.30319(64位:X:Windows\Microsoft.NET\Framework64\v4.0.30319,X代表系统安装盘,如C)。然后执行命令aspnet_regiis.exe -i,这样能够保证.NET4被注冊到IIS,IIS才干正常执行.NET4版本号以上的程序。

再者,假设应用开发时选择了.NET4,而站点应用程序选择的是.NET2,也是不行的。

这两者都属于执行框架异常,必须配置正确,否则就会报错。


(选择正确的应用程序池)

第四,禁用调试信息

调试信息一般在本地开发时实用。正式公布后假设让訪问者看到,也会暴露一些站点信息,同一时候显得开发人员非常业余,所以请在正式部署后。关闭调试信息。详细操作例如以下:

改动Web.config,将以下的内容改动

<system.web>
      <compilation debug="true" targetFramework="4.0" />
    </system.web>
改动后
<system.web>
      <compilation debug="false" targetFramework="4.0" />
    </system.web>
这样就关闭了远程訪问时的调试信息

第五,加入MIME类型

假设须要让站点提供一些新文件訪问的服务。必须在IIS中加入一些文件的后缀名和MIME类型。尤其是IIS7,默认没有.mp4格式文件的支持,假设不加入MIME类型,HTML5就不easy实现,还有其它的文件。如apk、ipa等安装包。因为不经常使用,在IIS上也须要手动加入进来,假设不加入。就会报“404 Not Found”的错误。加入方法例如以下:

  

(加入MIME类型)

第六,其它设置

其它的设置包含訪问控制、IP地址过滤、反向代理、SSL、日志、CGI等等,这个依据个人须要来配置,并且都不是非常困难。除非你要在IIS上跑Java。

关于IIS的反向代理,童鞋们能够戳我的还有一篇博文:《IIS上的方向代理》,以后我会继续写面向新手的Webserver搭建教程,涵盖Nginx、Apache和IIS上的PHP等等,感谢大家的关注!


转载请注明出处:http://blog.csdn.net/yuanguozhengjust/article/details/25747729

posted @ 2016-03-08 16:14  mengfanrong  阅读(8045)  评论(0编辑  收藏  举报