分享:遷移PHP應用至Azure的一些實踐記錄和思考

雲計算 PHP Azure MySQL Azure雲計算大數據 2017-05-27

最近客戶在逐步遷移應用從阿里雲到Azure,這次又輪到一個PHP+MySQL應用了,順便也記一下流水賬。



分享:遷移PHP應用至Azure的一些實踐記錄和思考

需求:遷移部署在阿里雲上的ECS服務器(系列2,IO優化+2核4G+50G的SSD雲盤+10M帶寬+Server 2012 R2+安裝在操作系統上的MySQL數據庫【版本不詳】)到Azure上

最終的方案簡易描述如下:

1、使用Azure虛擬機替代ECS服務器,使用MySQL Database on Azure替代本地MySQL

2、從Server 2012 R2操作系統升級到Windows Server 2016操作系統

3、為客戶增加Windows下PHP Manager工具的Fast CGI PHP版本管理方式

4、增加HTTPS支持(客戶買了賽門鐵克SSL證書,順便就升級一下)

5、將原有Web本地資源文件升級為CDN服務(實在抱歉,Azure的CDN開發工作才進展到一半,所以繼續使用阿里雲CDN蛤蛤)

分享:遷移PHP應用至Azure的一些實踐記錄和思考

眾所周知,在雲服務時代之前,最火爆的就是虛擬主機(虛擬空間)了,而那個時候的虛擬機主機技術中,相當流行的一種,就是Windows宿主服務器+IIS接口開發+MySQL資源分配接口開發+SQL Server資源分配開發+Web控制面板服務開發

這種技術發展到後期,在適配上已經做到了全能空間,即對asp、asp.net、php、java等環境進行全方位的支持,在管理上也形成了全功能的控制面板,可以對域名綁定、FTP信息、運行狀態等進行管控和查詢,實在是建站神器

而從阿里雲引領國內的雲服務建設後,這種方式好像一夜之間消失不見了

取而代之的是Linux虛擬機+PaaS MySQL數據庫服務+推薦Linux控制面板安裝PHP環境,或者是Windows虛擬機+PaaS MySQL數據庫服務+環境一鍵安裝包等,在阿里云云服務市場也是這麼推薦的,在社區裡面的技術討論也圍繞著這樣的方式展

這樣的轉變,微妙而又十分有趣。

所以呢,我要拋出一個觀點,在雲服務時代,對於月均預算在200元以上的用戶(學生、技術愛好者、開發人員、小微企業甚至中小企業等)

分享:遷移PHP應用至Azure的一些實踐記錄和思考

1、為何強調月均預算200以上,因為目前的雲服務商的Windows Server(2008 R2+),4G以上內存的虛擬機的綜合費用無法降價到200元以內,而內存不到4G,Windows Server 總感覺不得勁(注意:此處並不意味著Windows Server吃內存,只是GUI確實會耗費一些內存、帶來一些內存洩露風險,你願意的話也可以用 NoGUI版本)。

2、在IIS6(Windows Server 2003以前)時代,受制於ISAPI的低效率,Windows下的PHP環境總是被人詬病,而IIS7以後,FastCGI+IIS方式的效率,無論如何是不輸任何Linux下的PHP運行方式了

3、如果在人才如此昂貴的今天,你還固執的認為Linux+第三方面板的管理方式要比Windows遠程桌面來的先進、高效和可控的話,我表示出門向東朝鮮歡迎你

4、PHP Manager For IIS這種PHP版本管理神器,是任何一個PHP開發者和愛好者第一眼看到都無法拒絕的東西,一目瞭然的參數配置,快捷的插件安裝,無需重啟Server的版本切換,無不是PHP開發和部署的好伴侶,更別說如今PHP版本這麼混亂和多變了,可惜的是,微軟也不推廣,由於非常穩定,程序也4年多沒更新了,一直能適配高版本的IIS,所以也越來越鮮有人知。

5、高效的IT管理一定是雲服務時代的重要話題和重要價值,如果你不選擇Windows的PHP服務環境,那你就是在犯罪!

剛才說到虛擬空間的PHP環境變得越來越少,但有意思的是

分享:遷移PHP應用至Azure的一些實踐記錄和思考

話不多說,看下官網的介紹

分享:遷移PHP應用至Azure的一些實踐記錄和思考

好傢伙,支持的挺多,確實很有意思,而後的自動縮放、負載均衡和高可用性,這從微軟的口中說出,突然覺得份靠譜,是虛擬機環境非常好的替代品

而中文官方也很好的給出了3種環境的額外說明教程

分享:遷移PHP應用至Azure的一些實踐記錄和思考

  • 構建 Node.JS Web 應用並部署到 Azure

  • 使用 Azure Web 應用配置 Python

  • PHP:創建並部署你的首個 Web 應用

