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 發佈
- 登入 Azure 入口網站。
- 按一下 [新增] 圖示。
- 按一下 [Marketplace] 旁的 [查看全部]。
- 依序按一下 [Web + 行動] 和 [Web 應用程式 + MySQL]。然後按一下 [建立]。
- 輸入資源群組的有效名稱。
- 輸入新 Web 應用程式的值。
- 輸入新資料庫的值,包括同意法律條款。
- 建立 Web 應用程式之後,您將會看到新的 Web 應用程式刀鋒視窗。
- 在 [設定] 中按一下 [繼續部署],然後按一下 [設定必要設定]。
- 針對來源選取 [本機 Git 儲存機制]。
- 若要啟用 Git 發佈,您必須提供使用者名稱和密碼。請寫下您建立的使用者名稱與密碼(如果您之前設定過 Git 儲存機制,系統將會略過此步驟。)
步驟二 :
取得遠端 MySQL 連線資訊
若要連接至在 Web Apps 中執行的 MySQL 資料庫,您需要連線資訊。若要取得 MySQL 連線資訊,請依照以下步驟執行:
步驟三 :
在本機建置及測試您的應用程式
現在您已經建立了 Web 應用程式,您可以在本機開發自己的應用程式,並在測試後進行部署。
在此提供一個簡單的註冊應用程式,註冊應用程式是一項簡單的 PHP 應用程式,您只需提供名稱與電子郵件地址就能註冊活動。先前的註冊者相關資訊會顯示在資料表中。註冊資訊會存放在 MySQL 資料庫。該應用程式包含一個檔案 (複製/貼上以下提供的程式碼):
- index.php:顯示註冊表單,以及內含註冊者資訊的資料表。
若要在本機建置與執行應用程式,請遵循下列步驟。請注意,這些步驟假設您已經在本機電腦上設定 PHP 和 MySQL 命令列工具 (MySQL 的一部分),且您已經啟用 MySQL 的 PDO 延伸功能。
1.使用您先前擷取的 Data Source
、User Id
、Password
和 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 入口網站中所示的步驟相同。
(選用) 如果您忘記或是錯置了 Git 遠端儲存機制 URL,請瀏覽至 Azure 入口網站上的 Web 應用程式內容。
開啟 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 以開始使用該應用程式 (此項資訊將儲存在您的帳戶儀表板上):
步驟五 :
將變更發佈至應用程式
若要將變更發佈至應用程式,請依照以下步驟進行:
在本機對應用程式進行變更。
開啟 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相關影片學習