Windows Azure 網站服務高級功能探索

Windows Azure的網站服務一直是本人十分推崇的服務,它就是微軟的AppEngine。如果單純比較"App Engine"本身,網站服務在易用性、可擴展性、IDE集成、可定製性及UI方面都領先業界其他的類似平臺,比如Google的AppEngine和AWS的Beanstalk。不過網站服務畢竟出自微軟,在外圍服務上並沒有像其他廠商一樣支持大量的開源組件服務,這是網站服務可以和其他服務互補的地方。


那麼,網站到底好在哪裏呢?下面我們就逐一分析


基本功能

站點管理

這個不用多說,Windows Azure可以在幾秒內創建、刪除一個網站,然後會立即分配一個URL,用戶就可以訪問了

持續代碼發佈及版本控制

Windows Azure的代碼發佈機制有很多,可以直接發佈(使用FTP,Git, Visual studio或是Webmatrix等工具),也可以間接發佈,即開發者先把代碼發佈到源代碼控制器或者網盤中,然後同步到Azure上,目前支持的有微軟自己的TFS以及外部的包括GitHub, Codeplex,DropBox等等
下面這篇文章介紹瞭如何使用WebMatrix向網站發佈Wordpress 

Azure網站的一個特點,就是支持持續的代碼發佈。任何一次到Git或者TFS的提交,都會立即觸發一次代碼發佈過程。這保證了網站上託管的代碼永遠是最新版本。用戶也可以將代碼回滾到之前的版本。如果不希望每次提交就同步網站,可以提交代碼到其他分支。網站服務只會同步主分支下的代碼

代碼編輯

可以在管理門戶上直接點擊頁面底部的Webmatrix進行在線代碼編輯,Webmatrix也可將全站鏡像到本地編輯,然後上傳修改後的代碼

運行環境選擇

目前網站服務支持.NET 3.5/4.5, PHP 5.3/5.4/5.5, Nodejs 0.6.17/0.6.20/0.8.4, Tomcat 7, Jetty 8.1. 通過配置界面可以修改選中的運行環境。值得一提的是,不同程序可以同時運行在同一個網站裏面,比如,在同一個URL目錄下可以既有asp又有php。這是因爲後臺的webserver是IIS,它可以根據請求的後綴選擇相應的handler處理請求。如果是Java應用,則稍有不同,它的運行環境,如Tomcat,和IIS是沒有關聯的,因此Java應用和其他應用不能共存在一個網站上

生產、測試環境切換

用戶可以針對同一個應用創建兩個網站,一個做生產,一個做測試,並且可以隨時切換二者的URL

環境變量

Azure爲各種Web程序提供了環境變量接口,這樣一些常用的配置參數可以直接在Azure界面上修改,而無需每次更新代碼。要訪問這些變量,需要在程序裏面調用Azure的API

兼容性

Azure在雲端的網站服務器就是IIS,因此雲端的網站遷移回本地,或者把本地的網站遷移到雲端無需任何代碼修改。需要修改的場景,是需要訪問Azure的環境變量(見上)

系統監控

Azure提供了基本的Web性能監控能力和可用性監控,並且可以提供異常報警

彈性伸縮

用戶可以動態改變網站的運行實例數(進程數或虛擬機數)和規格。甚至可以通過性能指標和時間設置策略實現自動伸縮

Web作業

可以定義定期任務在後臺執行,任務類型可以是exe,bat,cmd,powershell,php,bash,python,nodejs

備份

可以將網站數據連同所對應的數據庫一同進行快照備份,可以定期備份

調試與診斷

可以控制日誌輸出級別,進行日誌保存

對於.NET,支持Visual Studio遠程調試,可以在代碼上設置斷點,然後在雲端執行。Visual studio可以查看斷點處的各種變量,就如同本地調試一樣,也可以單步執行


高級隱藏功能

除了上述功能外,Azure網站還有大量的高級功能,這些功能不一定人人都需要,但是卻十分強大。

後臺編譯

Azure可以從源碼控制站點checkout代碼,如果是腳本語言還好,直接可以用,比如PHP。但如果代碼需要編譯(ASP.NET),那不是沒法直接用麼?Azure提供了後臺自動編譯的能力。對於asp.net站點應用,編譯是在客戶端完成的,編譯後的代碼會上傳到源碼管理站點上,此時azure上無需再次編譯。如果是asp.net項目,那麼checkin的只是源碼,每次客戶端提交代碼後,azure會首先checkout代碼,然後立即調用msbuild進行編譯,而這個過程,對用戶是透明的。用戶只要保證代碼能正常編譯即可。

IIS遠程管理

用過IIS的都知道IIS有一個管理工具,可以進行圖形化的配置管理。現在,azure網站同樣可以支持該管理工具進行遠程管理。只需要在IIS管理器上連接遠程站點


然後輸入網站的URL(需加端口號443)


再輸入管理id(跟ftp的用戶密碼一樣),就可以連入


IIS Manager可以通過圖形化的方式修改web.config,這樣我們就不需要爲如何手動編寫web.config而煩惱了。特別是像URL重寫這種功能,IIS管理器可以爲我們提供強大的規則設計器和測試功能,而不用我們去成爲正則表達式的專家


日誌流監控

日誌下載是很簡單的功能。不過,我們調試程序的時候,我們希望能夠看到日誌的滾動輸出,而不是每次下載日誌文件。Azure網站提供了多種方式讓我們查看日誌的流式輸出
1. Visual studio 可以打開網站的stream log

