最近客戶在逐步遷移應用從阿里雲到Azure,此次又輪到一個PHP+MySQL應用了,順便也記一下流水帳。php
需求:遷移部署在阿里雲上的ECS服務器(系列2,IO優化+2核4G+50G的SSD雲盤+10M帶寬+Server 2012 R2+安裝在操做系統上的MySQL數據庫【版本不詳】)到Azure上html
最終的方案簡易描述以下:java
一、使用Azure虛擬機替代ECS服務器,使用MySQL Database on Azure替代本地MySQLnode
二、從Server 2012 R2操做系統升級到Windows Server 2016操做系統python
三、爲客戶增長Windows下PHP Manager工具的Fast CGI PHP版本管理方式git
四、增長HTTPS支持(客戶買了賽門鐵克SSL證書,順便就升級一下)web
五、將原有Web本地資源文件升級爲CDN服務(實在抱歉,Azure的CDN開發工做才進展到一半,因此繼續使用阿里雲CDN蛤蛤)sql
這個方案自己平淡無奇,但其中仍是有2個很是有意思的地方能夠思考一下,第一個就是關於雲服務中PHP環境搭建,先聊一聊這個話題數據庫
衆所周知,在雲服務時代以前,最火爆的就是虛擬主機(虛擬空間)了,而那個時候的虛擬機主機技術中,至關流行的一種,就是Windows宿主服務器+IIS接口開發+MySQL資源分配接口開發+SQL Server資源分配開發+Web控制面板服務開發windows
這種技術發展到後期,在適配上已經作到了全能空間,即對asp、asp.net、php、java等環境進行全方位的支持,在管理上也造成了全功能的控制面板,能夠對域名綁定、FTP信息、運行狀態等進行管控和查詢,實在是建站神器
而從阿里雲引領國內的雲服務建設後,這種方式好像一晚上之間消失不見了
取而代之的是Linux虛擬機+PaaS MySQL數據庫服務+推薦Linux控制面板安裝PHP環境,或者是Windows虛擬機+PaaS MySQL數據庫服務+環境一鍵安裝包等,在阿里云云服務市場也是這麼推薦的,在社區裏面的技術討論也圍繞着這樣的方式展
這樣的轉變,微妙而又十分有趣。
因此呢,我要拋出一個觀點,在雲服務時代,對於月均預算在200元以上的用戶(學生、技術愛好者、開發人員、小微企業甚至中小企業等)
Windows Server(2008 R2+)+Fast CGI+IIS+PHP Manager是PHP環境惟一最佳選擇!
一、爲什麼強調月均預算200以上,由於目前的雲服務商的Windows Server(2008 R2+),4G以上內存的虛擬機的綜合費用沒法降價到200元之內,而內存不到4G,Windows Server 總感受不得勁(注意:此處並不意味着Windows Server吃內存,只是GUI確實會耗費一些內存、帶來一些內存泄露風險,你願意的話也能夠用 NoGUI版本)。
二、在IIS6(Windows Server 2003之前)時代,受制於ISAPI的低效率,Windows下的PHP環境老是被人詬病,而IIS7之後,FastCGI+IIS方式的效率,不管如何是不輸任何Linux下的PHP運行方式了
三、若是在人才如此昂貴的今天,你還執拗的認爲Linux+第三方面板的管理方式要比Windows遠程桌面來的先進、高效和可控的話,我表示出門向東朝鮮歡迎你
四、PHP Manager For IIS這種PHP版本管理神器,是任何一個PHP開發者和愛好者第一眼看到都沒法拒絕的東西,一目瞭然的參數配置,快捷的插件安裝,無需重啓Server的版本切換,無不是PHP開發和部署的好伴侶,更別說現在PHP版本這麼混亂和多變了,惋惜的是,微軟也不推廣,因爲很是穩定,程序也4年多沒更新了,一直能適配高版本的IIS,因此也愈來愈鮮有人知。
五、高效的IT管理必定是雲服務時代的重要話題和重要價值,若是你不選擇Windows的PHP服務環境,那你就是在犯罪!
剛纔說到虛擬空間的PHP環境變得愈來愈少,但有意思的是
Azure中的應用服務下Web應用讓這種環境搭建方式重現江湖
話很少說,看下官網的介紹:
好傢伙,支持的挺多,確實頗有意思,然後的自動縮放、負載均衡和高可用性,這從微軟的口中說出,忽然以爲份靠譜,是虛擬機環境很是好的替代品
而中文官方也很好的給出了3種環境的額外說明教程
而當咱們真的想嘗試建一個Web應用的時候,更爲高能的來了!!!
免費
因此說,1元試用+F1版本的Web應用=我的永久免費1G網站空間?
外國人就是實誠啊,這要是放在阿里雲上,估計早就給玩壞了。。
爲了試驗一下這個空間的效果,咱們申請一個F1版本,放一個phpinfo.php試試看
申請成功後,能夠看到默認有一個URL,也分配了一個FTP,打開這個URL會有一個默認首頁
因而咱們在部署憑據中設置一下FTP帳號密碼
而後咱們經過FileZilla Client for Windows,上傳一下新建好的phpinfo.php文件到FTP
然而,失敗了。。也不知道是啥緣由,不管怎麼設置FTP帳號密碼,改變模式,甚至下載發佈配置文件查看FTP帳號和密碼也無效,因此最後無奈下
在Visual Studio 2017中新建了一個Web網站,而後導入了下載好的配置文件,終於能夠Web Deploy成功了。。
發佈一個phpinfo.php看看
http://webapptest0001.chinacloudsites.cn/phpinfo.php
緊接着進一步觀察和嘗試Web應用控制檯的功能
我靠,微軟簡直是在技術上領先,簡直就是在犯罪啊!功能也太豐富和全面了,這控制面板看的好爽,下面一個一個來過一遍
首先是
微軟真是太與時俱進了,居然以技術棧的方式列出了不一樣的應用方式
各類悉心引導
在應用程序設置中
能夠很全面的看到Web應用的配置信息並進行各類參數設置
活脫一個Web版的IIS控制面板嘛
而後看到一個有趣的功能-MySQL In App
按照個人理解,這是一個和Web應用共享資源的迷你版MySQL PaaS服務,咱們也打開試一試
具體怎麼玩的話,能夠點了解詳細信息,今天就不細細深究了,由於不花錢的東西我們不玩,只玩貴的,這免費的MySQL算什麼自行車!!
下面是一個特別好玩的Web控制檯
一進去就提醒你,這是沙盒環境哈哈,不要作無謂的嘗試
試了幾下命令,發現挺有意思的,全部的操做系統和程序相關的東西都在D盤,也看不出來這種Web應用的資源管理和調度方式,目錄結構也挺凌亂的,不知道這種凌亂是微軟仍是個別Azure開發人員的做風呢
下面是個在線編輯器
也挺有意思的
其他的一些功能,技術性和維護性較重,就不一一細述了,但能夠確定的是,仍然有不少可挖掘的技術以及運維寶藏!
言歸正傳,再回到咱們今天的正題遷移上來
剛纔說有2個有意思的地方,另外一個就是關於國內MySQL的PaaS服務了
也是衆所周知,阿里雲一直標榜的最強項RDS MySQL,相比同類同配普通MySQL PaaS提高性能5倍以上,價格也更便宜,暫且不考慮MySQL的基礎能力如何,對於阿里雲的MySQL很強這一點,我是相信的,阿里雲再沒點抓手那真是很丟臉了,但也不是一騎絕塵,騰訊雲的MySQL能力自從財付通的數據庫技術徹底開放給騰訊後,在獲得了極大的提高,印象中以前朋友圈看到過一個數據庫性能大賽,一直第一名的阿里雲在2016年輸給了騰訊雲團隊。。
話扯遠了,我想說的是,根據我膚淺的觀察,雲服務的MySQL PaaS服務能力,有以下幾個進階過程
而根據我不成熟的判斷,騰訊雲和阿里雲均已達到了第四級,而騰訊雲在第三級的細節上,較阿里雲還有一些差距,而Azure最先版本的MySQL服務,應該還停留在第一級,最新版本的AzureMySQL還不清楚動向,不過按照微軟一向的特色,Azure的MySQL Database on Azure服務,可用性應該仍是挺高的!(我確實不是數據庫專家,甚至都不專長於關係數據庫的開發,以上言論若有不正確的地方,還望指出!)
正好此次客戶對MySQL的性能毫無要求哈哈,因此我也沒啥好糾結的,直接建一個MySQL服務用就好了
下面是新建過程
考慮到負載不是很大,咱們選擇了一個MS2版本,100鏈接數
而MySQL版本則選擇了5.7
大約5分鐘不到新建完畢
搗鼓了一下,新建了用戶名和密碼,哈哈哈,怎麼都連不成功!!!!之前老版本控制面板還成功過, 怎麼到了新控制面板就不行了。。
而後,額。。這全局控制面板,真的是比我想象中還要簡(弱)單(智),老控制面板不少功能好像也沒了
服務器沒有重啓項,沒有防火牆管理,沒有細分權限管理,哈哈哈,微軟,你搞MySQL之後,有沒有得抑鬱症!
今天時間有限。。就不搗鼓了,改天問下Azure的人怎麼回事吧…
而後就是新建一個Azure虛擬機,詳細的過程就很少說了,有想了解的能夠參考這篇文章:《初碼-Azure系列-記一次從阿里雲到Azure的遷移和部署》
既然剛纔提到PHP Manager是個神器,這邊也介紹一下使用方式
首先到PHP Manager官網下載http://phpmanager.codeplex.com/releases/view/69115
記得下載X64的版本
不要懼怕,雖然2011年就不更新了,可是徹底適配全部IIS7.5以上的版本,只是IIS10有個小BUG,須要修改註冊表才能安裝,詳細方法參見:Windows Server 2016中,安裝PHP Manager,ARR3.0或者URL Rewrite 2.0沒法成功的解決辦法
而後就是下載不一樣的PHP版本,在http://windows.php.net/中直接下載zip包就能夠了,固然了,有一些老版本的包,須要在網上本身找了,好像官網已經沒有直接的下載地址了(或者我沒找到)
個人習慣是在資源管理器中按照目錄和功能進行PHP包的劃分
而後打開IIS,打開PHPManager,進行不一樣的PHP版本的註冊,很是簡單,就1個步驟
而後選擇PHP版本目錄下的php-cgi.exe文件,就完成了註冊
而PHPManager最爲神奇的是,藉助IIS的Web.Config管理,可讓不一樣的網站,使用不一樣版本的PHP,你說這是否是極大的提高了IT管理效率
好啦,今天的工做就算完成了,老規矩總結一下
總結與思考
一、Azure的Web應用服務,確實挺好的,很好很好很好!而在細節上,也確實又一次體現了微軟的技術精神和技術能力,不管從價格上仍是運維上看,都是一個很是好的站長建站工具,若有申請了1元帳戶的我的或者小微企業客戶,大可放心的嘗試、學習和研究。二、Azure的MySQL服務,在國內看的話,確實不在第一梯隊,若是想在Azure上享受到高性能的關係數據庫服務,麻煩將技術棧從MySQL轉變爲SQL Server併購買Azure SQL服務哈哈(我恰好有個客戶也有這個需求,後面會詳細記錄下來過程)。
三、PHP的環境搭建,真的不用多想了,不管是想要高性能、高可用仍是易維護,Windows環境都是惟一選擇!一些小白們麻煩不要在技術上犯左傾錯誤了,LinuxPHP是沒有前途的!也沒有錢途!
四、Azure的MySQL服務,真的是。。。挺弱智的。。哈哈哈,別逼我笑
轉載請註明出處,歡迎郵件交流:zhangrou@printhelloworld.com,或者加QQ羣:11444444