Azure架設PHP-MySQL Web應用程式

 

本教學課程說明如何建立 PHP-MySQL Web 應用程式,以及如何使用 Git 將其部署至 App Service。您會使用 PHP、MySQL 命令列工具 (MySQL 的一部分),以及安裝在您的電腦上的Git。本教學課程裡的說明可運用在包括 Windows、Mac 與 Linux 的任何作業系統上。看完本指南後,您將擁有可在 Azure 上執行的 PHP/MySQL Web 應用程式。

您將了解:

  • 如何使用 Azure 入口網站建立 Web 應用程式和 MySQL 資料庫。由於預設會在 App Service Web Apps 上啟用 PHP,因此您不需要執行任何特殊步驟就能執行 PHP 程式碼。
  • 如何使用 Git 來發行與重新發行應用程式到 Azure。

此外也介紹Azure SDK for PHP給您認識,Azure SDK for PHP內含的元件可讓您開發、部署及管理適用於 Azure 的 PHP 應用程式。尤其是 Azure SDK for PHP 包含下列各項:

  • 適用於 Azure 的 PHP 用戶端程式庫。這些類別庫所提供的介面可供存取 Azure 功能,例如資料管理服務和雲端服務。
  • 適用於 Mac、Linux 和 Windows 的 Azure 命令列介面 (Azure CLI) 這是一組命令,可用於部署和管理 Azure 服務,例如 Azure 網站和 Azure 虛擬機器。Azure CLI 可在任何平台上運作,包括 Mac、Linux 和 Windows。
  • Azure PowerShell ( 僅限 Windows) 。這是一組 PowerShell Cmdlet,可用於部署和管理 Azure 服務,例如雲端服務和虛擬機器。
  • Azure 模擬器 (僅限 Windows) 。計算和儲存體模擬器都是雲端服務和資料管理服務的本機模擬器,可讓您在本機測試應用程式。Azure 模擬器只能在 Windows 上執行。

設定開發環境

本教學課程假設您已經具備 PHP、MySQL 命令列工具 (MySQL 的一項工具),以及安裝在您的電腦上的 Git。

步驟一 :

建立 Web 應用程式並設定 Git 發佈

  1. 登入 Azure 入口網站
     
  2. 按一下 [新增] 圖示。
     
  3. 按一下 [Marketplace] 旁的 [查看全部]。
     
  4. 依序按一下 [Web + 行動] 和 [Web 應用程式 + MySQL]。然後按一下 [建立]。
     
  5. 輸入資源群組的有效名稱。
     
  6. 輸入新 Web 應用程式的值。
     
  7. 輸入新資料庫的值,包括同意法律條款。
     
  8. 建立 Web 應用程式之後,您將會看到新的 Web 應用程式刀鋒視窗。
     
  9. 在 [設定] 中按一下 [繼續部署],然後按一下 [設定必要設定]。
     
  10. 針對來源選取 [本機 Git 儲存機制]。

     
  11. 若要啟用 Git 發佈,您必須提供使用者名稱和密碼。請寫下您建立的使用者名稱與密碼(如果您之前設定過 Git 儲存機制,系統將會略過此步驟。)
     

 

步驟二 :

取得遠端 MySQL 連線資訊

若要連接至在 Web Apps 中執行的 MySQL 資料庫,您需要連線資訊。若要取得 MySQL 連線資訊,請依照以下步驟執行:

  1. 從資源群組中,按一下資料庫:
     
  2. 從資料庫的 [設定] 中選取 [屬性]。
     
  3. 記下 DatabaseHostUser Id 及 Password 的值。
     

 

步驟三 :

在本機建置及測試您的應用程式

現在您已經建立了 Web 應用程式,您可以在本機開發自己的應用程式,並在測試後進行部署。

在此提供一個簡單的註冊應用程式,註冊應用程式是一項簡單的 PHP 應用程式,您只需提供名稱與電子郵件地址就能註冊活動。先前的註冊者相關資訊會顯示在資料表中。註冊資訊會存放在 MySQL 資料庫。該應用程式包含一個檔案 (複製/貼上以下提供的程式碼):

  • index.php:顯示註冊表單,以及內含註冊者資訊的資料表。

若要在本機建置與執行應用程式,請遵循下列步驟。請注意,這些步驟假設您已經在本機電腦上設定 PHP 和 MySQL 命令列工具 (MySQL 的一部分),且您已經啟用 MySQL 的 PDO 延伸功能

1.使用您先前擷取的 Data SourceUser IdPassword 和 Database 值,連線到遠端 MySQL 伺服器

 mysql -h{Data Source] -u[User Id] -p[Password] -D[Database]

2.MySQL 命令提示字元會顯示:

 mysql>

3.貼上下列 CREATE TABLE 命令,以在您的資料庫中建立 registration_tbl 資料表:

 CREATE TABLE registration_tbl(id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(id), name VARCHAR(30), email VARCHAR(30), date DATE);

4.在本機應用程式資料夾的根目錄中建立 index.php 檔案

