PHP on Microsoft Azure開發實戰(一) - PHP 執行環境簡介

更新

簡介

Microsoft Azure 是 Microsoft 所研發並且提供的公有雲平台服務,而這個平台支援多種不同的程式語言、開發技術,換句話說,您不一定必須使用 Microsoft 的技術(如:.Net、C# 等)才能使用 Microsoft Azure 這個雲端平台。這系列文章便會以PHP為程式語言介紹如何在 Microsoft Azure 上開發出實際可運作的網站或應用。

這一系列文章包括:

  1. PHP 應用程式執行環境
  2. 部署 PHP 應用程式
  3. 資料庫的選擇: MySQL or SQL Database
  4. 使用 Microsoft Azure Storage – Blob storage處理靜態檔案
  5. 使用 Microsoft Azure Storage – Table Service處理Session物件
  6. 使用 Microsoft Azure Service Bus與其它系統進行通訊
  7. 實例說明:簡單購物網站實例

PHP 執行環境

使用 Microsoft Azure 虛擬機器服務

Microsoft Azure虛擬機器 (Virtual Machines) 服務在雲端服務的分類之中屬於 IaaS (Infrastructure-as-a-Service),它讓用戶在平台上建立虛擬機器,並可選擇安裝支援的作業系統,Microsoft Azure 的資料中心技術則會處理好一切虛擬機器及網路的問題。

目前 Microsoft Azure 虛擬機器服務所支援的作業系統中,適合執行 PHP 的伺服器有各種 Windows Server 以及數種Linux 套件,有了自建的作業系統及環境,要用什麼方式執行 PHP 都可以自行決定了。 

使用 Microsoft Azure 網站服務

Microsoft Azure 網站 (Websites) 服務提供了一個可迅速建立網站的平台,用戶不必安裝作業系統,也不必處理伺服器以及 PHP 執行環境的設定,僅須將網站的檔案部署上去便可立即提供網站服務。

Microsoft Azure 網站服務目前提供 PHP 的執行環境,是以 IIS 伺服器搭配 FastCGI 的方式來執行 PHP 的程式,所以在部署 PHP 的擴充套件(extensions)時也必須使用對應的版本(說得簡單一點,就是 .dll 的版本)。而 PHP 的版本目前支援 5.3、5.4 以及 5.5 的版本,用戶可以自行設定 Microsoft Azure 網站服務要使用哪個版本的 PHP 直譯器,或者可以參考這篇文章來設定及建立自己的 PHP 環境。

此外,Microsoft Azure 網站服務也支援多種網站部署的方式,像是傳統的 FTP、WebDeploy,或是結合 TFS/git/Mercurial 等版本控制的機制、綁定公用的版控服務如 Visual Studio OnlineGitHub 或是 Bitbucket、甚至是可以直接使用 Dropbox 的方式部署,對於網站開發部署的流程提供更靈活的彈性。

使用 Microsoft Azure 雲端服務

Microsoft Azure 雲端服務 (Cloud Services) 就是典型的 PaaS (Platform-as-a-Service) 的雲端服務,使用這項服務用戶同樣不必安裝設定作業系統、伺服器等軟體,直接部署應用程式便可以提供服務。但與網站服務不同的是:

  • Microsoft Azure 雲端服務在應用程式執行環境上區分 Web Role 及 Worker Role,在 Web Role 上的應用程式就如同一般的網頁應用程式一般,當網站或服務的用戶透過 Web 要求的方式存取 (例: 使用瀏覽器瀏覽) 時才會執行;而 Worker Role 上的應用程式則是可以獨立執行,適合用來作為背景工作的程式。
  • Microsoft Azure 雲端平台的執行環境中並無提供永久性儲存磁碟,也就是開發應用程式的過程中,都不可假設系統有檔案系統能夠使用,任何檔案的操作都必須使用其它的儲存機制(如:Microsoft Azure Storage),這是為了確保執行環境沒有「狀態」的概念,如此一來,當執行應用程式的虛擬機器發生問題時,Windows Azure雲端服務能夠立即啟用新的虛擬機器繼續提供服務,確保服務的穩定性,同時也可以更容易擴展服務的規模。
  • Microsoft Azure雲端服務將 staging 及 production 環境分離,在部署新版本的應用程式時,可以先行部署至 staging 環境測試,確認沒有問題時,可以再部署至 production 的環境,而部署的過程也不會造成服務的中斷。

Microsoft Azure 雲端服務的執行環境是以 Windows Server 及 IIS 伺服器為基礎,所以在部署 PHP 應用程式時,必須同時部署 PHP 的執行環境(可自行選擇 PHP 版本),稍加設定後便能以 FastCGI 的方式來執行 PHP 的應用程式。

如何選擇 PHP 執行環境

目前 Microsoft Azure 提供了三種方式來執行 PHP 應用,而到底哪一個是「最好」的選擇呢?其實這沒有一定的答案,完全要視情況而定。

如果您的 PHP 應用程式規模已經非常複雜,而沒有太多的資源可以進行改寫時,Microsoft Azure 虛擬機器可能是最快能搬上雲端的方式,因為您可以自行建立虛擬機器及設定執行環境。不過若要享受到雲端平台的負載平衡 (load-balancing) 或是高可用度 (high availability) 時,可能就要自行設定處理,而負載平衡或高可用度必須建立至少兩個以上的虛擬機器實體才能進行設定,並非直接部署便可完成。

而對於純粹網站的應用而沒有獨立執行的程式,那 Microsoft Azure網站服務也是很不錯的選擇,它免去了管理及設定作業系統、伺服器的麻煩,而且又支援多種部署方式,不論您是用 Windows、Linux 還是 Mac 作為開發環境,都可以很輕易地利用這個服務來開發網站服務。另外還提供了永久性儲存磁碟,讓網站程式也幾乎不用改寫便能部署成功 (所以也支援了許多知名的 PHP 套件如:WordPress、Joomla、MediaWiki 等)。

那什麼樣的情況用 Microsoft Azure 雲端服務比較合適呢?如果您需要高度穩定以及容易擴展的特性,同時也希望有 staging 及 production 環境的區別,那 Microsoft Azure 雲端服務無疑是最佳的選擇,不過既然要享受這些特性,就得針對雲端服務的架構改寫一部份程式,像是不能使用本地磁碟,或是要將獨立執行的程式使用 Worker Role 的方式處理,最後就是必須使用 Microsoft Azure SDK 所提供的工具來打包部署,這都是需要花費的開發成本。

總結一句:就是必須根據您的需求及現實狀況,來挑選合適的服務來運作你的網站應用程式。