顯示具有 AMP 標籤的文章。 顯示所有文章
顯示具有 AMP 標籤的文章。 顯示所有文章

2009年12月21日 星期一

CakePHP教學 on OSX(二)安裝伺服器:MAMP

AMP開發伺服器的選擇

在OSX上要開發AMP網站基本上很容易。因為Apache伺服器跟PHP程式都是內建的,隨著作業系統還有免費的XCode開發環境。伺服器版的OSX Server內建MySQL,只有一般用的OSX版本需要額外安裝MySQL。對於高手來說,OSX上的AMP可以說是萬事俱備。

但是不幸的是,OSX內建的PHP,不知為何缺乏一些網站必要的函式庫,如處理圖檔的GD,處理雙位元語言的mbstring等等。對於程式高手來說,可以用XCode自己編譯這些函式庫並加入PHP,這對於我們這種非科班的程式的開發者來說,在OSX上要安裝這些PHP套件就非常麻煩。

對於我來說,有兩個選擇,一是安裝Marc Liyanage事先編譯好的Entropy PHP套件,另外就是使用MAMP程式。兩者的差別是,前者適用來取代系統內建的PHP,所以啓動方式往往得用到root權限來修改系統內建的一些設定檔案,比較適合拿來取代真正要作為伺服器使用的OSX上的PHP。後者是與作業系統分離的獨立軟體,不會干擾到系統的設置,比較適合拿來作在OSX上作程式開發之用。

此外,PHP的版本更新上,Entropy PHP套件的版本受限於Marc Liyanage個人的時間,更新速度比較慢;相較之下,MAMP的PHP版本更新速度就快很多。除了PHP版本外,使用Entropy PHP,還是得要自行安裝MySQL套件與phpMyAdmin。但往往因為OSX、MySQL、PHP的版本更新,尤其經歷OSX 10.5, 10.6大改版之後,往往造成Apache, PHP, MySQL與phpMyAdmin四者整合連線上的問題。而MAMP一個套件整合了Apache, MySQL, PHP4/5 跟phpMyAdmin等,讓開發者不須要自己解決整合問題,可以說省事許多。因此在OSX 10.6上開發AMP網站,MAMP可以說是最好的選擇。

安裝與啓動MAMP
  1. MAMP官方網站上,下載MAMP
  2. 從1.8版開始,MAMP把免費跟商用的Pro版本放在一起,所以解開dmg檔案後會有兩個版本。我們只要免費的MAMP就好了。把MAMP檔案夾拖進“應用程式(Appliactions)”檔案夾;
  3. 打開 /Appliaction/MAMP/MAMP 程式;
  4. 會提示輸入OSX的使用者密碼。啓用與關閉MAMP都要輸入據有管理員等級的使用者密碼;
  5. 然後就會出現MAMP視窗;
  6. 同時會啓動瀏覽器,顯示MAMP的起始頁面(Start Page)。
MAMP設置
  1. 按一下MAMP視窗的"Preferences..."按鈕;
  2. 基本上我個人習慣使用內建的Port,可以在測試時,少打一些字。按一下"Port"標籤,然後按下“Set to default Apache and MySQL ports”
  3. 要注意,如果使用Apache預設的port 80,記住要關掉OSX系統內建的“個人網頁共享”功能,以免內建的Apache伺服器跟MAMP衝突。
接下來要安裝開發環境Aptana。

CakePHP教學 on OSX(一)開發框架:CakePHP vs. RoR

網站開發語言選擇

RoR (Ruby on Rails)是新崛起的網站應用開發“框架(framework)”,以能迅速開發網路應用聞名。但對於已經習慣了PHP語法的我來說,Ruby語言實在過於簡化,而且依賴很多特殊的“符號(如<, ::, ?, @)”以及對於整個程式語法都很不習慣。加上Rails框架設計野心很大,整體架構也很龐大,很多魔法般的應用讓人對於整個MVC框架中,指令與資料的來龍去脈難以掌握。因此即使花了幾個月斷斷續續K了“敏捷網站開發(Agile Web Development with Rails)”還是沒看完,對於RoR的整體架構還是如入五里雲般,更別提什麼敏捷開發了。因此,不僅又回頭考慮,是不是該回頭好好研究比較熟悉的PHP程式,然後找一個好用的框架如ZendCakePHP來應用。

PHP語言也許不如Ruby的簡潔與完全的物件導向,但畢竟發展時間比較久,多數大型網站的程式還是使用PHP而不是Ruby。此外也考慮到,AMP(Apache, MySQL & PHP)在多數Linux為基礎的網路儲存伺服器(NAS)上還是主流。拿一台內建AMP的簡易的NAS,如SynologyQnap的產品作快速雛形網站測試,然後再搬遷到實際的網路伺服器,效率應該也不會比在伺服器上架構RoR差。更何況支援AMP的網路供應商,要比起RoR來得多很多。因此,選擇PHP來開發網站,現階段來說還是有很多優勢,尤其是對於已經熟悉PHP語法的人來說。

程式架構的選擇

在短暫的RoR學習中,了解它有幾項設計特性:
  1. 是考慮到資料庫的獨立性而不依賴特定的資料庫程式;
  2. 是資料架構(schema )設計與資料庫遷移(migrations)的便利性;
  3. 避免轉寫重複或類似功能的程式碼;
  4. 考慮未來發展大型網站的擴充性等等。
以上這些特性,都是其他程式框架發展可以學習的優點。而在PHP程式框架中,學的最徹底的大概就是CakePHP。像是搭鷹架(Scaffolding)的方式,寫一行程式就完成資料庫的CRUD(Creat, Retrieve, Update & Delete)功能,以及自動地由資料模型產生出程式碼的腳本等功能。在嘗試學習過一陣子RoR感到挫折之後,回頭看到這些CakePHP的功能與熟悉的PHP語法,可以說是倍感親切。

不過可惜的是,CakePHP的英文書不多,中文資訊更是不足,正體中文書好像完全沒有,台灣的使用者好像也不多。官方的文件本身就有很多部份沒說清楚,中文版更是殘缺不全。一堆API的文件是用外掛自動產生的內容過於簡短,缺乏像PHP官方網站上的應用範例,而許多由網友撰寫的範例則是放在麵包店(bakery)裡。這些因素,造成CakePHP這塊美味的蛋糕,在台灣好像一直乏人問津的樣子。

但是經過這幾天實際的嘗試學習時,還真的是覺得甜美無比。尤其是在OSX上,使用MAMP這個簡易的AMP伺服器,以及Eclipse為基礎,對OSX系統優化提升以執行效率,搭配OSX優美界面版的免費IDE:Aptana。發現只要經過適當的調教,可以讓CakePHP的開發,在Aptana裡如RoR般簡單,命令列指令也少得多了。

接下來解說在OSX10.5/10.6上,如何整合MAMP,Aptana與CakePHP,進行網站開發。