Установка и начало работы с Phalcon на сервере Ubuntu 12.04

Что такое Phalcon?

Phalcon – это основанный на архитектуре Модель-Вид-Контроллер (Model-View-Controller) PHP-фреймворк, который обладает такими функциями, как ORM, шаблонизатор, маршрутизация, кэширование, и многое другое.

Данный фреймворк имеет следующее преимущество: с точки зрения производительности он гораздо быстрее других подобных фреймворков. Дело в том, что Phalcon – не обычный PHP-фреймворк, файлы которого можно просто скопировать на сервер. На самом деле, это расширение PHP, написанное в С.

Данное руководство продемонстрирует установку и начало работы с Phalcon на виртуальном выделенном сервере Ubuntu 12.04.

Примечание: чтобы следовать данному руководству, необходимо заранее установить LAMP stack (Apache, MySQL and PHP). За дополнительной информацией можно обратиться к статье «Установка LAMP stack на Ubuntu 12.04»

Установка Phalcon

Для начала нужно установить зависимости Phalcon. Для этого запустите следующие три команды:

sudo apt-get update
sudo apt-get install git-core gcc autoconf make
sudo apt-get install php5-dev php5-mysql

Примечание: прежде чем запускать команды, просмотрите их удалите названия уже установленных пакетов.

Затем нужно клонировать репозиторий фреймворка:

git clone git://github.com/phalcon/cphalcon.git

После этого перейдите в следующий каталог:

cd cphalcon/build

и запустите файл install, чтобы установить расширение.

sudo ./install

Далее нужно отредактировать файл php.ini:

nano /etc/php5/apache2/php.ini

В конец файла внесите следующую строку:

extension=phalcon.so

После этого перезапустите сервер, чтобы активировать изменения:

sudo service apache2 restart

Готово! Чтобы узнать, успешно ли прошла установка Phalcon, нужно проверить вывод оператора phpinfo(). Итак, в доступном для браузера месте системы создайте файл info.php и внесите в него строку:

<?php phpinfo(); ?>

Сохраните и закройте файл, а затем откройте файл в браузере. Если на странице появились данные PHP, значит, Phalcon установлен успешно.

Примечание: на этой странице можно уточнить версию Phalcon.

Разработка проекта Phalcon

Пользователи, работавшие с другими фреймворками PHP, наверняка ожидали увидеть в структуре папок проекта некоторые связанные с фреймворком файлы. В Phalcon все эти файлы доступны в памяти, так что все, что нужно сделать, чтобы начать разработку проекта – это создать пустую структуру папок в root каталое сервера Apache (по умолчанию это /var/www). Рекомендуется сделать это следующим образом:

project_name/
app/
controllers/
models/
views/
public/
css/
img/
js/

Итак, теперь на сервере есть папка проекта, которая содержит 2 главные папки: app и public. Первая папка будет содержать логику приложения (в основном, PHP). Вторая папка нужна, во-первых, для того, чтобы направить на нее браузер и перенаправлять его в папку app, а во-вторых, чтобы иметь доступ ко всем средствам фронт-энда.

Самозагрузка (bootstrapping)

Первый и самый важный файл, который необходимо создать – это файл index.php, который приложение будет использовать для самозагрузки. Создайте этот файл в папке public:

nano /var/www/project_name/public/index.php

Внесите в него следующий код:

<?php
try {
//Register an autoloader
$loader = new \Phalcon\Loader();
$loader->registerDirs(array(
'../app/controllers/',
'../app/models/'
))->register();
//Create a DI
$di = new Phalcon\DI\FactoryDefault();
//Setup the view component
$di->set('view', function(){
$view = new \Phalcon\Mvc\View();
$view->setViewsDir('../app/views/');
return $view;
});
//Setup a base URI so that all generated URIs include the "tutorial" folder
$di->set('url', function(){
$url = new \Phalcon\Mvc\Url();
$url->setBaseUri('/project_name/');
return $url;
});
//Handle the request
$application = new \Phalcon\Mvc\Application($di);
echo $application->handle()->getContent();
} catch(\Phalcon\Exception $e) {
echo "PhalconException: ", $e->getMessage();
}

Примечание: чтобы получить подробную информацию о содержимом данного файла, посетите официальный сайт Phalcon.

Обратите внимание на следующую строку, которую нужно отредактировать:

$url->setBaseUri('/project_name/');

Внесите в нее имя папки проекта.

Перезапись URL-адресов

Для внесения некоторых важных изменений в маршрутизацию и защиты структуры папок приложения от посторонних глаз фреймворку Phalcon понадобятся файлы .htaccess. Для этого нужно включить модуль mod_rewrite и разрешить файлам .htaccess вносить изменения в инструкции Apache.

Итак, отредактируйте файл виртуального хоста Apache для приложения Phalcon (по умолчанию он находится в /var/www, если только в системе нет отдельного виртуального хоста для этого приложения) и убедитесь, что строке Allow Overrides задано значение All в разделе каталога /var/www (опять же, если используются настройки по умолчанию). Для этого используйте команду:

nano /etc/apache2/sites-available/default

Найдите данный блок и внесите в него следующие изменения:

<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>

Затем нужно убедиться, что модуль mod_rewrite включен. Для этого используйте команду:

apache2ctl -M

Если в появившемся списке есть rewrite_module, значит, модуль уже включен. В противном случае используйте команду:

a2enmod rewrite

Внеся все эти (и любые другие) изменения, перезапустите Apache, чтобы активировать новые настройки.

sudo service apache2 restart

Теперь создайте файл .htaccess в главной папке проекта:

nano /var/www/project_name/.htaccess

Внесите в него следующий код:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule  ^$ public/    [L] RewriteRule  (.*) public/$1 [L] </IfModule>

Это перенаправит все запросы к главной папке проекта на папку public. Теперь создайте еще один файл .htaccess, но на этот раз в папке public:

nano /var/www/project_name/public/.htaccess

Внесите в него следующие директивы:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?_url=/$1 [QSA,L] </IfModule>

Этот файл будет перенаправлять все запросы, поступающие в эту папку, на файл index.php

(в случае если такого файла не существует в этой папке и ее подкаталогах, фронтэнд будет доступен).

Создание контроллера

Если сейчас направить браузер на папку проекта, браузер сообщит об ошибке, поскольку он не может найти класс IndexController (класс контроллеров). Это происходит потому, что по умолчанию приложению нужен класс контроллеров, на случай если контроллер не был передан в запросе. Давайте создадим контроллер для отображения простой страницы Hello World.

Создайте следующий файл IndexController.php в папке controllers:

nano /var/www/project_name/app/controllers/IndexController.php

В него внесите следующее:

<?php
class IndexController extends \Phalcon\Mvc\Controller {
public function indexAction()    {
echo "<h1>Hello World!</h1>";
}
}

Это расширит стандартный класс контроллеров Phalcon при помощи класса IndexController (по соглашению все имена контроллеров нужно заканчивать словом «Controller»). Внутри этого класса был определен метод по имени indexAction (аналогично, все имена методов, также называемых поведениями, нужно заканчиваться словом «Action»). Поскольку он называется index, он также является первым методом, который вызывается этим контроллером, если в запросе не указано никаких других методов.

Если теперь попробовать открыть папку проекта в браузере, на экране должна появиться строка «Hello World!».

Tags: , , , , , , , , ,

Добавить комментарий