2007年5月15日 星期二

CakePHP使用手冊-安裝

轉貼自 http://www.ezluk.org/

第一節



引言



您現在應該已經理解CakePHP函式庫的目錄結構和用途。也可能您直接略過前幾章來到這裡,壓根不想理會那些理論,只想開始馬上開始玩?
無論如何,準備開始把你的手弄髒吧!



本章會說明伺服器上需要安裝那些東西、以不同的方式設定伺服器、
下載和安裝CakePHP、開啟預設的CakePHP網頁。再教一些在某些事不照排理出牌時,還能找到問題的小技巧。




第二節



需求



為了使用CakePHP,您必須擁有一台安裝了所有函式庫和應用程式的伺服器以執行CakePHP:




伺服器需求



這兒列出能執行CakePHP的伺服器最低需求:





  1. 一套HTTP伺服器 (如Apache) ,啟動以下功能:sessions, mod_rewrite (非絕對需要,但最好有)。





  2. PHP 4.3.2 以上的版本。是的,CakePHP可以在PHP 4 或 5 正常執行。





  3. 一套資料庫引擎 (目前支援MySQL, PostgreSQL 與ADODB)。







第三節



安裝 CakePHP




取得最新的穩定版本



有幾種安心取得CakePHP的方法:由CakeForge取得穩定版本,取得每晚重建版,或由SVN取得最新的開發中版本。




要下載穩定版本,
請到http://cakeforge.org/projects/cakephp/ 找檔案區。



要取得每晚重建版,可由http://cakephp.org/downloads/index/nightly 取得。
每晚重建版是穩定的版本,而且常常修正穩定版本的bug。



由SVN取得最近的開發中版本,使用你偏好的SVN程式連到
https://svn.cakephp.org/repo/trunk/cake/ 然後選一個版本下載。





解開檔案封包



現在您應該已經取得最近的版本了,把這個經過壓縮的封包放到web server的webroot上。
接下來要做的是解開CakePHP封包檔,解開後的目錄可用二個方案配置:
開發環境方案,可以在一個網域中輕易的流覽多個CakePHP應用程式;
產品方案,在一個網域中只允許一個CakePHP應用程式存在。
第一種方案只建議在開發環境中使用,因為它比較不安全。
第二種安裝方案比較安全,可以用在產品的環境。



註:/app/tmp 資料匣必須設定成可以讓執行web server的使用者寫入。





第四節



安裝CakePHP


開發環境方案



如果是要開發程式,我們可以把整個Cake安裝目錄放置到DocumentRoot內,像這樣:


/wwwroot
/cake
/app
/cake
/vendors
.htaccess
index.php


wwwroot 資料匣指的就是web的根目錄。在這種方案中,URL看起來會像這樣(如果有使用 mode_rewrite):



www.example.com/cake/controllerName/actionName/param1/param2



產品方案



你必須有權改變伺服器內的DocumentRoot設定才能使用產品方案安裝。
安裝後會讓整個網域運作起來很像只有一個CakePHP應用程式在跑。



產品方案的目錄結構如下:



../path_to_cake_install
/app
/config
/controllers
/models
/plugins
/tmp
/vendors
/views
/webroot <-- 這裡就是新的DocumentRoot所在
.htaccess
index.php
/cake
/vendors
.htaccess
index.php



產品方案中建議的httpd.conf設定方式



DocumentRoot /path_to_cake/app/webroot



這樣的設定會把webroot目錄當成網站的根目錄,此時URL就變成下面這樣(如果有使用 mod_rewrite):



http://www.example.com/controllerName/actionName/param1/param2



進階方案: 另一種安裝方式



有些狀況您會想要把Cake的目錄放在磁碟的其他地方。
原因可能來自分享主機的限制,或者你想讓不同的應用程式分享同一個Cake函式庫。



Cake應用程式有三大部分:





  1. CakePHP 核心函式庫 – 放在/cake





  2. 應用程式程式碼 (如 controllers, models, layouts 和 views) – 放在/app





  3. 應用程式的webroot 檔 (如圖片, javascript 和 css) – 放在/app/webroot





除了webroot目錄必須放在web伺服器可存取的地方外,其餘目錄可在檔案系統中可任意放置。
甚至可以把webroot目錄移出app資料匣,只要您事先告訴Cake放置的位置即可。



