[IIS/ASP.net MVC2] 手動架ASP.net MVC2網站

[IIS/ASP.net MVC] 手動架ASP.net MVC網站

網路上、書本似乎只教怎麼透過工具publish/build?http://social.msdn.microsoft.com/Forums/zh-TW/236/thread/c5073a85-af22-4bdd-be63-92fba072da18

但手動部署…應該也有需求吧,客戶那邊的環境可沒有工具可以publish

 

這邊就用個人的環境架一個ASP.net MVC網站,純手動部署

作業系統:Windows 7 家用進階版 64位元 (IIS 7.5)

資料庫:SQL Server 2008 Express 32位元 (網站預計和資料庫在同一台電腦)

.Net Framework 4開發的網站、測試用的DomainName:shadow1.no-ip.info

(註:動態IP架站技術請參考:no-ip 轉址 架站教學 - My Site My Life by Linux0911)

 

 

開始第一步

Step 1.為了避免部署上去的網站出現無法載入檔案或組件(System.Web.Mvc.dll)

所以先在專案中對著System.Web.Mvc參考>右鍵>屬性>把複製到本機設為True

image

然後重建專案

image

之後可以在網站資料夾的Bin目錄下看到System.Web.Mvc.dll檔案

image

 

Step 2. 為了避免網站資料夾檔案混亂,把Visual Studio的專案檔案.csproj 先刪掉(這步驟可做可不做)

image

至此,本機端已經準備完畢。

接著就是複製網站資料夾(不是專案資料夾)放到想放的位置,這邊就以C:\inetpub底下

image

 

Step 3. 安裝IIS

請參考:http://www.dotblogs.com.tw/shadow/archive/2011/02/21/21478.aspx

Step 4. Windows 防火牆打開 80 port

image

image

然後要再為SQL Server的1433 Port新增一個例外

在剛剛的畫面中,去新增規則

image

選連接埠>下一步

image

image

image

image

自行取一個自己好記的名稱

image

Step 5.既然Windows 防火牆有開特定Port,SQL Server當然也要開

從開始>程式集,找SQL Server組態管理員

↓以下若是SQL Server標準版以上的話,應該把所有服務都開啟

image

把對象SQL Server執行個體的通訊協定三個全啟用

image

對著TCP/IP右鍵>內容

image

把動態通訊埠改掉

image

至此SQL Server允許利用SQL驗證模式進行遠端登入

Step 6.

確保要架網站的電腦有灌.NET Framework 4

Step 7.進到IIS管理員

image

把預設站台停止

image

在左方窗格的站台>右鍵>新增一個網站

image

image

確認該應用程式集區是.Net 4而且是整合式

image

可以注意到識別的地方為ApplicationPoolIdentity

如果網站需要上傳及寫入檔案的話,請參考:介紹 IIS 7.5 的應用程式集區與新增的「虛擬帳戶」特性

 

Step 8.

修改網站Web.config的資料庫連線及其他設定

image

資料庫連線變成使用IP位址+SQL驗證方式登入(為了模擬N-tier架構架網站)

image

全部的connectionString都要改,從Data Source開頭開始改

(註:額外想到,似乎Data Source=IP位址;Initial Catalog=資料庫;User ID=登入帳號;Password=密碼,這種連線字串在Windows Server 2000之後一律相容?

http://social.msdn.microsoft.com/Forums/zh-TW/232/thread/746040bb-e3ce-4ab7-b195-ede8a7ec2c84)

 

接著再確認網站Global.asax的路由規則

image

因為是ASP.net MVC網站,所以IIS的預設文件停用也沒差(網站預設調用哪個檔案已經由路由決定)

image

 

最終步驟:測試網站功能

在本機的IE輸入DomainName,網站有撈資料出來

image

特地跑到附近的網咖,上網輸入http://shadow1.no-ip.info,並進入輸入表單資料

image

從外部也可以連進來,這樣於是大功告成~

 

註:如果沒擁有DomainName,只是單純測試架站的情況

image

之後在本機的IE瀏覽器輸入http://localhost即可

image

 

 

 

2011.12.10 追記

若要把MVC架成應用程式,其實也大同小異

Step 1. 以預設站台當範例

image

image

右方的瀏覽

image

執行結果:

image

 

 

 

總結:以上從頭到尾我沒有設定MVC專案的「封裝/發行Web」、電腦也沒有安裝Web Deployment Tool工具,沒有安裝AspNetMVC2_VS2008.exe檔

(但如果真的忘了把System.Web.Mvc.dll檔輸出到Bin目錄下的話,就真的要安裝AspNetMVC2_VS2008.exe了)

 

2011.12.18 追記:[MS SQL] SQL Server 2008新增允許遠端登入帳號

其他部署問題參考:

[IIS 7.5/Win2008 R2] 部署ASP.net Web Site問題集合(強制使用整合式驗證、CGI限制…等等)

還有若先裝.Net Framework再裝IIS(安裝順序相反時),出現錯誤

HTTP 錯誤 500.19 - Internal Server Error

請參考:http://www.dotblogs.com.tw/hatelove/archive/2010/01/07/vs2008openiiswebsite.aspx?fid=28937#feedback

變成要多一個步驟註冊ASP.net
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\aspnet_regiis –i (.net 2~.net 3.5)
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis –i (.net 4)
(個人建議全版本都註冊)

 

2011.8.22 追加

如何將 ASP.NET MVC 相依的組件一起部署到 Bin 目錄下(Will保哥)

ASP.NET MVC 3網站BIN目錄手動部署

2012.11.08 追加

IIS6 上的MVC網站部署要追加副檔名設定:ASP.NET MVC 程式開發 (2):部署 ASP.NET MVC 到本機的 IIS