2009年12月21日 星期一

CakePHP教學 on OSX(四)安裝CakePHP

本來安裝CakePHP真的只是小蛋糕一塊。只要下載之後解壓縮,把檔案丟進伺服器的根目錄就好了。但是如果在OSX上這樣安裝會使得Apache縮短網址的功能,也就是把本來像是 http://www.mysite.com/index.php?action=A&id=B這種長網址的形式,縮短成 http://www.mysite.com/AB 這種短網址的功能失效!

原因是因為CakePHP檔案夾裡設定Apache取用權限的 .htaccess 檔案,在OSX下是屬於隱藏檔。安裝時很容易因為沒有複製到預設的 .htaccess 檔案,而讓Apache的縮址功能失效。當然,自己寫一個 .htaccess 檔案也可以,但很容易出錯。因此我的方法是使用Onyx這個工具程式,把OSX的隱藏檔案顯示出來。這樣就可以減少因為 .htaccess 檔案遺失產產生的問題。

顯示OS的隱藏檔案
  1. Onyx網站上下載Onyx,2.1.2版 for 10.5, 2.0.6版for 10.6。下載後,解開.dmg檔案,把Onyx程式拖進“應用程式(Applications)”檔案夾;
  2. 安裝好後,執行Onyx。它會先檢測硬碟等等,並要求輸入您的帳號密碼;
  3. 等出現Onyx視窗後,按下上方的“參數”圖示,然後按下方的“Finder”標籤,然後勾選“顯示不可見文件與文件夾”;
  4. Finder會立即重新啓動,之後就可以在OSX視窗看到隱藏檔案。
安裝CakePHP
  1. 記得要先安裝MAMP
  2. 先在MAMP的網頁根目錄(路徑是 /Applications/MAMP/htdocs )底下,新增一個名為 cake_1_2 的檔案夾;
  3. CakePHP官網下載,目前的穩定版本是1.2.5
  4. 下載後,解開cake_1.2.5.dmg。如果之前已經用Onyx設定顯示隱藏檔案,應該就能看到.htaccess 檔案。
  5. 把除了 .Trashes 檔案夾(這個項目無法也不必複製)之外的項目全部選取後,拖進cake_1_2 的檔案夾(路徑是 /Applications/MAMP/htdocs/cake_1_2 );
  6. 先確定MAMP已經啓動Apache伺服器。然後打開瀏覽器,輸入 http://localhost:8888/ (8888是MAMP預設Apache伺服器的通訊埠)或 http://localhost/ (如果按照先前MAMP安裝 的說明把Apache的通訊埠改為預設的80),應該就可以看到CakePHP的啓動畫面如下:
接下來就準備將Aptana調整一下,整合CakePHP的Bake腳本指令。

CakePHP教學 on OSX(三)開發環境:Aptana & PDT

IDE的選擇
Eclipse是受很多開發者歡迎的整合開發環境(IDE),尤其是開發Java程式。它的優點是免費,以及應用Java開發而產生跨平台的特性。同時擁有很多外掛,可以適應不同的開發語言與開發目的。不過也因為是以Java為基礎,所以先天上的效能與雙位元語言的支援上都有點抱歉,尤其是在OSX上。所幸有Aptana的出現,將Eclipse改寫為OSX的原生程式,大幅提高了執行的效能,但仍具有Eclipse相容性,能支援多數Eclipse用的外掛。

Aptana的開發一開始就是針對Web的應用,因此最初的版本主要針對JavaScript的開發。隨著RoR的出現,Aptana也開發了自己的RoR套件稱為RadRails,1.5版後RadRails變成內建套件,它將RoR開發常用的WEBrick伺服器,Sqlite簡易資料庫,Gem腳本程式等整合在一起,使得Aptana儼然成為OSX上開發RoR的最佳選擇。

不過到了2.0版,Aptana乾脆放棄了其他套件如PHP的開發,專心發展RadRails。所幸Eclipse這邊也推出了PDT(Php Development Tools)。因此使用Aptana 1.5有內建的PHP套件,但Aptana 2.0則必須要自行安裝Eclipse的PDT套件。

安裝與設定
  1. Aptana官方網站上下載最新版的Aptana Studio 2.0
  2. 因為Aptana正在推廣它的RadRails套件,所以官網上出現的是Aptana RadRails,不用擔心,這個只是內建了RadRails,還是能安裝其他套件。中間的下拉選單(Standalone/Mac/Full Installer)不要更動,直接按下“Download Now”按鈕下載回來就是;
  3. 打開下載的dmg檔案,把Aptana 2.0檔案夾拖進"應用程式(Applicarions)"就好了;
  4. 找到 /Applications/Aptana 2.0/AptanaStudio 程式,點二下打開;
  5. Aptana Studio的啓動畫面;
安裝Aptana的Plugin
  1. Aptana Studio的首頁,按下間下方的“Install Plugin”連結;
  2. Plugin頁面可以看到Aptana內建的外掛,例如RadRails等,要安裝其他如Eclipse的外掛,請按下“View Plugin Manager”連結;
  3. 視窗下方會出現“Plugin Manager”分割視窗,按分割視窗右上方綠色的“+”號按鈕;
  4. 出現“Install Additional Features”視窗,選擇PHP開發必要的外掛,例如PHP Development Tools(PDT), PHP DebuggerBinaries 跟 jQuery Support等等,然後按下“Install”按鈕;
  5. 接下來Aptana會自己上網找到套件下載,請稍等:

  6. 確認可用的套件後,可以再選擇一次。PDT SDK 2.0.1有問題無法下載請不要勾選。Ajax套件如果不須要也可以不用全部下載,我只安裝了jQuery。Zend CE Features有時下載速度很慢,如有問題可以稍候再選。確認無誤後,請按“Next>”按鈕;
  7. 網路速度過慢,或某個套件下載有問題時,會出現等候視窗。按右邊的紅色方塊可以取消下載,重新選取個別的套件,分別下載;
  8. 全部下載完畢會出現“Install”視窗,請按“Next >”;
  9. 安裝過程的版權宣告有點囉唆,剛開始不太習慣。請先按“I accept ....”那一項接受版權宣告,然後再按“Finish”按鈕才行;
  10. 接下來才會真正地安裝,真是奇怪的程序;
  11. 終於安裝完畢,接下來要重新啓動Aptana,請按“Yes”;
  12. 以後隨時要安裝Aptana的外掛,可以從Help選單中選擇“Install Aptana Features...”即可;
設定Aptana預設的文件語言編碼
  1. Aptana安裝完後,預設的語言編碼會與系統相同(例如Big5),最好調整一下設定改成utf-8,以減少以後開發上語言編碼的困擾。請從Aptana選單選擇“偏好設置(Preference)”;
  2. 從側邊欄的“General”下找到“Workspace”項目,把右頁左下方的“Text File Encoding”項目,點選“Other”,然後選單選“UTF-8”,然後按“Apply”或“OK”按鈕。
接下還要安裝CakePHP並與Aptana整合。
上一篇|下一篇 安裝CakePHP >

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,進行網站開發。