要把Cake設定成您選擇的配置,必須修改/app/webroot/index.php (隨Cake發佈的位置)。
您需要修改三個常數:ROOT,APP_DIR和CAKE_CORE_INCLUDE_PATH。





  1. ROOT 設定成含有app資料匣的位置





  2. APP_DIR 設定成 app 資料匣的位置





  3. CAKE_CORE_INCLUDE_PATH 設定成放置Cake函式庫的資料匣.






/app/webroot/index.php (移除了一些說明)



if (!defined('ROOT'))

{

    define('ROOT', dirname(dirname(dirname(__FILE__))));

}



if (!defined('APP_DIR'))

{

    define ('APP_DIR', basename(dirname(dirname(__FILE__))));

}



if (!defined('CAKE_CORE_INCLUDE_PATH'))

{

    define('CAKE_CORE_INCLUDE_PATH', ROOT);

}



如果還是不太明白,下面再舉一個例子。如果我要讓Cake以下面的配置運作:




  1. 我想讓Cake函式庫和其他應用程式共用,且放在/usr/lib/cake




  2. 我的Cake webroot 目錄必須是/var/www/mysite/





  3. 我的應用程式檔案會放在/home/me/mysite




檔案配置看起來會像這樣:
/home
/me
/mysite <-- 原本是/cake_install/app
/config
/controllers
/models
/plugins
/tmp
/vendors
/views
index.php
/var
/www
/mysite <-- 原本是/cake_install/app/webroot
/css
/files
/img
/js
.htaccess
css.php
favicon.ico
index.php
/usr
/lib
/cake <-- 原本是/cake_install/cake
/cake
/config
/docs
/libs
/scripts
app_controller.php
app_model.php
basics.php
bootstrap.php
dispatcher.php
/vendors


需求定好後,編輯放在webroot的index.php檔(這個範例中應該是在/var/www/mysite/index.php),讓它看起來像這樣:



建議使用'DS'取代分隔目錄名稱的斜線,而不要直接使用斜線。
如此可以防止打錯分格符號而出現'missing file'的錯誤,更可以讓程式更具可移植性。




if (!defined('ROOT'))

{

    define('ROOT', DS.'home'.DS.'me');

}



if (!defined('APP_DIR'))

{

    define ('APP_DIR', 'mysite');

}



if (!defined('CAKE_CORE_INCLUDE_PATH'))

{

    define('CAKE_CORE_INCLUDE_PATH', DS.'usr'.DS.'lib'.DS.'cake');

}




第五節



設定 Apache 和 mod_rewrite



由於CakePHP使用到mod_rewrite功能,我們就發現少數的使用者,因為沒有設定好這項功能,而無法順利的在他們的系統中玩CakePHP。
這裡有幾點注意事項要注意:





  1. 確認有允許覆蓋使用目錄下的.htaccess 檔: 在 httpd.conf 中可以找到某區用於設定每個目錄的存取狀況。
    確認我們安裝的目錄中,AllowOverride 是設定成 All





  2. 確定您編輯的是系統使用的httpd.conf 而不是使用者或網站自有的httpd.conf。





  3. 有時候你取得的CakePHP會缺少.htaccess檔。
    原因可能是一些作業系統把'.' 開頭的檔隱藏起來而沒有復製到。
    請確認您的CakePHP是由我們指定的地點下載的。





  4. 確定mod_rewrite有被正被的載入!
    在httpd.conf中應該會找到類似LoadModule rewrite_module libexec/httpd/mod_rewrite.so
    AddModule mod_rewrite.c的文字。
    注意這些文字沒有被加上註解符號。





  5. 如果您將Cake安裝在使用者目錄 (http://example.com/~myusername/),則必須修改Cake安裝目錄下的.htaccess內容。
    只要加" RewriteBase /~myusername/ "。





  6. 如果因為某些原因,你的URL被加上了一個很長的匿名session ID

    http://example.com/posts/?CAKEPHP=4kgj577sgabvnmhjgkdiuy

    ,則可以在安裝根目錄中的.htaccess 加上" php_flag session.trans_id off "。






第六節



確認它的運作情形



讓我們看看這寶貝是否能正常運作。依您使用的安裝方案,將瀏覽器指向http://www.example.com 或 http://www.example.com/cake。
此時,應該會出現CakePHP預設網頁,和一些告訴你目前資料庫連線狀態的訊息。



恭喜! 您可以開始建立第一個Cake應用程式了。


沒有留言:

網誌存檔

關於我自己

Aspire freedom , Hope to do Soming make self complete ~