而當我們真的想嘗試建一個Web應用的時候,更為高能的來了!!!

分享:遷移PHP應用至Azure的一些實踐記錄和思考

分享:遷移PHP應用至Azure的一些實踐記錄和思考

所以說,1元試用+F1版本的Web應用=個人永久免費1G網站空間?

外國人就是實誠啊,這要是放在阿里雲上,估計早就給玩壞了。。

為了試驗一下這個空間的效果,我們申請一個F1版本,放一個phpinfo.php試試看

分享:遷移PHP應用至Azure的一些實踐記錄和思考

申請成功後,可以看到默認有一個URL,也分配了一個FTP,打開這個URL會有一個默認首頁

分享:遷移PHP應用至Azure的一些實踐記錄和思考

分享:遷移PHP應用至Azure的一些實踐記錄和思考

於是我們在部署憑據中設置一下FTP賬號密碼

分享:遷移PHP應用至Azure的一些實踐記錄和思考

然後我們通過FileZilla Client for Windows,上傳一下新建好的phpinfo.php文件到FTP

然而,失敗了。。也不知道是啥原因,無論怎麼設置FTP賬號密碼,改變模式,甚至下載發佈配置文件查看FTP賬號和密碼也無效,所以最後無奈下

在Visual Studio 2017中新建了一個Web網站,然後導入了下載好的配置文件,終於可以Web Deploy成功了。。

分享:遷移PHP應用至Azure的一些實踐記錄和思考

發佈一個phpinfo.php看看

分享:遷移PHP應用至Azure的一些實踐記錄和思考

緊接著進一步觀察和嘗試Web應用控制檯的功能

我靠,微軟簡直是在技術上領先,簡直就是在犯罪啊!功能也太豐富和全面了,這控制面板看的好爽,下面一個一個來過一遍

分享:遷移PHP應用至Azure的一些實踐記錄和思考

微軟真是太與時俱進了,竟然以技術棧的方式列出了不同的應用方式

分享:遷移PHP應用至Azure的一些實踐記錄和思考

各種悉心引導

分享:遷移PHP應用至Azure的一些實踐記錄和思考

在應用程序設置中

分享:遷移PHP應用至Azure的一些實踐記錄和思考

可以很全面的看到Web應用的配置信息並進行各種參數設置

分享:遷移PHP應用至Azure的一些實踐記錄和思考

分享:遷移PHP應用至Azure的一些實踐記錄和思考

活脫一個Web版的IIS控制面板嘛

然後看到一個有趣的功能-MySQL In App

分享:遷移PHP應用至Azure的一些實踐記錄和思考

按照我的理解,這是一個和Web應用共享資源的迷你版MySQL PaaS服務,我們也打開試一試

分享:遷移PHP應用至Azure的一些實踐記錄和思考

具體怎麼玩的話,可以點了解詳細信息,今天就不細細深究了,因為不花錢的東西咱們不玩,只玩貴的,這免費的MySQL算什麼自行車!!

下面是一個特別好玩的Web控制檯

分享:遷移PHP應用至Azure的一些實踐記錄和思考

一進去就提醒你,這是沙盒環境哈哈,不要做無謂的嘗試

分享:遷移PHP應用至Azure的一些實踐記錄和思考

試了幾下命令,發現挺有意思的,所有的操作系統和程序相關的東西都在D盤,也看不出來這種Web應用的資源管理和調度方式,目錄結構也挺凌亂的,不知道這種凌亂是微軟還是個別Azure開發人員的作風呢

分享:遷移PHP應用至Azure的一些實踐記錄和思考

下面是個在線編輯器

分享:遷移PHP應用至Azure的一些實踐記錄和思考

分享:遷移PHP應用至Azure的一些實踐記錄和思考

也挺有意思的

其餘的一些功能,技術性和維護性較重,就不一一細述了,但可以肯定的是,仍然有很多可挖掘的技術以及運維寶藏!

言歸正傳,再回到我們今天的正題遷移上來

分享:遷移PHP應用至Azure的一些實踐記錄和思考

也是眾所周知,阿里雲一直標榜的最強項RDS MySQL,相比同類同配普通MySQL PaaS提升性能5倍以上,價格也更便宜,暫且不考慮MySQL的基礎能力如何,對於阿里雲的MySQL很強這一點,我是相信的,阿里雲再沒點抓手那真是很丟臉了,但也不是一騎絕塵,騰訊雲的MySQL能力自從財付通的數據庫技術完全開放給騰訊後,在得到了極大的提升,印象中之前朋友圈看到過一個數據庫性能大賽,一直第一名的阿里雲在2016年輸給了騰訊雲團隊。。

話扯遠了,我想說的是,根據我膚淺的觀察,雲服務的MySQL PaaS服務能力,有如下幾個進階過程

第一級,能夠根據MySQL的命令和接口,封裝出MySQL的PaaS服務,功能和性能完全公版化

