Home PageКаталог Изменения НовыеКомментарии Пользователи Регистрация
CakePHP: Manual11/Installing ...

Установка CakePHP


Оглавление документа

Введение

Что ж, теперь вы знаете все, что можно знать о структуре и предназначении всех библиотек CakePHP, или же вы просто пропустили предыдущие главы и сразу перешли к этой, потому что вас абсолютно не волнуют библиотеки и вы просто хотите начать игру. В любом случае, вы уже готовы пачкать руки.
Эта глава опишет, что должно быть установлено на сервере, различные пути настройки сайта, закачки и установки CakePHP, а также некоторые советы по устранению ошибок (вдруг что-то пойдет не так, как запланировано).

Требования

Вот требования к настройке сервера для того, чтобы запустить CakePHP:

  1. HTTP сервер (любой, но лучше Apache) с поддержкой сессий и mod_rewrite (не обязательно, но предпочтительно)
  2. PHP 4.3.2 или выше. Да, CakePHP отлично работает как с PHP 4 так и с PHP 5.
  3. Движок базы данных (сейчас поддерживаются MySQL, PostgreSQL и обвертка для ADODB).

Установка CakePHP

Загрузка

Есть несколько способов получить копию CakePHP: взять релиз с сайта CakeForge, получить ночную сборку, или скачать свежую версию кода из SVN-хранилища.
Чтобы скачать стабильную версию кода, проверьте секцию с фалами CakePHP проекта CakeForge, посетив http://cakeforge.org/projects/cakephp/.
Ночную сборку можно скачать с http://cakephp.org/downloads/index/nightly. Ночные релизы стабильны и очень часто включают в себя исправления ошибок между официальными релизами.
Чтобы получить свежую копию из нашего SVN хранилища, воспользуйтесь своим любимым SVN клиентом и подключитесь к https://svn.cakephp.org/repo/trunk/cake/. Затем выберите версию поновее.

Распаковка

Теперь, когда вы скачали самый последний релиз, разместите запакованный файл на свой веб-сервер в корневой веб-каталог (webroot). Теперь вам нужно распаковать CakePHP. Есть 2 варианта расположения файлов: для разработчика, что позволит вам отображать множество CakePHP-приложений под одним доменом, или же используя «среду продукции», что позволит отображать одно CakePHP-приложение на домене.

Настройка CakePHP

Первый способ настроить CakePHP вообще-то рекомендуется для среды разработчиков, поскольку он менее защищен. Второй способ более защищен и поэтому его следует использовать в среде продукции.
ЗАМЕЧАНИЕ: /app/tmp должен быть доступным для записи пользователем

Среда разработчика

Чтобы использовать Cake только для разработки мы можем разместить всю установочную директорию в определенный DocumentRoot как то:



В этом случае каталог wwwroot выступает как веб-корень, поэтому ваши ссылки будут похожи на эту (если вы конечно используете mod_rewrite):
http://www.example.com/cake/controllerName/actionName/param1/param2

Среда продукции (итог разработки)

Для использования среды продукции, вам понадобятся права для изменения DocumentRoot на вашем сервере. Это делает весь домен одним приложением Cake PHP?.
В этом случае файлы размещаются так:



Предлагаемая настройка httpd.conf
DocumentRoot /path_to_cake/app/webroot
В этом случае директория webroot выступает как веб-корень, так что ваши ссылки будут выглядеть подобно этой (если вы используете mod_rewrite):
http://www.example.com/controllerName/actionName/param1/param2

Продвинутая настройка: Альтернативная установка опций

Может быть вам захочется разместить директории Cake в разных местах на диске. Возможно это понадобится из-за ограничений сервера, или же может быть вы просто захотите чтобы несколько ваших приложений делили одни библиотеки Cake.
Вот три главные части для приложений Cake:

  1. Центральные библиотеки CakePHP – Расположены в /cake
  2. Ваш код приложений (например: контроллеры, модели, схемы размещения, отображения) – расположены в /app
  3. Файлы webroot вашего приложения (например: картинки, javascript и css) – расположены в /app/webroot

Каждая из этих директорий может быть расположена где угодно в вашей файловой системе, за исключением webroot, который должен быть доступен вашему веб-серверу. Вы даже можете переместить каталог webroot из каталога app, только не забудь сообщить об этом Cake. :-)


Для того чтобы разнести эти папки, вам понадобится сделать изменения в /app/webroot/index.php. Вот три константы, которые вам понадобится изменить: 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. Моя директория webroot Cake должна быть /var/www/mysite/.
  3. Файлы моих приложений будут храниться в /home/me/mysite.

Т.е. файлы будут располагаться так:


Чтобы все это заработало необходимо чуть-чуть поменять 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


