- PVSM.RU - https://www.pvsm.ru -
Установка и настройка Yii2 описаны в официальном руководстве, а так же опубликовано множество статей, но я не нашел того руководства, которое помогло бы мне установить и настроить этот фреймворк от начала и до конца. Во время установки я столкнулся с некоторыми вопросами, ответы на которые находились в разных местах на просторах интернета. После продолжительных плясок с бубнами я настроил Yii2 так как хотел. Свой опыт настройки я и опишу в этой статье, в надежде что кому-то это сократит время плясок и упростит жизнь.
Так как опыта настройки сервера и работы в консоле Linux/Unix у меня немного, то первая проблема появилась уже при установке Composer. На сервере установлены несколько версий PHP, и по-умолчанию команды консоли выполняет PHP версии 5.2.17. А Composer требует версию PHP 5.3.2 и выше. Решение было таким:
php -r "readfile('https://getcomposer.org/installer');" | php5.6
Настройки сервера не дают возможности сделать Composer выполняемым и запускать напрямую, поэтому запускаем его через интерпретатор PHP, при этом не забывая указывать версию PHP:
php5.6 composer.phar install
Первый шаг выполнен — Composer установлен.
Сначала всё по инструкции [1]: устанавливаем плагин composer asset, который управляет зависимостями пакетов bower и npm.
php5.6 composer.phar global require "fxp/composer-asset-plugin:~1.1.1"
Это необходимо сделать только 1 раз, в дальнейшем можно устанавливать Yii2 несколько раз с помощью команд описанных ниже.
Теперь выбираем какую версию шаблона Yii2 ставить: Basic или Advanced. Basic — простое приложение, а в Advanced реализовано разделение на публичную и административную часть (frontend и backend) и создана готовая модель (и таблица БД) user.
Сначала рассмотрим установку Basic, т.к. она проще, выполняется установка с помощью команды:
php5.6 composer.phar create-project --prefer-dist yiisoft/yii2-app-basic mysite
Где mysite
— каталог в который необходимо установить Yii2, он должен быть пустым (если при создании каталога для сайта на сервере был автоматически создан подкаталог public_html
, его необходимо удалить). Composer может запросить логин-пароль от Github (из-за ограничения на количество запросов у Гитхаба).
Небольшое лирическое отступление про структуру каталогов на сервере и во фреймворке. Рассматриваемый mysite/public_html
. Файлы в каталоге public_html
доступны из веба.
Структура шаблона Yii2 Basic включает несколько файлов и каталогов, которые рекомендуется сделать недоступными из веба, чтобы «защитить от нежелательного доступа код и данные», а также каталог basic/web
который как раз и предназначен быть корневой директорией веб сервера. Для необходимой структуры создадим «символьную» ссылку:
cd mysite
ln -s web public_html
Теперь содержимое каталога basic/web
— это наш сайт, а другие файлы фреймворка недоступны из сети.
Yii2 Basic установлен, можно открыть сайт в браузере.
Откройте файл config/db.php
и измените параметры на верные для вашей базы данных. После 'charset' => 'utf8',
можно указать префикс таблиц так: 'tablePrefix' => 'myprefix_'
(если несколько сайтов используют одну базу данных).
Далее настраиваем ссылки, по-умолчанию маршрутизация имеет вид /index.php?r=site%2Fabout
, переведём ее в такой вид /site/about
. Для этого создадим файл web/.htaccess
с содержимым как рекомендуют в оф. гайде [3]:
Options +FollowSymLinks
IndexIgnore */*
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
Теперь веб-сервер знает, что запросы необходимо направлять на index.php, и указывать index.php в URL нет необходимости. Далее в файле config/web.php
добавим (или раскомментируем) в $config = ['components']
после 'db' => require(__DIR__ . '/db.php'),
следующие строки
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
],
],
enablePrettyUrl — генерировать красивые ссылки, showScriptName — не писать имя скрипта index.php в ссылке. Теперь можно зайти на наш сайт и посмотреть, что он уже использует красивые ссылки типа /site/about
.
Отлично, с Yii2 Basic разобрались, теперь переходим к Advanced.
Начало установки аналогично Basic:
php5.6 composer.phar create-project --prefer-dist yiisoft/yii2-app-advanced mysite
Yii2 установлен, в его каталоге mysite появились файлы и каталоги Yii2 в том числе frontend для публичной части сайта и backend для админки. Однако в frontend/web нет файла index.php, поэтому далее выполняем команду init для инициализации шаблона и создаем символьную ссылку для frontend:
cd mysite
php5.6 init
ln -s frontend/web public_html
Теперь фронтенд доступен по основному адресу сайта. Далее настраиваем бекенд:
cd frontend/web
ln -s ../../backend/web admin
Теперь бекенд доступен по адресу /admin
.
Настраиваем красивые адреса во фронтенде:
/frontend/web
такой же .htaccess
как и в шаблоне Basic/frontend/config/main.php
прописываем то же самое
Аналогичные операции проводим для бекенда. Попутно замечаем что файла db.php
в каталоге config
нет.
Параметры для доступа к базе данных в Advanced указываются в common/config/main-local.php
, там прописываем тоже что и в db.php
в Basic. После чего применяем миграцию:
php5.6 yii migrate
В БД создаются таблицы migration и user.
Ура! Yii2 установлен, настроен и готов к работе.
Introduction — Composer [4]
The Definitive Guide to Yii 2.0 (официальный гайд по Yii2 на английском) [5]
Полное руководство по Yii 2.0 (русский перевод) [6]
Installation Yii2 Advanced [7]
How To Install The Advanced Template In Yii2 [8]
Автор: Beif
Источник [9]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/php-2/112353
Ссылки в тексте:
[1] по инструкции: http://www.yiiframework.com/doc-2.0/guide-start-installation.html
[2] виртуальный хостинг: https://www.reg.ru/?rlink=reflink-717
[3] оф. гайде: http://www.yiiframework.com/doc-2.0/guide-tutorial-shared-hosting.html
[4] Introduction — Composer: https://getcomposer.org/doc/00-intro.md
[5] The Definitive Guide to Yii 2.0 (официальный гайд по Yii2 на английском): http://www.yiiframework.com/doc-2.0/guide-index.html
[6] Полное руководство по Yii 2.0 (русский перевод): http://nix-tips.ru/yii2-api-guides/guide-ru-README.html
[7] Installation Yii2 Advanced: https://github.com/yiisoft/yii2-app-advanced/blob/master/docs/guide/start-installation.md
[8] How To Install The Advanced Template In Yii2: http://vegibit.com/how-to-install-the-advanced-template-in-yii2/
[9] Источник: https://habrahabr.ru/post/277209/
Нажмите здесь для печати.