Почему имеет смысл использовать 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
$ 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. Как настроить отладку я описывал вот в этой заметке.
Комментариев нет:
Отправить комментарий