微軟ASP.NET站點部署指南

微軟ASP.NET站點部署指南 

1.  綜述

現在,程序也已經在本機IIS部署了,也測試了,該到發佈到互聯網上的時候了。本章節你將創建一個虛擬主機賬戶,然後將程序發佈到該生產環境。

提醒:如果根據本章節所做的操作出現錯誤信息或一些功能不正常的話,請務必check Troubleshooting頁面

2.  選擇主機提供商

對於Contoso University程序和本系列教程,你需要選擇一個支持ASP.NET 4和Web Deploy的虛擬主機。我們選擇了一個主機提供商一般來展示一個完整的部署體驗過程。由於每個不同的提供商提供不同的功能和部署流程,不過本教程的部署流程基本上涵蓋了所有的步驟。本教程使用的提供商是Cytanium.com,使用它不代表認可以及推薦它。

如果你準備選擇提供商了,你可以根據微軟站點的提供商列表來比較各自支持的功能和價格。

3.  創建賬戶

在提供商那裏創建一個賬戶,如果以及支持完整版的的話,我們在這個章節也不需要用到。但是後面的章節會講到如何數據遷移至完整版的SQL Server上。

本教程,不需要你註冊新的域名,你可以直接用現有的域名,也可以用提供商提供的臨時URL地址來訪問。

賬戶創建以後,通常你會收到一封歡迎郵件,裏面包含了所有需要部署和管理站點的信息。不同的提供商發的郵件內容是不一樣的,但是大概都是類似的。Cytanium發送的郵件一般包括如下信息:

  1. 控制面板的URL地址,通過這個地址可以管理站點的配置信息。賬戶和密碼也包含在裏面(以後修改過了,不用嘗試登陸啦)。

    \

  2. 默認的.NET Framework版本以及如何修改版本信息。大部分虛擬主機站點提供的都是2.0版(支持2.0/3.0/3.5的程序),但Contoso University是基於.NET Framework 4的程序,所以需要稍後修改這個設置。

    \

  3. 網站臨時URL地址,創建的時候輸入了以及存在的域名(contosouniversity.com)。因此,臨時地址是:http://contosouniversity.com.vserver01.cytaniu.com。

    \

  4. 如何建立數據庫和設置連接字符串的一些信息:

    \

  5. 部署程序需要的工具和設置信息(也提到了WebMatrix方面的信息,此處忽略)。

    \

4.  設置.Net Framework版本

Cytanium歡迎郵件裏有一個可以更改.NET Framework版本的連接,該頁面介紹瞭如何通過Cytanium控制面板來設置。其它的提供商的控制面板也許是不一樣的,可能用其它的方式去操作。

訪問控制面板地址,輸入用戶名和密碼以後,將看到如下頁面:

\

Hosting Spaces框裏,移動鼠標上去能看到2個連接,選擇Web Sites

\

Web Sites框裏,點擊contosouniversity.com(創建賬戶時輸入的名字)。

\

Web Site Properties框裏,選擇Extensions選項卡:

\

將ASP.NET從2.0 Integrated Pipeline修改才4.0 (Integrated Pipeline),然後點擊更新Update

5.  發佈程序到虛擬主機

修改當前的build配置爲Release,你可以從工具欄選擇(如下圖),或者從編譯(Build)菜單裏的配置管理器Configuration Manager)裏選擇。

\

Solution Explorer裏,右鍵ContosoUniversity項目,選擇發佈(Publish),彈出Publish Web對話框,裏面顯示的是Test profile,因爲目前爲止你只創建了這個。

Publish profile框裏,選擇新建new:

\

輸入新名稱"Production"

Service URL裏輸入提供商歡迎郵件裏提供的地址

Site/application裏輸入提供商歡迎郵件裏提供的名稱

選擇 Mark as IIS application on destination.

確保選擇上Leave extra files on destination (do not delete),如果不選擇這個Web Deploy將會刪除目標站點上有而解決方案裏沒有的文件,第一次部署沒有影響,但是以後的升級部署可就慘了,選上它只是避免這些問題。例如,它會刪除生產環境Elmah文件夾的日誌文件(你解決方案裏沒有)。

選擇Allow untrusted certificate.

輸入提供商提供的認證賬戶信息

選擇Save password以便不用每次都輸入密碼

\

點擊發布(Publish

這樣程序就發佈到虛擬主機上了,Output 窗口會顯示發佈結果。

\

6.  設置Elmah目錄權限

還記得上個章節Elmah記錄日誌的時候需要設置寫權限才能寫入XML文件呢,在你本機的IIS上部署的時候需要手工設置。本小節,你將使用Cytanium 來設置這個(其它提供商也行不允許這麼做,通常情況他們會提供特殊的目錄讓你寫文件,這樣的話,你就要修改你的程序只能在特殊的目錄裏寫文件了)。

你可以在Cytanium控制面板裏設置權限,訪問控制面板URL,然後選擇File Manager

\

File Manager框裏選擇contosouniversity.com,可以看到根目錄wwwrooot。點擊Elmah右邊的關閉鎖圖片。

\

在彈出的File/Folder Permissions窗口裏,爲contosouniversity.com選擇ReadWrite,點擊保存(Set Permissions)。

\

7.  設置Bin目錄權限

對於Cytanium和SQL Server Compact,還有另外一個文件夾權限問題需要注意, 如果你運行程序的話,首頁是沒有問題的,但是其它牽涉到數據庫操作的頁面都會出現如下錯誤:

System.UnauthorizedAccessException : Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))

