很多童鞋說自己是做移動開發的,想掛個簡單的Web API,可是伺服器又不會搭,這樣一來測試就成了問題。看看網上的教程,發現略難懂,而且大多是一個轉一個,沒價值,所以乾脆寫幾篇文章講講簡單的Web伺服器怎麼搭,讓不太涉及Web的童鞋快速上手。
我計劃把幾個主流的,比如Apache、IIS、Nginx等在Windows或者Linux上的搭建方法都說說,由於自己做的是.NET,所以,第一篇先上IIS吧!
一、IIS伺服器的搭建
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等一些雜項上的處理。
好了,現在讓我們開始!
基本步驟如下:
啟用功能 -> 設定網站路徑和連接埠 -> 設定許可權 -> 設定雜項 -> 正式發布
1.啟用功能:
首先,我們以Windows 案頭版系統為例,進入Windows的“控制台”,
(Windows 案頭版控制台)
進入“程式”,然後點“啟用或關閉Windows功能”,然後就能看到一下選項,找到Internet Information Services(在Windows 7為Internet資訊服務,下同),
(Windows 案頭版的 Windows 功能)
在Internet Information Services之前的選項框上打勾,會發現有些內容是方塊型的,意思是沒有完全啟用其中的功能,建議按照圖片上的介紹把“應用程式開發功能”中的內容全部勾選,要不IIS搭好以後只能掛HTML這種靜態網頁。勾選完成後,如還需要其他方面的功能,如ODBC日誌、動態內容壓縮、HTTP重新導向等功能,也可以再次勾選,當然現在不勾選以後再加也沒問題。
(關閉 Windows 防火牆)
完成後,點擊確定,Windows自動安裝IIS功能,安裝完成後,建議在“系統和安全”中,完全關閉防火牆,保證IIS的其他連接埠可被訪問,在IE或其他瀏覽器中,開啟http://localhost,出現如下介面,則說明搭建成功
(IIS8 歡迎介面)
接下來,我們來看看在Windows Server 2012 R2上的IIS搭建過程
首先,開啟“伺服器管理員”,在右上方找到“管理”->“添加角色和功能”,
(Windows Server 2012 R2 伺服器管理員添加角色和功能)
接著,一直點擊“下一步”,直到“伺服器角色”一項,在右側列表中找到“Web 服務器(IIS)”一項,
(Windows Server 2012 R2 添加伺服器角色)
成功添加角色後,會提示你選擇所需的功能,類似前面Windows 案頭版的介紹,選擇自己所需的功能,推薦將“應用程式開發”中的所有選項全部勾選!如果作為真正的伺服器使用,最好把功能全部配齊,省得再次配置。勾選完後,一路“下一步”等待安裝完成即可。
(Windows 7和Windows Server 2008 R2的配置類似對應的案頭版和伺服器版,可參照上面的介紹配置)
安裝完成後,查看Windows服務,可以發現多出一項名為“World Wide Web Publishing Service”的服務,這個服務用於啟動和管理IIS進程,保證Windows開機啟動時,自動運行,而不需要某一個使用者登入。
(IIS的服務)
2.設定網站路徑和連接埠
雖然伺服器功能啟用完畢,雖然我們可以在區域網路內通過IP地址或者在本機用localhost進行訪問,但我們只是瀏覽了微軟給我們的樣本,我們需要讓IIS展示我們自己寫好的網站,此時就需要將網站相關的檔案,如:aspx、html、dll等,這裡,我們用ASP.NET中最簡單的WebForm形式單頁面示範如何部署一個真正的動態網站。
首先,假設我們的網站已經在VS中完全開發完成,,網站基本目錄檔案如下:
(一個基本的WebForm網站)
提前說明一點:這個網站就是一個基本的Web API,根據參數id(GET或POST提交),從資料庫中取出對應ID的資料,當id為0或不能轉換為int型資料時,返回所有資料,超出範圍則返回空資料。
如果直接運行或者調試,會看到下面的畫面,其中,瀏覽器地址是localhost+一個隨機的連接埠號碼,這是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
(網站源碼檔案夾)
剩下的檔案,不管以什麼尾碼名結尾,全部都可以不要,但是不要刪,都是你自己的心血!
把這些檔案複製到你需要掛網站的地方,如果是伺服器系統,只要不是系統目錄,你可以任意放,如果是案頭版系統,別放在案頭上、系統目錄就行,推薦放在以下幾種路徑:
第一,IIS預設路徑,C:\inetpub\wwwroot\
第二,非C盤的其他路徑,如D:\xxx
第三,非網路路徑的其他可讀寫、指令碼可執行路徑
接著,我們要在IIS裡進行網站路徑設定。開啟IIS,在左邊的列表中看到“網站”一項,,這裡列出了所有在本機IIS伺服器上掛載的網站
(IIS中的網站列表)
現在要考慮是將網站掛在原生另一個TCP連接埠(Default Web Site預設綁定80連接埠,可以將自己的網站掛在8080等連接埠上)上,還是將網站掛在80連接埠下的一個虛擬目錄中,這裡分別介紹。
首先,如果我們將網站掛在8080連接埠上,我們需要在“網站”中建立一個網站,大致操作為:右鍵“網站”->“添加網站”->輸入資訊->點擊“確定”即可,其中,“網站名稱”任意填寫,“實體路徑”選擇上面放了網站相關檔案的目錄路徑,剩下連接埠改為8080或者其他未佔用連接埠都行,點擊確定,訪問http://localhost:8080/或者IP地址即可看到自己的網站了,
(添加一個新網站)
其次,我們來看一下虛擬路徑的添加方法,所謂虛擬路徑,就是類似http://www.xiyoumobile.com/admin/等存取方法,看似訪問了網站中的另一個檔案夾,實際上訪問了另外一個網站,在IIS中可以選擇“添加虛擬目錄”和“添加應用程式”兩種方法實現,個人推薦後者,因為不用因為建立一個虛擬目錄而考慮.dll檔案的置放位置。具體操作:對著要添加虛擬目錄的網站右鍵->"添加應用程式"->填寫“別名”和“路徑”->確定,在瀏覽器中輸入網站即可訪問到網站,其中,“別名”請填寫希望被訪問的虛擬目錄名,如http://www.xiyoumobile.com/admin/中,別名就應該填“admin”,而“路徑”則按照建立網站的方法填寫即可,
(添加虛擬目錄)
3.設定許可權
Windows NT系統出於安全性的考慮,設定了使用者組和許可權的劃分,尤其在普通案頭版或者說家庭版的系統中體現的更為明顯,伺服器上經常對Administrator賦予了最高許可權,有童鞋說,按照上面的方法,搭建完成伺服器了以後,Web頁面能開啟,但是會報錯,500或者401等等,基本上是因為許可權,如果401就是壓根兒啥許可權都沒有,500有可能是在寫本機資料庫的時候,檔案禁止寫入所造成的伺服器錯誤,於是乎,就請各位童鞋仔細查看網站目錄的許可權是否給夠了。
如何檢查呢,很簡單,開啟IIS,在左邊的列表中選擇一個網站或者虛擬目錄,然後在右邊的“操作”一欄中,選擇“編輯許可權”->“安全”,
(在IIS編輯網站目錄許可權)
在這裡可以看到,我的網站目錄許可權中有“Everyone”、“Authenticated Users”、“SYSTEM”、“Administrators”等幾個使用者組或者使用者名稱,並允許“Everyone”使用者組進行讀取和執行、列出等操作,所以網站的指令碼、內容都是允許任何人進行訪問或者說擷取的,有些童鞋的硬碟中沒有設定過許可權,有可能就沒有Everyone的這個許可權,所以有可能訪問出現如下情況
(由於許可權不夠而造成訪問失敗)
遇到這種情況有就可以在剛才(網站目錄檔案夾)的“安全”中,添加Everyone或者IIS_IUSRS存取權限,如果需要檔案上傳,可以將某個檔案夾設為可讀可寫可執行,只要在需要的許可權上打上勾即可,
(設定IIS_IUSRS的許可權)
4.設定雜項
童鞋們該等急了,這下網站應該可以算正式發布了吧,別急,還有點東西要說!!
第一,預設文件
有些童鞋說,安裝你說的方法都配置好,怎麼開啟還是報錯啊,就像下面的錯誤:
HTTP 錯誤 403.14 - Forbidden
Web 服務器被配置為不列出此目錄的內容。
(網站未找到預設文件報錯)
但是你會發現如果打http://localhost:8080/Default.aspx又可以訪問了,這是因為:IIS預設的預設文件為以下幾個:Default.htm、Default.asp、index.htm、index.html、iisstart.htm、default.aspx(在此說明一下,由於Windows系統在路徑上不區分大小寫,所以IIS上發布的網站也是不區分大小寫),如果你的首頁檔案不在上述檔案之內,不輸文檔名,預設是無法訪問到的(這裡我故意刪除了Default.aspx),所以,針對這種情況,請自行設定預設文件,方法如下(這裡假設要掛php網站):
(添加預設文件)
添加預設文件以後,直接敲網域名稱或者IP及連接埠號碼即可方法預設頁面了!
第二,資料庫連接字串
有些童鞋因為在本機測試時,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' 登入失敗。
:
(資料庫異常)
所以,一定要注意,在將網站掛載到真正的IIS伺服器上前,請將修改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就不容易實現,還有其他的檔案,如apk、ipa等安裝包,由於不常用,在IIS上也需要手動添加進來,如果不添加,就會報“404 Not Found”的錯誤,添加方法如下:
(添加MIME類型)
第六,其他設定
其他的設定包括存取控制、IP地址過濾、反向 Proxy、SSL、日誌、CGI等等,這個根據個人需要來配置,而且都不是很困難,除非你要在IIS上跑Java。關於IIS的反向 Proxy,童鞋們可以戳我的另一篇博文:《IIS上的方向代理》,以後我會繼續寫面向新手的Web伺服器搭建教程,涵蓋Nginx、Apache和IIS上的PHP等等,感謝大家的關注!
轉載請註明出處:http://blog.csdn.net/yuanguozhengjust/article/details/25747729