相信許多人都有開發 PHP 的相關經驗,豐富的資源及其便利性皆為不可忽視的優點,程式本身撰寫起來也相對容易,相較之下環境建置及部署反而成為許多開發者的困擾。PHP Fog 透過 PaaS 的方式減輕了開發者在這方面的負擔,透過幾個簡單的步驟便將開發時所需的環境及資料庫設定完成,並且提供許多 Framework 可直接選用,讓開發者能更專注於程式開發。以下將透過 PHP Fog 平台簡易實做 PHP 程式開發。
開始使用 PHP Fog 前,必須註冊帳號才能建置開發的程式。首先連至 PHP Fog 官方網頁,在首頁就可以找到明顯的〔Get Started〕的字樣,簡單填寫信箱和設定密碼後即可直接註冊帳號。
接著會要求選擇使用哪種類型的程式,分成 Applications 及 Frameworks 兩種類型,可依自己的需求選擇。本文將上傳自行撰寫之程式碼作為範例,故此處選擇 Frameworks 中的〔Custom App〕,若有疑問也可點選〔more info〕查看相關訊息及說明。
下一步需要填入 MySQL 密碼及對應的 Domain 位置,PHP Fog 預設會針對每個應用設定一個對應 Domain (*.phpfogapp.com),此處依據自己之需求填寫即可。
到此已經完成基本的環境設定,還需要一些時間完成初始化,藉由畫面中的 Status 可確認是否部署完成,一般來說不會太久。
完成前述設定後,便可進行程式開發上傳。首先必須先設定好本地端工作環境。PHP Fog 採用 Git 管理程式碼,順便管控檔案版本。若不熟悉 Git,可參考官方網站提供的說明教學。使用 Git 操作檔案時必須透過 SSH 的方式進行,因為不同平台的設定方式會有些許差異,此處用 Linux (Ubuntu) 做介紹,其他平台建議可參考官方提供的教學設定。
使用 Git 前必須先設定公鑰、私鑰,藉以辨別開發者身分和管理程式碼,接著會介紹如何設定公鑰及私鑰。
可透過 ssh-keygen 指令產生公鑰、私鑰,此處選擇使用 RSA 加密演算法來產生需要的公鑰、私鑰。
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/USER/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/USER/.ssh/id_rsa.
Your public key has been saved in /home/USER/.ssh/id_rsa.pub.
在設定過程中會詢問公鑰、私鑰存放的路徑,此處可依個人需求設定,通常直接使用系統預設的路徑即可。另外需注意系統會詢問 passphrase 設定,此設定主要是為了確保金鑰的安全而建的第二道防線,在 Git 操作時會再度詢問。建議設定後記錄下來,每次操作時皆會詢問。
完成後可於先前設定的路徑中找到公鑰 (id_rsa.pub)、私鑰 (id_rsa) 檔案,將公鑰內容複製起來,接著至 PHP Fog 設定 Public Key 的欄位貼上送出(Nickname 的地方可選擇不填,會依照貼上的公鑰內容設定顯示),完成後即可和 PHP Fog 同步程式碼進行編寫及修改。
設定完 SSH Public Key 之後,網頁會很貼心得顯示對應的 git clone 指令,將網頁內提供之 git clone 指令直接複製貼上到本機執行,即可將程式碼複製到對應的資料夾中。在操作時可能會要求輸入 passphrase,輸入產生公鑰、私鑰時設定的 passphrase 內容即可。
$ git clone
This e-mail address is being protected from spambots. You need JavaScript enabled to view it
:your_domain_name.phpfogapp.com
一開始選擇不同的應用,複製下來的程式內容也不相同。本範例選擇的是 Custom App,在複製下程式碼後,資料夾中已經包含 index.php 檔案,在此處修改新增 phpinfo() 函式,檢查是否正確顯示出 PHP 相關資訊。
<!?php
phpinfo();
?>
最後透過 git push
上傳修改過的程式碼。
$ git commit -a -m 'Add phpinfo() for test'
$ git push
上傳完成後,可至網站中對應之「Share cloud」,點選「View live site」連結至先前設定的網站。 由網頁內容判斷確實已按照修改後的內容呈現,同時得知目前 PHP Fog 使用的 PHP 版本為 5.3.2。
PHP Fog 中每個 app 都會配置 MySQL 供開發者使用,在設定 app 時,會一併要求設定 MySQL 的密碼。在網頁中可直接點選〔Launch phpMyAdmin〕,進入 phpMyAdmin 登入頁面後輸入帳號密碼,便可配置開發時所需要的資料庫環境。(註:phpMyAdmin 為一套用 PHP 為基礎,以 Web-Base 方式架構在主機上的 MySQL 資料庫管理工具。)
此處先利用 phpMyAdmin 建立一個測試資料表及測試資料。於 phpMyAdmin 介面中的左側選單可找到【建立資料表】的選項,點選進入後設定資料表名稱和其欄位設定,即可完成資料表的新增。此處建立一個資料表名稱──testable,以及兩個欄位──Column1 (int)、Column2 (text)。
若資料表順利建立,在 phpMyAdmin 介面的左側選單應可看見新增的資料表名稱,點選後可以看到資料表的細節設定。接著可選擇右側上方選單的【插入】選項新增資料,按照欄位設定填入設定值,點選〔執行〕即可完成測試資料的新增。
建立完測試資料表及測試資料後,接著透過簡單的 PHP 程式範例操作 MySQL。PHP Fog 在網站中貼心得提供撰寫 PHP 時連線使用資料庫的程式範例。此處需注意,網站範例中會自動帶入 Server 名稱、username 等訊息,但是 password 的部分則需自己填入。
按照範例撰寫,成功讀出資料庫中的測試資料。
<?php $con = mysql_connect( $server = "db01-share", $username = "Custom App-*****", $password = "your_password"); mysql_select_db("yourDomainName_phpfogapp_com", $con); $result = mysql_query("SELECT * FROM table"); echo "<table border="1">
<tr>
<th>Column1
</th>
<th>
Column2
</th>
</tr>
"; while($row = mysql_fetch_array($result)) { echo "
<tr>
"; echo "
<td>
" . $row['Column1'] . "
</td>
"; echo "
<td>
" . $row['Column2'] . "
</td>
"; echo "
</tr>
"; } echo "
</table>
"; mysql_close($con); ?>
此處需注意,網頁中提供的連線範例主要是透過 mysql_connect 函式做連線,PHP5 後建議使用 PDO 的方式連線至資料庫,以提升彈性及安全性。
<?php
$dsn = "mysql:host=db01-share;dbname= yourDomainName_phpfogapp_com ";$dbh = new PDO($dsn,' Custom App-*****', 'your_password');
$result = $dbh->query(' SELECT * FROM table '); echo "<table border='1'>
";
<tr>
</th>Column1
</th>
</th>Column2
</th>
</tr>
while($row = $result->fetch()){ echo "
<tr>
"; echo "
<td>
"
. $row['Column1'] . "
</td>
"
; echo "
<td>
" . $row['Column2'] .
"
</td>
"
; echo "
</tr>
"; } echo "</table> ?>
在開發 PHP 程式時難免需要查看 error log 檢查程式哪邊出了問題,目前 PHP Fog 平台尚未提供查看 error log 的功能,根據網站的說明,此功能正在實作中。
若需要查看 PHP 的錯誤訊息,目前可以先使用這個方法。於程式碼中加上:
error_reporting(E_ALL);
ini_set('display_errors', '1');
透過 display_errors 的設定直接將錯誤訊息顯示於網頁中,但上線時切記要移除,畢竟錯誤訊息只適合給開發者看到。
PHP Fog 為了確保系統及開發者環境的安全,對 PHP 部分函式做出限制。例如:system()、exec() 一類的系統函式就無法使用,詳細的列表可參閱官方網頁的說明。
PHP Fog 透過 PaaS 的方式幫助開發者快速部署需要的環境,減低以往部署的負擔。另外同時提供許多 Framework 讓開發者直接套用,無論是剛開始接觸的新手或是已有經驗的開發者都能受惠。透過 Git 上傳的方式同時兼顧了檔案的版本控管,這也是很不錯的地方,但對剛開始接觸的開發者而言,這可能是需要預先學習的課題。在這些便利的背後,也存在必須負擔的成本,例如環境及功能上的限制。對於大型專案的開發者,必須要考量 PHP Fog 是否能滿足各方面的需求。總的來說,若您對雲端有興趣,又選擇撰寫 PHP,PHP Fog 是個很好的選擇。