第二級,深入研究MySQL的源碼和細節,能夠在定製化的PaaS服務中,做較大的性能優化和提升

第三級,充分融合自身的雲服務以及深度開發和定製,達到更加定製化、智能化、高效化的數據高可用、快可備、熱遷移的PaaS服務能力

第四級,修改MySQL源碼、定製出性能更強,適應場景更多的自主產權的MySQL仿版數據庫,然後在細分行業發揮更大的價值和作用

而根據我不成熟的判斷,騰訊雲和阿里雲均已達到了第四級,而騰訊雲在第三級的細節上,較阿里雲還有一些差距,而Azure最早版本的MySQL服務,應該還停留在第一級,最新版本的AzureMySQL還不清楚動向,不過按照微軟一貫的特點,Azure的MySQL Database on Azure服務,可用性應該還是挺高的!(我確實不是數據庫專家,甚至都不專長於關係數據庫的開發,以上言論如有不正確的地方,還望指出!)

正好這次客戶對MySQL的性能毫無要求哈哈,所以我也沒啥好糾結的,直接建一個MySQL服務用就行了

下面是新建過程

分享:遷移PHP應用至Azure的一些實踐記錄和思考

分享:遷移PHP應用至Azure的一些實踐記錄和思考

考慮到負載不是很大,我們選擇了一個MS2版本,100連接數

分享:遷移PHP應用至Azure的一些實踐記錄和思考

而MySQL版本則選擇了5.7

大約5分鐘不到新建完畢

分享:遷移PHP應用至Azure的一些實踐記錄和思考

搗鼓了一下,新建了用戶名和密碼,哈哈哈,怎麼都連不成功!!!!以前老版本控制面板還成功過, 怎麼到了新控制面板就不行了。。

分享:遷移PHP應用至Azure的一些實踐記錄和思考

然後,額。。這全局控制面板,真的是比我想象中還要簡(弱)單(智),老控制面板很多功能好像也沒了

服務器沒有重啟項,沒有防火牆管理,沒有細分權限管理,哈哈哈,微軟,你搞MySQL以後,有沒有得抑鬱症!

今天時間有限。。就不搗鼓了,改天問下Azure的人怎麼回事吧…

然後就是新建一個Azure虛擬機,詳細的過程就不多說了,有想了解的可以參考這篇文章:《初碼-Azure系列-記一次從阿里雲到Azure的遷移和部署》

既然剛才提到PHP Manager是個神器,這邊也介紹一下使用方式

記得下載X64的版本

分享:遷移PHP應用至Azure的一些實踐記錄和思考

不要害怕,雖然2011年就不更新了,但是完全適配所有IIS7.5以上的版本,只是IIS10有個小BUG,需要修改註冊表才能安裝,詳細方法參見:Windows Server 2016中,安裝PHP Manager,ARR3.0或者URL Rewrite 2.0無法成功的解決辦法

然後就是下載不同的PHP版本,當然了,有一些老版本的包,需要在網上自己找了,好像官網已經沒有直接的下載地址了(或者我沒找到)

我的習慣是在資源管理器中按照目錄和功能進行PHP包的劃分

分享:遷移PHP應用至Azure的一些實踐記錄和思考

然後打開IIS,打開PHPManager,進行不同的PHP版本的註冊,非常簡單,就1個步驟

分享:遷移PHP應用至Azure的一些實踐記錄和思考

分享:遷移PHP應用至Azure的一些實踐記錄和思考

然後選擇PHP版本目錄下的php-cgi.exe文件,就完成了註冊

而PHPManager最為神奇的是,藉助IIS的Web.Config管理,可以讓不同的網站,使用不同版本的PHP,你說這是不是極大的提升了IT管理效率

好啦,今天的工作就算完成了,老規矩總結一下

總結與思考

1、Azure的Web應用服務,確實挺好的,很好很好很好!而在細節上,也確實又一次體現了微軟的技術精神和技術能力,無論從價格上還是運維上看,都是一個非常好的站長建站工具,如有申請了1元賬戶的個人或者小微企業客戶,大可放心的嘗試、學習和研究。

2、Azure的MySQL服務,在國內看的話,確實不在第一梯隊,如果想在Azure上享受到高性能的關係數據庫服務,麻煩將技術棧從MySQL轉變為SQL Server併購買Azure SQL服務哈哈(我剛好有個客戶也有這個需求,後面會詳細記錄下來過程)。

3、PHP的環境搭建,真的不用多想了,無論是想要高性能、高可用還是易維護,Windows環境都是唯一選擇!一些小白們麻煩不要在技術上犯左傾錯誤了,LinuxPHP是沒有前途的!也沒有錢途!

4、Azure的MySQL服務,真的是。。。挺弱智的。。哈哈哈,別逼我笑

相關推薦

推薦中...