原因是爲了讀取原生的程序集,NETWORK SERVICE賬戶會從bin目錄讀取這些程序集,但是它現在沒有權限。(如果你想看到這個錯誤信息,你需要修改Web.config的錯誤配置爲Off,然後重新部署,因爲默認的生產環境顯示的自定義錯誤頁,而且你在錯誤報告頁面也查不到錯誤信息,是因爲根本就沒權限寫入這個錯誤信息。)

再次打開File Manager裏的wwwroot,點擊bin目錄傍邊的關閉鎖圖片,在File Folder Permissions彈窗裏爲contosouniversity.com和NETWORK SERVICE都選擇上Read。然後選擇Replace permissions on all child objects以後,點擊Set Permissions保存設置。

\

8.  產品環境測試

打開創建賬戶時給的臨時訪問地址(該例是:http://contosouniversity.com.vserver01.cytanium.com),你可以看到和你本機Visual Studio裏一樣效果的首頁,只不過不再顯示Test和Dev指示符了,這就是說Web.config 的transformation以後的信息是正確的。

\

訪問Students頁面驗證數據庫裏沒有student記錄:

\

訪問Instructors頁面驗證Instructors數據依然保留在數據庫裏:

\

和測試環境一樣,你需要驗證生產環境的數據庫是否能否正常操作,但通常不想輸入測試數據進去,因爲它是真正的生產環境。本章節依然使用同樣的方式來測試,在真正的生產環境裏你需要使用不同的方式去做這個事情,比如不輸入測試數據也能驗證的辦法。當然除了要求不大,你也可以添加一些實用的數據進行測試然後再刪除。

添加一個student然後訪問Students頁面看看數據是否存在,以此來驗證數據庫操作是否正常:

\

\

Courses菜單選擇Update Credits頁面驗證授權認證是否正常。正常顯示了Log In 頁面。

\

輸入管理員賬戶和密碼登錄以後,Update Credits頁面可以正常顯示,說明ASP.NET membership數據庫工作正常。

\

測試Elmah在生產錯誤日誌的時候是否正常記錄日誌,訪問一個非法的URL地址(例如Studentsxxx.aspx)。和以前一樣,會顯示GenericErrorPage.aspx頁面,點擊Log Out退出連接,運行Elmah.axd,再次顯示Log In頁面(驗證了Web.config裏對於Elmah認證的transform是否正確),登錄以後,就可以看到剛纔生產的錯誤信息了。

\

現在,已經成功部署了站點,並且驗證了測試結果,這個站點就可以在公網上正式公開運行了。

9.  創建更可靠的測試環境

在第5章我們提到了最可靠的測試方式是在主機提供商那裏購買第2個賬戶作爲測試環境,花費自然也要比在你本機IIS測試要高,但是爲了防止生產環境出問題,購買第2個賬戶做測試也只值得的。

部署測試賬戶的流程和部署生產環境是幾乎一樣的,只需要走如下工作:

  1. 參考第3章和第4章,創建一個新的build配置和Web.config transformation文件
  2. 和上面部署生產環境一樣,在主機提供商那裏再購買一個賬戶,以便部署這個新的build 配置。
  3. 創建新的publish profile以便部署到這個測試賬戶上。

10.    防止測試站點被公開

測試賬戶要考慮的事情是,它運行在公網上,但你不想讓其它人訪問,保存這個站點私有的話,你可以這麼做:

  1. 聯繫主機提供商爲你設置防火牆規則以便只有你的IP地址才能訪問測試
  2. 掩飾URL路徑,以便不合生產環境的URL地址相似。
  3. 使用robots.txt文件禁用搜索引擎爬行收錄你的地址。

第1調是最常用的,但每個提供商所處理的流程這裏就不寫了,如果你的提供商可以設置只允許你的IP地址房屋內,理論上就不用擔心搜索引擎爬行了,儘管這樣,部署一個robots.txt 以防萬一。

部署的robots.txt應該是如下這樣的:

	User-agent: * Disallow: /

User-agent告訴搜索引擎下面的規則適用於所有的搜索引擎爬蟲, Disallow 意味着所有的頁面都不允許爬蟲訪問。

生產環境需要收錄,所以不要部署這個文件。參考:Can I exclude specific files or folders from deployment? 以確保只在Release build裏排除這個文件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章