2. 通過命令行監控

這個功能就如同linux 的tail命令一樣,可以實時查看雲端的持續輸出

3. 通過雲IDE (visual studio online)或者Azure的後臺管理界面監控。後面會詳細解釋


雲IDE

Azure網站與Visual Studio Online進行了集成。VS Online是一個雲IDE,提供純Web界面的開發環境。其具體介紹,可參考http://blog.csdn.net/shaunfang/article/details/20055341


後臺管理

Azure網站是一個PaaS環境,許多後臺的配置信息被屏蔽了,用戶從管理界面上看不到後臺的詳細配置。不過,這也帶來一個潛在的問題,在某些場景下,程序員可能會希望瞭解後臺的更詳細的配置,比如所有的環境變量、雲端所有隱藏的文件、所有安裝的軟件包。現在,Windows Azure開放了後臺管理接口,用戶可以連入這個接口。

連入的方式,是在網站URL中間加入SCM,比如http://phptest.chinacloudsites.cn/ 這個網站的相應後臺管理界面,是https://phptest.scm.chinacloudsites.cn/.訪問時,首先需要輸入管理員賬號和密碼。這個登陸信息和FTP登陸信息一樣,可以從網站的儀表盤頁右側得到,也可以自己進行設定

登陸後,會看到如下的界面


這個界面名爲Kudu。Kudu是一個基於Azure網站的一個插件,其本來的功能,是爲Azure網站提供Git代碼同步的功能,後來,產品團隊對功能進行了擴展,實現成爲一個全功能的管理平臺

在Kudu的首頁,可以看到一系列REST接口的定義。通過這些REST接口,我們可以查詢網站服務的環境配置、進程、文件系統、版本信息,並進行Web作業的提交

進入Environment頁,可以看到所有的環境變量,包括Windows變量、IIS配置、OS配置等等。


進入Debug Console頁時,有兩個選擇,一是使用cmd命令行,二是使用powershell命令行


進入後,我們會看到上下兩個欄目,上面是目錄和文件列表,下面是Web版的命令行界面。在文件列表裏面,我們可以看到主機上的所有文件,點擊三個小圖標,我們可以切換驅動器。這裏不僅能看到項目文件,比如網站代碼和日誌(與FTP看到的一樣),還可以看到系統文件,包括全部Windows系統盤和臨時數據盤上的文件。我們還可以上傳、下載文件、編輯文件。需要注意的是,Windows系統盤內的文件是隻讀的,無法編輯。我們只能編輯網站目錄裏的文件以及臨時盤上的數據


編輯界面如下。這樣,我們就有了一個簡單的Web版的文本編輯器


在下面的命令行工具裏,我們可以執行各種命令。這個Web版的命令行基本上跟本地命令行一樣。我們可以用help查看可用命令


我們可以進行文件拷貝,進行解壓縮等等操作。

進入頁面頂部的Diagnostic Dump,可以打包下載所有日誌文件。進入Web Hooks頁面,可以定義鉤子程序。鉤子程序在每次完成代碼更新後會被系統觸發。比如,我們希望系統每次從Git更新代碼後通知用戶,可以在這個地方定義一個URL。這樣,每次部署完成系統都會調用這個URL


管理擴展

Kudu的功能並不是全部。用戶可以用擴展包自定義管理功能,比如進行同步、通知、監控、報警、日誌分析等等。擴展包是一些代碼文件,可以安裝在Kudu上。點擊Gallery裏面的加號,然後點擊右上角的Restart即可


一些常用的擴展有:

1. 實現多站點文件同步Site Replicator

下面的擴展包實現了兩個Web站點之間的自動文件同步。這可以用來做異地鏡像,比如在北京和上海各自建立一個網站,每次只在一個站點發布文件,另一個站點就會更新內容。結合智能DNS,我們可以實現廣域網就近用戶訪問。具體用法可參考https://github.com/projectkudu/KuduSync 


2. PHP管理

爲PHP提供圖形化管理界面

https://github.com/projectkudu/PHPManager 

這個擴展包可以圖形化在線編輯PHP配置文件,無需手動下載、編輯php.ini。也可以進行php版本、配置、日誌的查看



3. applicationhost.config定製

使用過IIS的用戶可能會知道applicationhost.config這個配置文件,它和web.config結合,配置網站信息。其中applicationhost.config是server級別的配置,web.config是站點級的配置。使用網站服務時,我們只能修改web.config,而某些配置項是在applicationhost.config中被鎖死的,無法編輯(applicationhost.config是保存在windows系統目錄下,無法修改)。而網站擴展爲我們提供了一種修改applicationhost.config的方法,就是在網站目錄裏面定義一個xdt文件。這個xdt是一個xml的差量文件,可以修改原xml生成新xml。具體方法可以參考

http://www.windowsazure.com/en-us/documentation/articles/web-sites-transform-extend/#transform


4. IIS日誌分析

目前Kudu裏面提供兩個日誌分析工具
一個是叫做IIS log file analyzer,可以分析平均響應時間,並統計Session


另一個叫做Analog HTTP Log Analyzer,統計功能更強大,可統計訪問數、客戶端OS、返回碼、文件類型、文件大小,等等


5. MySQL管理套件phpMyAdmin


6. Web版的Azure存儲查看工具



7. 文件計數器

統計網站文件數量


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