Yii2 PHP Framework. Установка и настройка часть 1.
Знакомлюсь с Yii версии 2.0 и хочу написать тут серию небольших туториалов по её установке и настройке.
Небольшое лирическое вступление.
Поработав несколько лет вебмастером на различных CMS, я почувствовал острую необходимость в том, чтобы научиться самостоятельно писать код. Кроме того, стали появляться такие задачи, которые уже не ставились в один ряд с простой разработкой какого-нибудь модуля для Joomla или WordPress. Такие задачи требовали создания полноценной системы, в которой CMS, как таковая, должна была стать вспомогательным модулем для редактирования новостей, а остальное - работа пользователей в их личных кабинетах. Конечно, я стал искать различные PHP фреймворки в надежде найти что-то, с чего можно было бы начать изучать плотно PHP, что-то с хорошей документацией и интуитивно понятной логикой. Первым моим фреймворком стал CodeIgniter. Он удовлетворял всем моим требованиям и, что самое главное, был оснащён настолько простой документацией, что понять его мог бы даже человек, ни разу в жизни с программированием не сталкивавшийся. Однако, через полгода работы с CI я, почитав в интернете хвалебные статьи про Yii и про то, что CodeIgniter медленно умирает я решил, что нужно двигаться дальше, покорять более сложные системы и приближаться к пониманию программирования - я начал изучать Yii, На тот момент выбор пал на версию 1.1, т.к. о 2.0 были лишь слухи (хотя, быть может, я просто на тот момент не посмотрел на GitHub ). И вот я уже два года пользовался этим фреймворком и не признавал ничего другого, пока, наконец, не решился поближе познакомиться с версией Yii 2.0.
Первая заметка будет про установку Yii2 через Composer на AMP OpenServer под Windows.
Был выбран именно OpenServer, по той причине, что он содержит все необходимые компоненты - почти все актуальные версии PHP, Apache, Mysql, все дополнения и много вспомогательных приложений. Кроме того, он показался мне наиболее простым и удобным в настройке.
Итак, Yii 2.0 рекомендуется устанавливать через Composer, Поэтому самое первое, что у Вас должно быть установлено и настроено - это Composer. Он содержится в составе OpenServer, поэтому если вы используете именно этот AMP, то вам не нужно заморачиваться на тему его установки.
В составе OpenServer, по крайней мере в полной комплектации, присутствует приложение "Консоль" (ConEmu-Maximus5). Оно нам понадобится как раз для того, чтобы запускать команды композера.
Нужно открыть "Консоль", (Контекстное меню OpenServer->Дополнительно->Консоль), перейти в папку, где будет установлено приложение Yii 2.0 и выполнить две команды
Код :composer global require "fxp/composer-asset-plugin:~1.0.3" composer create-project --prefer-dist yiisoft/yii2-app-basic basic (или composer create-project --prefer-dist yiisoft/yii2-app-advanced advanced)
Первая команда добавит в ваш Composer плагин asset для загрузки jQuery, Bootstrap и др., а вторая (одна из перечисленных мной) установит в указанную папку (basic или advanced) соответствующее приложение Yii. Если вместо папки указать "./" (Без кавычек), то приложение будет создано прямо в корне текущей папки.
Если у вас не запустился композер - может оказаться, что консоль просто его не видит. В этом случае поможет добавление пути к php выбранной версии в переменную окружения PATH. Примерно так:
Код :;D:\OpenServer\OpenServer\modules\php\PHP-5.4
Если Composer запустился, но не выполняет команды и пишет сообщения об ошибках, внимательно почитайте, что он вам пишет, может быть нужно его обновить при помощи команды
Код :composer self-update
Если вы успешно установили базовое приложение - то у вас будет следующая простая структура приложения:
assets\
commands\ - контроллеры консольного приложения
config\ - конфиги приложения
controllers\ - контроллеры приложения
helpers\
mail\
models\ - модели приложения
modules\ - модули, всё почти так же, как и в версии 1.1
runtime\
tests\
themes\ - темы, всё почти так же, как и в версии 1.1
vendor\ - всё, что устанавливается через composer, включая сам фреймворк Yii2
views\ - вьюшки по умолчанию
web\ - папка, которую нужно будет в итоге сделать корневой директорией сайта. Она может называться как угодно, например www или httpdocs - просто для Yii её назвали web. По идее можно вручную изменить структуру папок, если во входном скрипте web/index.php изменить относительные пути.
Для advanced все файлы разделены на несколько папок : frontend, backend, console. Каждая из этих папок содержит структуру:
config\
controllers\
models\
runtime\
migrations\ (только в console)
assets\ (нет в console)
views\ (нет в console)
web\ (нет в console)
Также, advanced не содержит предустановленных конфигов и входных скриптов в папках frontend и backend. Вам нужно в папке с только что установленным приложением yii запустить ./init (В консоли просто напишите init). Система предложит вам выбрать, какого типа приложение инициализировать - developer (Для разработчиков) или production (Для "боевого" использования).
В дальнейшем все расширения, которые вы будете ставить через тот же композер, нужно устанавливать из той папки, где находится папка vendor и файл composer.json приложения Yii, в противном случае вы столкнётесь с тем, что расширения установятся не в ту папку и не будут записаны в composer.json. Это повлечёт за собой то, что Yii2 просто потом не сможет найти установленное расширение. Даже если его вручную переместить в vendor.
Далее стоит настроить OpenServer на директории frontend и backend. Можно поступить двумя способами:
Первый способ подойдёт для выделенного сервера, когда вы можете создавать домены третьего уровня:
- Открываем настройки OpenServer ((Контекстное меню OpenServer->Настройки)
- В открывшемся окне выбираем вкладку "Домены"
- В качестве типа управления доменами нужно выбрать "Ручное+Автопоиск"
- Далее в поле имя домена вводим имя нашего сайта, например yii2, а в поле "папка домена" выбираем путь "\yii2\frontend\web" и нажимаем "Добавить"
- Далее добавляем путь к директории с backend: в поле имя домена вводим например backend.yii2, а в поле "папка домена" выбираем путь "\yii2\backend\web" и нажимаем "Добавить"
- Нажимаем "Сохранить" - сервер перезапускается и теперь в браузере можно набрать http://yii2/ - это будет сайт-фронтенд, http://backend.yii2/ - это будет доступ к админке.
Второй способ - если у вас виртуальный хостинг и вам недоступно создание доменов третьего уровня и изменение корневой папки сайта:
- Необходимо в корневую папку (это httpdocs, www, htdocs или как-то ещё) поместить входной скрипт приложения (содержимое frontend/web или /web, если у вас basic шаблон структуры фреймворка)
- В этой папке создать папку admin и туда поместить содержимое backend/web, после чего перенастроить относительные пути во входном скрипте index.php.
- Для того, чтобы куки и сессии не пересекались между бекэндом и фронтендом нужно настроить /backend/config/main.php по следующему примеру:
PHP Code:
'components' => [ 'request' => [ 'csrfParam' => '_backendCSRF', 'csrfCookie' => [ 'httpOnly' => true, 'path' => '/admin', ], ], 'user' => [ 'identityCookie' => [ 'name' => '_backendIdentity', 'path' => '/admin', 'httpOnly' => true, ], ], 'session' => [ 'name' => 'BACKENDSESSID', 'cookieParams' => [ 'path' => '/admin', ], ], ],
- Далее просто настраиваем OpenServer на нашу корневую папку "\yii2\frontend\web" или "\yii2\www" или "\yii2\httpdocs" (как назвали). В этом случае http://yii2/ - это будет сайт-фронтенд, а http://yii2/admin - это будет доступ к админке.
Структура обоих шаблонов Yii2 предусматривает, что все исполняемые файлы находятся за пределами корневой папки сайта.
Статьи по теме:
http://stackoverflow.com/questions/2...-how-to-use-it
http://www.yiiframework.com/doc-2.0/...d-hosting.html
Продолжение следует...