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 вообще-то рекомендуется для среды разработчиков, поскольку он менее защищен. Второй способ более защищен и поэтому его следует использовать в среде продукции.

ЗАМЕЧАНИЕ: /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.