在 Azure 應用程式服務中建立 PHP-MySQL Web 應用程式並使用 Git 部署
本教學課程說明如何建立 PHP-MySQL Web 應用程式,以及如何使用 Git 將其部署至 App Service。您會使用 PHP、MySQL 命令列工具 (MySQL 的一部分)、Web 伺服器,以及安裝在您的電腦上的 Git。本教學課程裡的說明可運用在包括 Windows、Mac 與 Linux 的任何作業系統上。看完本指南後,您將擁有可在 Azure 上執行的 PHP/MySQL Web 應用程式。
您將了解:
- 如何使用 Azure 入口網站建立 Web 應用程式和 MySQL 資料庫。由於預設會在 App Service Web Apps 上啟用 PHP,因此您不需要執行任何特殊步驟就能執行 PHP 程式碼。
- 如何使用 Git 來發行與重新發行應用程式到 Azure。
依照本教學課程進行,您將使用 PHP 建置一個簡易的註冊 Web 應用程式。此應用程式將裝載於 Web Apps 中。完成之應用程式的螢幕擷取畫面如下:
設定開發環境
NOTE:
如果您是在 Windows 電腦上執行本教學課程,則您可以安裝 Azure SDK for PHP 來設定電腦使用 PHP 並自動設定 IIS (Windows 內建的 Web 伺服器)。
建立 Web 應用程式並設定 Git 發佈
請遵循以下步驟來建立 Web 應用程式與 MySQL 資料庫:
- 登入 Azure 入口網站。
- 按一下入口網站左下方的 [新增]**** 圖示。
- 依序按一下 [Web + 行動]*、[Azure Marketplace]*。
- 依序按一下 [Web 應用程式]**** 和 [Web 應用程式 + MySQL]*。然後按一下 [建立]*。
- 輸入資源群組的有效名稱。
- 輸入新 Web 應用程式的值。
- 輸入新資料庫的值,包括同意法律條款。
- 建立 Web 應用程式之後,您將會看到新的資源群組。按一下 Web 應用程式名稱以進行設定。
- 按一下 [設定連續部署]****。
- 針對來源選取 [本機 Git 儲存機制]****。
- 若要啟用 Git 發佈,您必須提供使用者名稱和密碼。請寫下您建立的使用者名稱與密碼(如果您之前設定過 Git 儲存機制,系統將會略過此步驟。)
取得遠端 MySQL 連線資訊
若要連接至在 Web Apps 中執行的 MySQL 資料庫,您需要連線資訊。若要取得 MySQL 連線資訊,請依照以下步驟執行:
- 從資源群組中,按一下資料庫:
- 從資料庫摘要中,選取 [屬性]****。
- 記下
Database
、Host
、User Id
及Password
的值。
在本機建置及測試您的應用程式
現在您已經建立了 Web 應用程式,您可以在本機開發自己的應用程式,並在測試後進行部署。
註冊應用程式是一項簡單的 PHP 應用程式,您只需提供名稱與電子郵件地址就能註冊活動。先前的註冊者相關資訊會顯示在資料表中。註冊資訊會存放在 MySQL 資料庫。該應用程式包含一個檔案 (複製/貼上以下提供的程式碼):
- index.php:顯示註冊表單,以及內含註冊者資訊的資料表。
若要在本機建置與執行應用程式,請遵循下列步驟。請注意,這些步驟假設您具有 PHP、MySQL 命令列工具 (MySQL 的一部分),以及一部在本機電腦上設定的 Web 伺服器,而且您已經啟用了 MySQL 的 PDO 延伸功能。
- 使用您先前擷取的
Data Source
、User Id
、Password
和Database
值,連線到遠端 MySQL 伺服器:mysql -h{Data Source] -u[User Id] -p[Password] -D[Database]
- MySQL 命令提示字元會顯示:
mysql>
- 貼上下列
CREATE TABLE
命令,以在您的資料庫中建立registration_tbl
資料表:mysql> CREATE TABLE registration_tbl(id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(id), name VARCHAR(30), email VARCHAR(30), date DATE);
- 在 Web 伺服器的根目錄中,建立名為
registration
的資料夾,然後在其中建立一個名為index.php
的檔案。 - 在文字編輯器或 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 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>
您現在可以瀏覽至 http://localhost/registration/index.php 測試應用程式。
發佈您的應用程式
當您在本機完成應用程式測試之後,可以使用 Git 將其發佈至 Web Apps。您將初始化本機 Git 儲存機制並發行該應用程式。
- (選用) 如果您忘記或是錯置了 Git 遠端儲存機制 URL,請瀏覽至入口網站上的 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
系統會提示您輸入先前建立的密碼。 - 瀏覽至 http://[site 名稱].azurewebsites.net/index.php 以開始使用該應用程式 (此項資訊將儲存在您的帳戶儀表板上):
發佈應用程式之後,您可以開始對其進行變更,並使用 Git 來發佈它們。
將變更發佈至應用程式
若要將變更發佈至應用程式,請依照以下步驟進行:
- 在本機對應用程式進行變更。
- 開啟 GitBash (如果 Git 位於您的
PATH
,則為終端機),將目錄變更為應用程式的根目錄,並執行下列命令:git add . git commit -m "comment describing changes" git push azure master
系統會提示您輸入先前建立的密碼。 - 瀏覽至 http://[site 名稱].azurewebsites.net/index.php 以查看您的應用程式以及您所做的任何變更:
NOTE:
如果您想在註冊 Azure 帳戶前開始使用 Azure App Service,請移至試用 App Service,即可在 App Service 中立即建立短期入門 Web 應用程式。不需要信用卡;沒有承諾。
變更的項目
- 如需從網站變更為 App Service 的指南,請參閱:Azure App Service 及其對現有 Azure 服務的影響
- 如需從舊的入口網站變更為新入口網站的指南,請參閱:巡覽預覽入口網站的參考
沒有留言:
張貼留言