воскресенье, 5 июня 2011 г.

(PHP) Kohana 3: Установка минимального проекта

В этой заметке я опишу как создать минимальный проект на PHP используя фреймворк Kohana 3. Настроим проект на разработку в среде Eclipse PDT и настроим отладку.

Почему имеет смысл использовать Kohana 3 (в дальнейшем просто Kohana, имея в виду Kohana 3.1) в ваших проектах? Kohana имеет простой и ясный код полностью использующий особенности языка PHP5, весь код написан в объектно-ориентированном стиле, полная поддержка UTF8. Проект развивается очень динамично, причем динамика настолько велика, что порой это может послужить появлением ошибок в документации, которой кстати сказать и так не густо.


Кстати, Kohana имеет средства для запуска приложений созданных с использованием фреймворка из консоли, наличие веб-сервера не является обязательным. В этой заметке я опишу оба способа запуска приложений, как непосредственно через консоль, так и как чистое веб-приложение.

Для начала скачайте и распакуйте дистрибутив Kohana в один из ваших директориев. На данный директорий по ходу данной заметки я буду ссылаться как на переменную среды $KOHANA_HOME. Я установлю Kohana в /usr/local, если хотите можете использовать такой-же путь как у меня или использовать свой. Я предполагаю, что Eclipse, Apache и PHP5 у вас уже установлены. Итак...

$ cd ~/tmp/
$ wget http://dev.kohanaframework.org/attachments/download/1656/kohana-3.1.3.1.zip
$ unzip kohana-3.1.3.1.zip
$ sudo chown -R root:root kohana-3.1-master-10
$ sudo mv kohana-3.1-master-10/ /usr/local/
$ cd /usr/local/
$ sudo ln -s kohana-3.1-master-10 kohana
$ ls -ld kohana*
lrwxrwxrwx 1 root root   20 2011-06-04 18:27 kohana -> kohana-3.1-master-10
drwxr-xr-x 5 root root 4096 2011-05-06 15:19 kohana-3.1-master-10

Создайте новый проект в Eclipse используя следующие параметры:


Добавьте внешние директории фреймворка для выполнения отладки.



После добавления диалог параметров должен выглядеть следующим образом:






Нажимаем "Finish" для завершения процесса создания проекта.

Создаем скелетон нашего проекта. Переменные $KOHANA_HOME и $MY_PROJECT я создал только для облегчения описания создания скелетона приложения, эти переменные для функционирования приложения не нужны!

$ export KOHANA_HOME=/usr/local/kohana
$ export MY_PROJECT=$HOME/workspace/MyProject

Создадим каталог для хранения файла index.php и статических файлов. Обратите внимание: php файлы веб-приложения будут размещены в другом месте с целью обеспечения безопасности.

$ mkdir $MY_PROJECT/web
$ cp -v /usr/local/kohana/index.php $MY_PROJECT/web/
$ cp -v /usr/local/kohana/install.php $MY_PROJECT/web/


Собственно в $MY_PROJECT/application и будут находится все наши контроллеры, модели, представления, файлы конфигурации, логи, кеш и все остальное. $MY_PROJECT/application - директорий нашего веб-приложения. Но обратите внимание: когда будем настаивать веб-сервер, доступ до этого каталога через веб будет запрещен. Разрешим доступ только до $MY_PROJECT/web

$ cp -rv /usr/local/kohana/application/ $MY_PROJECT/

Измените права доступа до каталогов кеша и логов.

$ chmod -v 0777 $MY_PROJECT/application/logs $MY_PROJECT/application/cache

Обновите ваш проект в Eclipse (Refresh) и внесите изменения в файл web/index.php измените переменные $application, $modules и $system

$ diff -Nur /usr/local/kohana/index.php workspace/MyProject/web/index.php
--- /usr/local/kohana/index.php    2011-05-06 15:14:16.000000000 +0400
+++ workspace/MyProject/web/index.php    2011-06-04 22:12:27.232711715 +0400
@@ -6,14 +6,14 @@
  *
  * @see  http://kohanaframework.org/guide/about.install#application
  */
-$application = 'application';
+$application = '../application';

 /**
  * The directory in which your modules are located.
  *
  * @see  http://kohanaframework.org/guide/about.install#modules
  */
-$modules = 'modules';
+$modules = '/usr/local/kohana/modules';

 /**
  * The directory in which the Kohana resources are located. The system
@@ -21,7 +21,7 @@
  *
  * @see  http://kohanaframework.org/guide/about.install#system
  */
-$system = 'system';
+$system = '/usr/local/kohana/system';

Теперь отредактируем application/bootstrap.php

$ diff -Nur /usr/local/kohana/application/bootstrap.php workspace/MyProject/application/bootstrap.php
--- /usr/local/kohana/application/bootstrap.php    2011-05-06 15:14:16.000000000 +0400
+++ workspace/MyProject/application/bootstrap.php    2011-06-04 23:06:37.980711400 +0400
@@ -22,7 +22,7 @@
  * @see  http://kohanaframework.org/guide/using.configuration
  * @see  http://php.net/timezones
  */
-date_default_timezone_set('America/Chicago');
+date_default_timezone_set('Europe/Moscow');

 /**
  * Set the default locale.
@@ -30,7 +30,7 @@
  * @see  http://kohanaframework.org/guide/using.configuration
  * @see  http://php.net/setlocale
  */
-setlocale(LC_ALL, 'en_US.utf-8');
+setlocale(LC_ALL, 'ru_RU.utf-8');

 /**
  * Enable the Kohana auto-loader.
@@ -53,7 +53,7 @@
 /**
  * Set the default language
  */
-I18n::lang('en-us');
+I18n::lang('ru-ru');

 /**
  * Set Kohana::$environment if a 'KOHANA_ENV' environment variable has been supplied.
@@ -81,6 +81,7 @@
  */
 Kohana::init(array(
     'base_url'   => '/',
+    'index_file' => '',
 ));

Внесенные изменения позволяют использовать русскую локаль для приложения, локальную зону времени для приложения, язык по умолчанию для локализованных сообщений и убираем обязательное использование файла index.php в URL приложения.

На данном этапе вы уже полностью настроили ваше приложение для работы в качестве CLI (command-line interface)

Если вы еще не установили консольную версию php то сейчас самое время это сделать. Выполните:

$ sudo apt-get install php5-cli

(но лично я устанавливаю дополнительно еще и следующие пакеты: php-pear php5-suhosin)

Проверьте, насколько корректно выполнена предыдущая работа:

$ cd $MY_PROJECT
$ php web/index.php
hello, world!

Вы должны увидеть вывод "hello, world!" от дефолтного контроллера welcome, который уже настроен в файле application/bootstrap.php Если вы видите этот текст на стандартном выводе, значит фреймворк и приложение успешно интегрированы. Осталось интегрировать приложение с веб-сервером (в частности apache2).

Если веб-сервер apache2 у вас еще не установлен, то установите apache2  и поддержку PHP5. Это можно сделать выполнив команду:

$ sudo apt-get install apache2-mpm-prefork libapache2-mod-php5


Создайте файл /etc/apache2/sites-available/myproject следующего содержания (заменив путь до вашего проекта):

<VirtualHost *:80>
        ServerName myproject

        # Измените на ваш!!!
        DocumentRoot "/usr/local/home/ags/workspace/MyProject/web"

        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>

        # Изменить путь на ваш!!!
        <Directory "/usr/local/home/ags/workspace/MyProject/web/">
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all

                # Turn on URL rewriting
                RewriteEngine On

                # Installation directory
                RewriteBase /

                # Protect hidden files from being viewed
                <Files .*>
                        Order Deny,Allow
                        Deny From All
                </Files>

                # Protect application and system files from being viewed
                RewriteRule ^(?:application|modules|system)\b.* index.php/$0 [L]

                # Allow any files or directories that exist to be displayed directly
                RewriteCond %{REQUEST_FILENAME} !-f
                RewriteCond %{REQUEST_FILENAME} !-d

                # Rewrite all other URLs to index.php/URL
                RewriteRule .* index.php/$0 [PT]

        </Directory>

        ErrorLog /var/log/apache2/error-myproject.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access-myproject.log combined

</VirtualHost>

Отредактируйте файл /etc/hosts для выполнения преобразования имени хоста в IP, добавьте:

127.0.0.1       myproject

Включите ваш сайт в управлении apache2, дополнительно включите модуль mod_rewrite, если он еще не подключен.

$ sudo a2ensite myproject
$ sudo a2enmod rewrite 

Перегрузите apache2

$ sudo /etc/init.d/apache2 reload

Проверьте, насколько вы правильно все выполнили набрав в адресной строке браузера адрес: http://myproject/ Если вы видите, тоже, что и на скриншоте ниже, то поздравляю - установка завершена.





На этой же странице проверьте наличие необязательных модулей:


Теперь вы можете удалить файл $MY_PROJECT/web/install.php для завершения установки, после удаления обновите страницу веб-браузера, вы должны увидеть следующее:



Теперь вы можете редактировать код в Eclipse и видеть изменения вашего проекта непосредственно в браузере обращаясь по адресу http://myproject/

Если все работает, то следующий шаг, который сейчас я рекомендую вам сделать это настроить возможность отладки вашего кода PHP. Как настроить отладку я описывал вот в этой заметке.

Комментариев нет:

Отправить комментарий