2007-01-07

CakePHP Manual翻译3:安装CakePHP


安装CakePHP


第一节


介绍

你现在已经知道CakePHP的目的和结构了,如果你仅仅是想开始使用CakePHP,不关心这些文档,而跳过这部分,那么后面你将会遇到一些麻烦。


这一章将讲述服务器上必须安装的东西,配置服务器的不同方式,下载安装CakePHP,展现CakePHP的默认页面,和一些不在计划内的问题的解决方式。


第二节


安装需求

为了使用CakePHP,你必须先有一个包含能够运行CakePHP的库和程序的服务器。


服务器需求

下面是一些运行CakePHP的服务器需求:


Here are the requirements for setting up a server to run CakePHP:




  1. 一个HTTP服务器(例如:Apache) 并且使这些模块有效-- sessions, mod_rewrite (这个不是必须的但是最好有这个功能)。




  2. PHP 4.3.2 或者更新的版本。CakePHP可以工作在PHP 4和5或者更新的版本。




  3. 一个数据库引擎(现在CakePHP支持MySQL, PostgreSQL 和一个wrapper for ADODB).




第三节


安装CakePHP

获得最新的稳定版本

通过这些方式你可以安全的获取一份CakePHP的拷贝:从CakeForge获取稳定版本,抓取每日构建,或者从SVN获取最新的代码。


去http://cakeforge.org/projects/cakephp/下载CakePHP项目的稳定版本。


去http://cakephp.org/downloads/index/nightly获得一个每日构建的版本。这些版本是稳定的,但是在发布成稳定版本之前常常会有一些bug需要修订。


选择你最喜欢的SVN客户端去https://svn.cakephp.org/repo/trunk/cake/获得一份你想要版本的CakePHP代码。


解压缩

现在你已经下载了最新的版本,把下载的压缩包放在你web服务器上的根目录下。现在你需要将CakePHP解压缩。解压有两种方式,一种是使用开发设置,这种方式可以方便的在一个域上放置多个CakePHP应用;另外一种是产品设置,这种方式可以在一个域上运行一个单独的CakePHP应用。


第四节


设置CakePHP

设置CakePHP的第一种方式使用开发环境的设置,但是这种方式不是很安全。另外一种更加安全的方式是使用产品环境设置。


注:当你的web服务器运行的时候/app/tmp 目录必须可写。


开发方式的设置

在开发方式时,我们可以把整个Cake的安装目录放到web服务器的根目录下(DocumentRoot)像下面这样:




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


在这种设置下wwwroot文件夹是你web server的根目录,你的url可能像下面这样(如果你启用web server的mod_rewrite功能)


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


产品方式的设置


为了使用产品方式的设置,你需要有一些修改web server的根目录(DocumentRoot )的权限。这样做可以使整个web server的域运行一个CakePHP应用。


产品方式设置的文件布局如下:




../path_to_cake_install
/app
/config
/controllers
/models
/plugins
/tmp
/vendors
/views
/webroot <-- 将web server的根目录(DocumentRoot )指向这里
.htaccess
index.php
/cake
/vendors
.htaccess
index.php



建议产品方式的web服务器配置httpd.conf


DocumentRoot /path_to_cake/app/webroot


在这种设置下wwwroot文件夹是你web server的根目录,你的url可能像下面这样(如果你启用web server的mod_rewrite功能)


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


高级设置: 可选的安装选项


下面有一些案例,展示了将Cake的目录放在不同的地方。这些情况是当你的应用在一台共享的主机(译者注:如在租用的空间上放置你的web应用),或者当你想多个应用共享一个Cake库。


Cake应用有三个主要的部分:






  1. CakePHP的核心库 - 在 /cake





  2. 应用的代码 (如:controllers, models, layouts和views) - 在 /app





  3. 应用的根目录访问文件 (如:images, javascript和css) - 在 /app/webroot





这些文件夹可以放在文件系统的任何位置,除了webroot,他是需要被web server访问的。你可以将webroot放到app的外面,当你移动webroot的时候同时也要告诉Cake你把他放到哪里了。


如果你这样做了,你需要修改/app/webroot/index.php 。有三个常量需要更改:








  1. ROOT 必须设置成包含 app 文件夹的目录.





  2. APP_DIR 别需设置成 app 目录(译者注:通常就是'app').





  3. CAKE_CORE_INCLUDE_PATH 应该被设置成 Cake 库的目录(译者注:是指包含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被其他应用共享, 并且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'常量,而不是用斜线('/')分隔文件路径。这种方式避免了你可能误用错误的分隔符而导致的"文件丢失错误",并且这样会使你的代码更加轻便。


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支持时候,我们发现许多用户由于不能完美运行他们的系统而苦恼。下面是一些可能需要尝试并且使之正确运行的事情:






  1. 确认.htaccess 允许被重载:在httpd.conf,你的服务器上你必须确认为每一个Directory(虚拟目录)定义一个section。 确认当前Directory的AllowOverride 选项被设置成 All





  2. 确定你修改的是系统的httpd.conf,而不是用户或者特定站点的httpd.conf。





  3. 由于一些原因你可能获得了一份没有.htaccess文件的CakePHP的拷贝。这种情况有可能是因为一些操作系统将以'.'开头的文件看作隐藏文件,从而没有拷贝他们。确认你的CakePHP拷贝是从官方网站或者SVN库中下载的。





  4. 确认你正确的加载了mod_rewrite模块。你需要在你的httpd.conf中查看一下LoadModule rewrite_module libexec/httpd/mod_rewrite.so 和 AddModule mod_rewrite.c





  5. 如果你安装CakePHP在一个用户目录 (如:http://example.com/~myusername/), 你需要在Cake安装的根目录中修改.htaccess文件,添加一行 "RewriteBase /~myusername/".





  6. 如果因为某些原因你的URL后缀太长, 如令人讨厌的session ID (http://example.com/posts/?CAKEPHP=4kgj577sgabvnmhjgkdiuy1956if6ska),你可以在Cake安装的根目录中的.htaccess文件添加"php_flag session.trans_id off" 。





第六节



确认他在工作


好的,让我们看看Cake是如何工作在你的设置下的。在浏览器中输入http://www.example.com 或者 http://www.example.com/cake,你会看到CakePHP的默认页面,页面上会显示一些数据库链接的信息。那么恭喜你,你已经准备好创建一个基于Cake的应用了。


没有评论: