如何部署網站到 Win Server 2008
Win Server 2008 灌好了,讓我們用 Visual Studio 2008 寫一個簡單的網站來測試看看吧!
安裝 網頁伺服器 (IIS)
參考:Windows Server 2008 IIS 7.0管理秘訣TOP10 靈活運用新版作業系統的網站伺服器
安裝 FrontPage Server Extensions
安裝完畢後,至 系統管理工具 執行 Microsoft SharePoint Administrator
參考:Installing the FrontPage Server Extensions on IIS 7.0
PS : 如果以上設定完成後,仍無法執行,可能是 IIS 的 基本驗證 未啟用,依下圖方式啟用即可
又出問題了:網站正常使用需要表單驗證,但 Visual Studio 遠端登入則需要基本驗證,兩者不能共存,該如何是好?(目前只能先用手動切換了)
安裝 舊版 Crystal Report
在我的 Windows 7 電腦上測試 http://localhost/xfxserver 時卻發生下列錯誤訊息
錯誤 1 無法載入檔案或組件 'CrystalDecisions.Web, Version=10.2.3600.0, Culture=neutral, PublicKeyToken=692fbea5521e1304' 或其相依性的其中之一。 系統找不到指定的檔案。 c:\inetpub\wwwroot\web.config 44
經搜尋發現是 http://localhost/xfxserver/ami 仍然有用到舊版的 Crystal Report (.Net framework 2.0),所以就產生錯誤了。解決辦法是重新執行 C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packages\CrystalReports 路徑下的 CRRedist2005_x86.msi 重新安裝 Crystal Report 即可
PS:
設定 SQL Server
接下來在登入網頁就碰到以下的問題,以往是用 ASPNET 使用者權限登入 SQL Server,現在則是改成下列的方式
無法開啟登入所要求的資料庫 "aspnetdb"。登入失敗。
使用者 'IIS APPPOOL\DefaultAppPool' 的登入失敗。
已對應到此登入的使用者勾選 "aspnetdb",並在底下的資料庫角色成員資格系選 "Membershep" 與 "Roles" 的所有權限,以及 "db_owner"
除了 SQL Server | 安全性 | 登入 的使用者 IIS APPPOOL\DefaultAppPool 要照前面的方式設定外,針對 資料庫 | aspnetdb | 安全性 | 使用者 IIS APPPOOL\DefaultAppPool 還要再做一次,原因是 db_owner 會跑掉,如果沒設定的話,預存程序是無法執行的。
參考:IIS 7.5的ApplicationPoolIdentity虛擬帳號無法登入SQL Server
XfxServer 搬家囉!!!
為了避免我們網站的設定蓋掉 Default Web Site 的設定 (怕以後還要參考),所以將 Default Web Site 繫結的連接埠由 80 改為 8080
接著新增一個站台,名稱定為 XfxServer,此時 應用程式集區會 變成站台名稱,按右邊的 "選取" 重新選擇 DefaultAppPool 即可,然後將實體路徑指到對應的位置
設定完成後,從外部將會連到 XfxServer,而 Default Web Site 的資料也會被保存下來 (若不使用可將 Default Web Site 停止,減少資源浪費)
接下來試著連到 AMI,產生以下錯誤訊息
原來是尚未轉成網站的關係,在 Ami 的資料夾按滑鼠右鍵,選擇 "轉換成應用程式"
別名設為 "Ami",應用程式集區一樣選取 "DefaultAppPool",然後確認實體路徑即可。
最後有一小部份程式需要修改,原本備份使用的 WiniRAR 是付費軟體,現在改成免費的 7-Zip,參數的部份完全相同。
備份 的功能用以上的設定在 Windows 7 上測試 OK,但實際放到 Windows Server 2008 仍發生以下的問題
原來是沒有檔案的存取權限,以往 Windows XP IIS 5 是以使用者 ASPNET 在存取,而 IIS 6 以後則是改成 Network Service 在存取,新增的步驟如下:
在 Members 資料夾的 安全性 按 編輯 (我們的檔案是放在這個資料夾裡)
點選 新增 後,輸入使用者名稱 Network Service,然後點選 檢查名稱 確認
最後再允許 修改 權限 (會自動帶入 寫入 權限) 就大功告成了。
另外針對 App_Data 中的 Access 檔案,也要做相同的設定,否則預存程序也是無法執行的。
PS : 在 Windows 7 上並未發現 Network Service 的群組,不過多了一個 Authenticated Users 的群組,應該是相同的作用吧 (待研究)
最後就剩下一些收尾的動作了
馬上就碰到第一個錯誤訊息,遠端伺服器沒有 IIS 服務 |
首先新增 IIS 的角色 |
新增 ASP.NET 的角色服務 |
驗證的部份還需要研究一下,這裡就先選 基本驗證。另外還有 相容性 的服務 (為了讓 VS 2008 可以開 Local IIS) |
安裝完畢後,在 Server 端已經可以開啟 localhost 的網站了 |
不過用 VS 2008 進行遠端連線,馬上又碰到第二個問題了 |
基本上都不用選,而 Security 因先前安裝 IIS 時已選擇 基本驗證,所以這邊就變成灰色不用選了 |
在 Default Web Site 選擇 Extend |
確認管理者帳號 |
一切安裝完畢後,從 VS 2008 連線遠端網站,終於看到熟悉的畫面了 |
網站複製完畢後,已可正常執行了 |
又出問題了:網站正常使用需要表單驗證,但 Visual Studio 遠端登入則需要基本驗證,兩者不能共存,該如何是好?(目前只能先用手動切換了)
安裝 舊版 Crystal Report
PS:
- 這個檔案包含在 Visual Studio 2005 中,故請妥善保管。另外 zh-cht 目錄下的檔案為中文套件,也要一併安裝)
- 為了保留系統原始的 web.config,將 xfxserver 先放在 localhost 下,等一切 OK 後再搬回 localhost
設定 SQL Server
接下來在登入網頁就碰到以下的問題,以往是用 ASPNET 使用者權限登入 SQL Server,現在則是改成下列的方式
無法開啟登入所要求的資料庫 "aspnetdb"。登入失敗。
使用者 'IIS APPPOOL\DefaultAppPool' 的登入失敗。
- 在登入名稱輸入 "IIS APPPOOL\DefaultAppPool" (不要用搜尋的方式,否則會變成 "Johnny-PC1008\DefaultAppPool)
- 資料庫設定為 "aspnetdb"
已對應到此登入的使用者勾選 "aspnetdb",並在底下的資料庫角色成員資格系選 "Membershep" 與 "Roles" 的所有權限,以及 "db_owner"
除了 SQL Server | 安全性 | 登入 的使用者 IIS APPPOOL\DefaultAppPool 要照前面的方式設定外,針對 資料庫 | aspnetdb | 安全性 | 使用者 IIS APPPOOL\DefaultAppPool 還要再做一次,原因是 db_owner 會跑掉,如果沒設定的話,預存程序是無法執行的。
參考:IIS 7.5的ApplicationPoolIdentity虛擬帳號無法登入SQL Server
XfxServer 搬家囉!!!
為了避免我們網站的設定蓋掉 Default Web Site 的設定 (怕以後還要參考),所以將 Default Web Site 繫結的連接埠由 80 改為 8080
接著新增一個站台,名稱定為 XfxServer,此時 應用程式集區會 變成站台名稱,按右邊的 "選取" 重新選擇 DefaultAppPool 即可,然後將實體路徑指到對應的位置
設定完成後,從外部將會連到 XfxServer,而 Default Web Site 的資料也會被保存下來 (若不使用可將 Default Web Site 停止,減少資源浪費)
接下來試著連到 AMI,產生以下錯誤訊息
原來是尚未轉成網站的關係,在 Ami 的資料夾按滑鼠右鍵,選擇 "轉換成應用程式"
別名設為 "Ami",應用程式集區一樣選取 "DefaultAppPool",然後確認實體路徑即可。
最後有一小部份程式需要修改,原本備份使用的 WiniRAR 是付費軟體,現在改成免費的 7-Zip,參數的部份完全相同。
備份 的功能用以上的設定在 Windows 7 上測試 OK,但實際放到 Windows Server 2008 仍發生以下的問題
原來是沒有檔案的存取權限,以往 Windows XP IIS 5 是以使用者 ASPNET 在存取,而 IIS 6 以後則是改成 Network Service 在存取,新增的步驟如下:
在 Members 資料夾的 安全性 按 編輯 (我們的檔案是放在這個資料夾裡)
點選 新增 後,輸入使用者名稱 Network Service,然後點選 檢查名稱 確認
最後再允許 修改 權限 (會自動帶入 寫入 權限) 就大功告成了。
另外針對 App_Data 中的 Access 檔案,也要做相同的設定,否則預存程序也是無法執行的。
PS : 在 Windows 7 上並未發現 Network Service 的群組,不過多了一個 Authenticated Users 的群組,應該是相同的作用吧 (待研究)
最後就剩下一些收尾的動作了
- 計數器:原本 FrontPage 的計數器已無法使用,又懶得自己寫,故找網路上免費的 Best Free Counters,不過語法中有超連結會連到廣告網站,記得拿掉
- Best Free Counters 掛掉了,現在改用 Site Meter,請參考 Site Meter 申請、設定教學 ~ 全世界最知名的免費計數器
- 原本利用 FrontPage 建立的 HTML 網頁,利用 Visual Studio 編輯後,內容會亂掉,應該是原本 FrontPage 語法在 Visual Studio 無法支援的緣故 (例如 class 設定等等)。因此將 HTML 網頁逐漸替換成 ASP.NET 的網頁吧!
留言