Установка и настройка PHP-фреймворка Yii в Ubuntu 12.04

Что такое Yii?

Yii (акроним «Yes, it is!») – это высокопроизводительный объектно-ориентированный PHP-фреймворк, который позволяет быстро разрабатывать веб-приложения.  Благодаря некоторым особенностям своей конструкции Yii  берет на себя более рутинные задачи определения кода, тем самым позволяя разработчику сосредоточиться на уникальности приложения. Yii основан на парадигме MVC (англ. Model-view-controller, модель-вид-контроллер), что позволяет надежно отделить логику от презентации и увеличить количество функций обеспечения безопасности.

Yii значительно ускоряет создание приложения, автоматически генерируя его каркас, модели для базы данных и даже код для CRUD (англ. «create, read, update, delete», «создание, чтение, обновление, удаление»). Все, что нужно сделать разработчику – просто настроить все согласно своим вкусам и требованиям. В данном руководстве показано, как установить Yii и начать разработку первого приложения.

Требования

Данное руководство подразумевает наличие предварительно настроенного виртуального выделенного сервера Ubuntu (в целом, другие дистрибутивы Linux тоже подойдут). Также необходимо заранее установить группу программ LAMP. Полезные инструкции можно найти в следующих статьях:

Установка Yii

Для установки Yii необходимо скачать последнюю версию фреймворка и распаковать полученный архив в root-каталоге веб-сервера (в Apache это /var/www). Скопируйте ссылку на zip-файл последнего релиза здесь и запустите следующую команду, чтобы скачать этот файл на VPS:

wget http://yii.googlecode.com/files/yii-1.1.13.e9e4a0.zip

Примечание: в случае появления более новой версии фреймворка не забудьте заменить ссылку в команде.

Теперь нужно распаковать файл при помощи команды:

unzip yii-1.1.13.e9e4a0.zip

Примечание: если вы устанавливаете другую версию Yii, не забудьте указать правильное имя файла.

Если инструмент unzip не был установлен ранее, запустите следующую команду:

sudo apt-get install unzip

а затем используйте предыдущую команду, в случае необходимости заменив имя пакета. Распаковав фреймворк, дайте папке более удобное имя; в данном руководстве эта папка будет называться yii_framework:

mv yii-1.1.13.e9e4a0 yii_framework

Примечание: укажите в команде любое удобное имя папки.

Зависимости Yii

Yii требует установки PHP 5.1 или выше. Чтобы получить более подробную информацию о требованиях фреймворка, используйте анализатор требований Yii. Направьте браузер на следующий url, чтобы получить доступ к анализатору:

http://example.com/yii_framework/requirements/index.php

На экране появится страница Requirement Checker; если система удовлетворяет требования фреймворка, страница будет содержать сообщение вроде «Your server configuration satisfies the minimum requirements by Yii». В противном случае проверьте установку PHP.

Разработка приложения в Yii

Yii обладает очень мощной функциональностью, благодаря чему он может генерировать компоненты приложения вместо разработчика. Одним из таких компонентов является каркас приложения. Чтобы автоматически сгенерировать каркас, сначала перейдите в каталог, в котором он должен быть создан (этот каталог может находиться и за пределами папки, в которую был распакован фреймворк). Итак, вернитесь в root-каталог веб-сервера, чтобы создать в нем каркас:

cd /var/www

Выберите имя папки приложения (в данном руководстве – mysite) и запустите команду:

php yii_framework/framework/yiic webapp mysite

Убедитесь, что путь соответствует среде. Затем выберите Yes, и после этого в папке /var/www/mysite появится новое приложение.

Чтобы проверить это, откройте в браузере:

http://example.com/mysite/index.php

На экране должна появиться приветственная страница приложения. Приложение уже содержит пару страниц, а также контактную форму и функции входа и выхода. Чтобы войти, используйте стандартные учетные данные:

  • Имя пользователя: admin
  • Пароль: admin

Настройка приложения Yii

Благодаря программному стеку LAMP вам не придется вносить много конфигураций.

На данном этапе рекомендуется убрать сегмент index.php из адреса. Для этого нужно создать файл .htaccess в root-папке приложения (в данном руководстве – mysite) и внести в него следующий код:

RewriteEngine on
# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# otherwise forward it to index.php
RewriteRule . index.php

Примечание: чтобы использовать файлы .htaccess на веб-сервере Apache, нужно включить модуль mod_rewrite. Чтобы узнать, включен ли этот модуль, запустите:

apache2ctl -M

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

a2enmod rewrite

Затем перезапустите Apache, чтобы обновить настройки:

sudo service apache2 restart

Кроме того, нужно убедиться, что файлы .htaccess включены; для этого нужно задать настройке AllowOverride значение All в файле виртуального хоста.

Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all

Теперь нужно сообщить приложению о необходимости удалить сегмент index.php из URL-ов. Откройте файл main.php в папке protected/config и раскомментируйте следующий блок:

/*
'urlManager'=>array(
'urlFormat'=>'path',
'rules'=>array(
'/'=>'/view',
'//'=>'/',
'/'=>'/',
),
),
*/

Затем добавьте в массив urlManager строку:

'showScriptName' => false

Теперь данный блок имеет такой вид:

'urlManager'=>array(
'urlFormat'=>'path',
'showScriptName' => false,
'rules'=>array(
'/'=>'/view',
'//'=>'/',
'/'=>'/',
),
),

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

По умолчанию каркас приложения использует базу данных SQLite, но также содержит закомментированный шаблон для взаимодействия с MySQL.

Итак, чтобы перейти с SQLite на MySQL, нужно закомментировать и раскомментировать соответствующие разделы кода. Для этого откройте файл main.php, расположенный в папке приложения protected/config, и закомментируйте:

'db'=>array(
'connectionString' => 'sqlite:'.dirname(__FILE__).'/../data/testdrive.db',
),

А затем раскомментируйте следующий блок:

/*
'db'=>array(
'connectionString' => 'mysql:host=localhost;dbname=testdrive',
'emulatePrepare' => true,
'username' => 'root',
'password' => '',
'charset' => 'utf8',
),
*/

Теперь можно внести сюда информацию для подключения к БД (которую нужно создать позже).

Tags: , , , , , , , , , ,

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