[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
然後重建專案
之後可以在網站資料夾的Bin目錄下看到System.Web.Mvc.dll檔案
Step 2. 為了避免網站資料夾檔案混亂,把Visual Studio的專案檔案.csproj 先刪掉(這步驟可做可不做)
至此,本機端已經準備完畢。
接著就是複製網站資料夾(不是專案資料夾)放到想放的位置,這邊就以C:\inetpub底下
Step 3. 安裝IIS
請參考:http://www.dotblogs.com.tw/shadow/archive/2011/02/21/21478.aspx
Step 4. Windows 防火牆打開 80 port
然後要再為SQL Server的1433 Port新增一個例外
在剛剛的畫面中,去新增規則
選連接埠>下一步
自行取一個自己好記的名稱
Step 5.既然Windows 防火牆有開特定Port,SQL Server當然也要開
從開始>程式集,找SQL Server組態管理員
↓以下若是SQL Server標準版以上的話,應該把所有服務都開啟
把對象SQL Server執行個體的通訊協定三個全啟用
對著TCP/IP右鍵>內容
把動態通訊埠改掉
至此SQL Server允許利用SQL驗證模式進行遠端登入
Step 6.
確保要架網站的電腦有灌.NET Framework 4
Step 7.進到IIS管理員
把預設站台停止
在左方窗格的站台>右鍵>新增一個網站
確認該應用程式集區是.Net 4而且是整合式
可以注意到識別的地方為ApplicationPoolIdentity
如果網站需要上傳及寫入檔案的話,請參考:介紹 IIS 7.5 的應用程式集區與新增的「虛擬帳戶」特性
Step 8.
修改網站Web.config的資料庫連線及其他設定
資料庫連線變成使用IP位址+SQL驗證方式登入(為了模擬N-tier架構架網站)
全部的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的路由規則
因為是ASP.net MVC網站,所以IIS的預設文件停用也沒差(網站預設調用哪個檔案已經由路由決定)
最終步驟:測試網站功能
在本機的IE輸入DomainName,網站有撈資料出來
特地跑到附近的網咖,上網輸入http://shadow1.no-ip.info,並進入輸入表單資料
從外部也可以連進來,這樣於是大功告成~
註:如果沒擁有DomainName,只是單純測試架站的情況
之後在本機的IE瀏覽器輸入http://localhost即可
2011.12.10 追記
若要把MVC架成應用程式,其實也大同小異
Step 1. 以預設站台當範例
右方的瀏覽
執行結果:
總結:以上從頭到尾我沒有設定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保哥)
2012.11.08 追加
IIS6 上的MVC網站部署要追加副檔名設定:ASP.NET MVC 程式開發 (2):部署 ASP.NET MVC 到本機的 IIS