Пока мы разрабатывали работу Cake PHP? с mod_rewrite было замечено, что некоторые пользователи испытывают большие затруднения при работе с этим модулем, в итоге ничего не работает. Вот несколько советов:

  1. Убедитесь, что разрешено изменение файлов .htaccess: в вашем httpd.conf должен быть раздел, который описывает секцию для каждой директории на вашем сервере. Убедитесь, что Allow Override? установлено на All для нужной директории.
  2. Убедитесь что вы изменяете системный httpd.conf, а не пользовательский httpd.conf отдельного сайта.
  3. По тем или иным причинам у вас может быть копия Cake PHP?, в которой нет файлов .htaccess. Это иногда случается из-за того, что некоторые операционные системы рассматривают файлы, которые начинаются с '.' как скрытые и не копируют их. Убедитесь, что ваша копия Cake PHP? содержит эти файлы.
  4. Убедитесь, что вы загружаете mod_rewrite правильно! Вам следует взглянуть в httpd.conf. Там должны быть строки вроде Load Module? rewrite_module libexec/httpd/mod_rewrite.so и Add Module? mod_rewrite.c.
  5. Если вы устанавливаете Cake в директорию пользователя (http://example.com/~myusername/), вам нужно подкоректировать .htaccess файл в главной директории. Просто добавьте строку "Rewrite Base? /myusername/".
  6. Если вдруг в конце ваших ссылок появляется параметр с ID сессии (http://example.com/posts/?CAKEPHP=4kgj577sgabvnmhjgkdiuy1956if6ska), то можете дописать строку “php_flag session.trans_id off” в .htaccess файл в корневом каталоге.

Убедимся, что все работает

Хорошо, давайте посмотрим на Cake в действии. В зависимости от настроек, которые вы использовали направляем свой браузер на http://www.example.com или http://www.example.com/cake. На этой точке вам будет представлена страница Cake PHP? по умолчанию, а также сообщение, которое расскажет вам о статусе текущего подключения в базе данных.


Поздравляем! Теперь вы готовы к созданию вашего первого приложения на Cake.


 
Комментарии

Top Server? Ошибка 403
Дарю сутки моей жизни тем, кто работает с Top Server? Apache 2.0 http://topserver.ru/ (отладка на http://localhost/)
После установки Cake PHP? при вызове корневого каталога из браузера возникает ошибка 403. Что делаем.


Шаг 1. Обязателен если сайт задуман как виртуальный хост или как каталог пользователя


Открываем файл T:\usr\local\Apache\conf\httpd.conf
или Файл конфигурации Apache http://localhost/admin/apache/config.php (одно и то же)


Ищем Код:
Options Includes


Заменяем на код:
//Options Includes
Options Follow Sym Links?


Ищем Код:
# Дополнительные конфигурации модулей Apache


и ниже добавляем Код:
<If Module? mod_rewrite.c>
Rewrite Engine? on 
</If Module?>


Сохраняем, перезапускаем


Шаг 2. Обязателен если сайт задуман как виртуальный хост, необязателен если как каталог пользователя


Открываем файл T:\usr\local\Apacheconf\vhosts\{имя хоста}.conf


Ищем строку Код:
Options Includes


Заменяем на код:
//Options Includes
Options Follow Sym Links?


Сохраняем


Чтобы все новые хосты были с этими же параметрами:
Открываем файл
T:\home\localhost\admin\apache\vhosts.php
Ищем строку Код:
$new_vhost_entry .= «Options Includes"."\r\n»;


Заменяем на
//$new_vhost_entry .= «Options Includes"."\r\n»;
$new_vhost_entry .= «Options Follow Sym Links?"."\r\n»;


Сохраняем, перезапускаем


После этого вместо Ошибка 403 возникнет Ошибка 400


Шаг 3. Обязателен если сайт задуман как каталог пользователя, для виртуального хоста вопрос не исследован. Каталог пользователя назовем cakephp!
Открываем файл T:\home\users\cakephp
!\.htaccess


Для вызова http://localhost/~cakephp!!!/
Добавляем Rewrite Base? /cakephp!!!/
чтобы получилось


<If Module? mod_rewrite.c>

Rewrite Engine? on
Rewrite Rule? ^$ app/webroot/ [L]
Rewrite Rule? (.*) app/webroot/$1 [L]
Rewrite Base? /cakephp!!!/

</If Module?>


Сохраняем


Для вызова http://localhost/~cakephp!!!/app/
Открываем файл T:\home\users\cakephp!\add\.htaccess
Добавляем Rewrite Base? /cakephp
!/add/
чтобы получилось


<If Module? mod_rewrite.c>

Rewrite Engine? on
Rewrite Rule? ^$ webroot/ [L]
Rewrite Rule? (.*) webroot/$1 [L]
Rewrite Base? /cakephp!!!/app/

</If Module?


Сохраняем


Для вызова http://localhost/~cakephp!!!/app/webroot/
Открываем файл T:\home\users\cakephp!\add\webroot\.htaccess
Добавляем Rewrite Base? /cakephp
!/add/webroot/
чтобы получилось


<If Module? mod_rewrite.c>

Rewrite Engine? on
Rewrite Cond? %{REQUEST_FILENAME} !-d
Rewrite Cond? %{REQUEST_FILENAME} !-f
Rewrite Rule? ^(.*)$ index.php?url=$1 [QSA,L]
Rewrite Base? /cakephp!!!/app/webroot/

</If Module?>


Сохраняем, вызываем в браузере корневой каталог.


Шаг 4. После этого при вызове с любого из трех вышеописанных url появляется белая страница с черно-зелено-желтыми буквами и банером внизу, что собственно и является результатом.


пользуясь случаем даю обьявление ищу работу, писать на gotre_retmandсобакаMyForex.zzn.com

broadband187.connectus.ru (2008-01-12 20:24:59)

поправьте плз //Options Includes на #Options Includes в 2х местах

broadband187.connectus.ru (2008-01-12 20:29:24)

<If Module mod_rewrite.c>
Rewrite Engine on 
</If Module>


Как только это под Top Server 2.0 прописуешь все виртуал хосты перестают работать -просто чистая страница без каких либо ошибок:(

h1-dp.alkar.net (2008-05-17 15:55:55)

<If Module mod_rewrite.c>
Rewrite Engine on 
</If Module>
Это можно не писать, у меня без него все работает

78.26.128.251 (2008-07-20 13:49:34)

Важно!
Follow Sym Links надо писать слитно:


Options Follow Sym Links?

78.26.128.251 (2008-07-20 13:51:20)
Еле настроился блииин... Поставил версию при этом 1.3...
46.42.133.197 (2011-01-24 00:48:43)
Добавить комментарий:

Файлы [Скрыть файлы/форму]