Установка CakePHP
Введение
Что ж, теперь вы знаете все, что можно знать о структуре и предназначении всех библиотек CakePHP, или же вы просто пропустили предыдущие главы и сразу перешли к этой, потому что вас абсолютно не волнуют библиотеки и вы просто хотите начать игру. В любом случае, вы уже готовы пачкать руки.
Эта глава опишет, что должно быть установлено на сервере, различные пути настройки сайта, закачки и установки CakePHP, а также некоторые советы по устранению ошибок (вдруг что-то пойдет не так, как запланировано).
Требования
Вот требования к настройке сервера для того, чтобы запустить CakePHP:
- HTTP сервер (любой, но лучше Apache) с поддержкой сессий и mod_rewrite (не обязательно, но предпочтительно)
- PHP 4.3.2 или выше. Да, CakePHP отлично работает как с PHP 4 так и с PHP 5.
- Движок базы данных (сейчас поддерживаются 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:
- Центральные библиотеки CakePHP – Расположены в /cake
- Ваш код приложений (например: контроллеры, модели, схемы размещения, отображения) – расположены в /app
- Файлы webroot вашего приложения (например: картинки, javascript и css) – расположены в /app/webroot
Каждая из этих директорий может быть расположена где угодно в вашей файловой системе, за исключением webroot, который должен быть доступен вашему веб-серверу. Вы даже можете переместить каталог webroot из каталога app, только не забудь сообщить об этом Cake. :-)
Для того чтобы разнести эти папки, вам понадобится сделать изменения в /app/webroot/index.php. Вот три константы, которые вам понадобится изменить: ROOT, APP_DIR и CAKE_CORE_INCLUDE_PATH.
- ROOT – это путь к директории которая содержит каталог app.
- APP_DIR – тут следует указать путь к каталогу app.
- 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 работать со следующими настройками:
- Хочу чтобы мои библиотеки Cake работали с другими приложениями, находясь в /usr/lib/cake.
- Моя директория webroot Cake должна быть /var/www/mysite/.
- Файлы моих приложений будут храниться в /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 было замечено, что некоторые пользователи испытывают большие затруднения при работе с этим модулем, в итоге ничего не работает. Вот несколько советов:
- Убедитесь, что разрешено изменение файлов .htaccess: в вашем httpd.conf должен быть раздел, который описывает секцию для каждой директории на вашем сервере. Убедитесь, что Allow Override установлено на All для нужной директории.
- Убедитесь что вы изменяете системный httpd.conf, а не пользовательский httpd.conf отдельного сайта.
- По тем или иным причинам у вас может быть копия Cake PHP, в которой нет файлов .htaccess. Это иногда случается из-за того, что некоторые операционные системы рассматривают файлы, которые начинаются с '.' как скрытые и не копируют их. Убедитесь, что ваша копия Cake PHP содержит эти файлы.
- Убедитесь, что вы загружаете mod_rewrite правильно! Вам следует взглянуть в httpd.conf. Там должны быть строки вроде Load Module rewrite_module libexec/httpd/mod_rewrite.so и Add Module mod_rewrite.c.
- Если вы устанавливаете Cake в директорию пользователя (http://example.com/~myusername/), вам нужно подкоректировать .htaccess файл в главной директории. Просто добавьте строку "Rewrite Base /myusername/".
- Если вдруг в конце ваших ссылок появляется параметр с 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.