5.在文字編輯器或 IDE 中開啟 index.php 檔案並加入下列程式碼,然後完成具有 //TODO: 註解的必要變更。

 <html>
 <head>
 <Title>Registration Form</Title>
 <style type="text/css">
 body { background-color: #fff; border-top: solid 10px #000;
 color: #333; font-size: .85em; margin: 20; padding: 20;
 font-family: "Segoe UI", Verdana, Helvetica, Sans-Serif;
 }
 h1, h2, h3,{ color: #000; margin-bottom: 0; padding-bottom: 0; }
 h1 { font-size: 2em; }
 h2 { font-size: 1.75em; }
 h3 { font-size: 1.2em; }
 table { margin-top: 0.75em; }
 th { font-size: 1.2em; text-align: left; border: none; padding-left: 0; }
 td { padding: 0.25em 2em 0.25em 0em; border: 0 none; }
 </style>
 </head>
 <body>
 <h1>Register here!</h1>
 <p>Fill in your name and email address, then click <strong>Submit</strong> to register.</p>
 <form method="post" action="index.php" enctype="multipart/form-data" >
 Name <input type="text" name="name" id="name"/></br>
 Email <input type="text" name="email" id="email"/></br>
 <input type="submit" name="submit" value="Submit" />
 </form>
 <?php
 // DB connection info
 //TODO: Update the values for $host, $user, $pwd, and $db
 //using the values you retrieved earlier from the Azure Portal.
 $host = "value of Data Source";
 $user = "value of User Id";
 $pwd = "value of Password";
 $db = "value of Database";
 // Connect to database.
 try {
 $conn = new PDO( "mysql:host=$host;dbname=$db", $user, $pwd);
 $conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
 }
 catch(Exception $e){
 die(var_dump($e));
 }
 // Insert registration info
 if(!empty($_POST)) {
 try {
 $name = $_POST['name'];
 $email = $_POST['email'];
 $date = date("Y-m-d");
 // Insert data
 $sql_insert = "INSERT INTO registration_tbl (name, email, date)
 VALUES (?,?,?)";
 $stmt = $conn->prepare($sql_insert);
 $stmt->bindValue(1, $name);
 $stmt->bindValue(2, $email);
 $stmt->bindValue(3, $date);
 $stmt->execute();
 }
 catch(Exception $e) {
 die(var_dump($e));
 }
 echo "<h3>Your're registered!</h3>";
 }
 // Retrieve data
 $sql_select = "SELECT * FROM registration_tbl";
 $stmt = $conn->query($sql_select);
 $registrants = $stmt->fetchAll();
 if(count($registrants) > 0) {
 echo "<h2>People who are registered:</h2>";
 echo "<table>";
 echo "<tr><th>Name</th>";
 echo "<th>Email</th>";
 echo "<th>Date</th></tr>";
 foreach($registrants as $registrant) {
 echo "<tr><td>".$registrant['name']."</td>";
 echo "<td>".$registrant['email']."</td>";
 echo "<td>".$registrant['date']."</td></tr>";
 }
 echo "</table>";
 } else {
 echo "<h3>No one is currently registered.</h3>";
 }
 ?>
 </body>
 </html>

6.在命令提示字元中,移至您的應用程式資料夾並輸入以下命令:

 php -S localhost:8000
 您現在可以瀏覽至 https://localhost:8000/  測試應用程式。

 

步驟四 :

發佈您的應用程式

當您在本機完成應用程式測試之後,可以使用 Git 將其發佈至 Web Apps。您將初始化本機 Git 儲存機制並發行該應用程式。

 

注意:

這些步驟與上述「建立 Web 應用程式並設定 Git 發行」小節結尾處的 Azure 入口網站中所示的步驟相同。

 

  1. (選用) 如果您忘記或是錯置了 Git 遠端儲存機制 URL,請瀏覽至 Azure 入口網站上的 Web 應用程式內容。
     

  2. 開啟 GitBash (如果 Git 位於您的 PATH,則為終端機),將目錄變更為應用程式的根目錄,並執行下列命令:

     git init
    
    git add .
    
    git commit -m "initial commit"
    
    git remote add azure [URL for remote repository]
    
    git push azure master
    

系統會提示您輸入先前建立的密碼。

3.瀏覽至 https://[site 名稱].azurewebsites.net/index.php 以開始使用該應用程式 (此項資訊將儲存在您的帳戶儀表板上):
 

步驟五 :

將變更發佈至應用程式

若要將變更發佈至應用程式,請依照以下步驟進行:

  1. 在本機對應用程式進行變更。

  2. 開啟 GitBash (如果 Git 位於您的 PATH,則為終端機),將目錄變更為應用程式的根目錄,並執行下列命令:

     git add .
    
    git commit -m "comment describing changes"
    
    git push azure master
    

     系統會提示您輸入先前建立的密碼。

3.瀏覽至 https://[site 名稱].azurewebsites.net/index.php 以查看您的應用程式以及您所做的任何變更:
 

 

注意:

如果您想在註冊 Azure 帳戶前開始使用 Azure App Service,請移至試用 App Service,即可在 App Service 中立即建立短期入門 Web 應用程式。不需要信用卡;沒有承諾。

 

適用於 Azure 的 PHP 用戶端程式庫
 

適用於 Azure 的 PHP 用戶端程式庫提供了一個介面,以便從任何作業系統存取 Azure 功能,例如資料管理服務和雲端服務。您可以透過編輯器或 PEAR 封裝管理員或以手動方式安裝這些程式庫。

如需有關如何使用適用於 Azure 的 PHP 用戶端程式庫的詳細資訊,請參閱
如何從 PHP 使用 Blob 服務 (英文)( https://azure.microsoft.com/en-us/documentation/articles/storage-php-how-to-use-blobs/)、
如何從 PHP 使用資料表服務 (英文)( https://azure.microsoft.com/en-us/documentation/articles/storage-php-how-to-use-table-storage/) 及
如何從 PHP 使用佇列服務 (英文)( https://azure.microsoft.com/en-us/documentation/articles/storage-php-how-to-use-queues/)。

步驟一 :

透過編輯器安裝

 

1.將 Git 可執行檔新增至 PATH 環境變數。

 

2.在專案的根目錄中建立名為 composer.json 的檔案,並新增下列程式碼:

 {
 "repositories": [
 {
 "type": "pear",
 "url": "https://pear.php.net"
 }
 ],
 "require": {
 "pear-pear.php.net/mail_mime" : "*",
 "pear-pear.php.net/http_request2" : "*",
 "pear-pear.php.net/mail_mimedecode" : "*",
 "microsoft/windowsazure": "*"
 }
 }

3.將composer.phar(https://getcomposer.org/composer.phar)下載到專案根目錄中。

 

4.開啟命令提示字元,在專案根目錄中執行此命令

 php composer.phar install
  

步驟二:

當作 PEAR 封裝安裝

若要將適用於 Azure 的 PHP 用戶端程式庫當作 PEAR 封裝安裝,請遵循下列步驟:

1.安裝PEAR(https://pear.php.net/manual/en/installation.getting.php)。

2.設定 Azure PEAR 通道:

 pear channel-discover pear.windowsazure.com

3.安裝 PEAR 封裝:

 pear install pear.windowsazure.com/WindowsAzure-0.4.1

安裝完成後,您即可從您的應用程式參考類別庫。

你也可以進行手動安裝

若要手動下載和安裝 PHP Client Libraries for Azure,請依照下列步驟進行:

1.從 GitHub(https://go.microsoft.com/fwlink/?linkid=252719\&clcid=0x404)
下載含有程式庫的 .zip 封存檔。或者,分岔儲存機制並複製到本機電腦(後面這個選項需要有 GitHub 帳戶並在本機安裝 Git)。

注意:

PHP Client Libraries for Azure 相依於
HTTP_Request2(https://pear.php.net/package/HTTP\_Request2)、
Mail_mime(https://pear.php.net/package/Mail\_mime) 、
Mail_mimeDecode(https://pear.php.net/package/Mail\_mimeDecode)
PEAR 封裝。建議使用

PEAR 封裝管理員(https://pear.php.net/manual/en/installation.php)

來安裝這些封裝,以解決這些相依性。

2.將下載之封存檔的 WindowsAzure 目錄複製到應用程式目錄結構中,並從您的應用程式參考類別。

Azure PowerShell 和 Azure 模擬器

Azure PowerShell 是一組 PowerShell Cmdlet,可用於部署和管理 Azure 服務 (例如雲端服務和虛擬機器)。Azure 模擬器是雲端服務和資料管理服務的模擬器,可讓您在本機測試應用程式。只有 Windows 支援這些元件。

安裝 Azure PowerShell 和 Azure 模擬器的建議方式就是使用

 Microsoft Web Platform Installer

(https://go.microsoft.com/fwlink/?linkid=253447&clcid=0x404)。

請注意,您也可以選擇安裝其他開發元件,例如 PHP、SQL Server、適用於 SQL Server for PHP 的 Microsoft 驅動程式和 WebMatrix。

如需有關如何使用 Azure PowerShell 的詳細資訊,請參閱如何安裝及設定 Azure PowerShell

(https://go.microsoft.com/fwlink/?linkid=252718\&clcid=0x404) (英文)。

Azure CLI

Azure CLI 是一組命令,可用於部署和管理 Azure 服務,例如 Azure 網站和 Azure 虛擬機器。如需安裝 Azure CLI 的相關資訊,請參閱安裝Azure CLI (https://azure.microsoft.com/zh-tw/documentation/articles/xplat-cli-install/)。

後續步驟

如需詳細資訊,請參閱 PHP 開發人員中心(https://azure.microsoft.com/develop/php/)。

以下可以參考Microsoft Channel9相關影片學習

l   Open Source on Azure 系列課程

l   充分使用 Open Source 加速解決方案