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

很是多童鞋說本身是作移動開發的,想掛個簡單的Web API,可是server又不會搭,這樣一來測試就成了問題。看看網上的教程。發現略難懂,而且大可能是一個轉一個,沒價值,因此乾脆寫幾篇文章講講簡單的Webserver怎麼搭。讓不太涉及Web的童鞋高速上手。php

我計劃把幾個主流的,比方Apache、IIS、Nginx等在Windows或者Linux上的搭建方法都說說,由於本身作的是.NET,因此,第一篇先上IIS吧!css


1、IISserver的搭建html

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。web

現在。IIS8已經伴隨着Windows Server 2012 R2和Windows 8.1的公佈而出現在最新的Windows版本號中。因此本文就不拿IIS7曾經的古董說事了。IIS7之後的版本號,變化幅度很是小,應該是在優化性能、添加穩定性和加入新的MIME等一些雜項上的處理。數據庫

好了,現在讓咱們開始!瀏覽器

基本過程例如如下:安全

啓用功能 -> 設置站點路徑和port -> 設置權限 -> 設置雜項 -> 正式公佈網絡

1.啓用功能:框架

首先,咱們以Windows 桌面版系統爲例,進入Windows的「控制面板」,如圖所看到的ide

     

(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

相關文章
相關標籤/搜索