- PVSM.RU - https://www.pvsm.ru -

Установка и настройка Yii2 на виртуальном хостинге

Установка и настройка Yii2 описаны в официальном руководстве, а так же опубликовано множество статей, но я не нашел того руководства, которое помогло бы мне установить и настроить этот фреймворк от начала и до конца. Во время установки я столкнулся с некоторыми вопросами, ответы на которые находились в разных местах на просторах интернета. После продолжительных плясок с бубнами я настроил Yii2 так как хотел. Свой опыт настройки я и опишу в этой статье, в надежде что кому-то это сократит время плясок и упростит жизнь.

1. Установка Composer

Так как опыта настройки сервера и работы в консоле 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 установлен.

2. Установка Yii2

Сначала всё по инструкции [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.

2.1. Установка Yii2 Basic

Сначала рассмотрим установку Basic, т.к. она проще, выполняется установка с помощью команды:

php5.6 composer.phar create-project --prefer-dist yiisoft/yii2-app-basic mysite

Где mysite — каталог в который необходимо установить Yii2, он должен быть пустым (если при создании каталога для сайта на сервере был автоматически создан подкаталог public_html, его необходимо удалить). Composer может запросить логин-пароль от Github (из-за ограничения на количество запросов у Гитхаба).

Небольшое лирическое отступление про структуру каталогов на сервере и во фреймворке. Рассматриваемый виртуальный хостинг [2] настроен так, что файлы сайтов располагаются в каталоге mysite/public_html. Файлы в каталоге public_html доступны из веба.

Структура шаблона Yii2 Basic включает несколько файлов и каталогов, которые рекомендуется сделать недоступными из веба, чтобы «защитить от нежелательного доступа код и данные», а также каталог basic/web который как раз и предназначен быть корневой директорией веб сервера. Для необходимой структуры создадим «символьную» ссылку:

cd mysite
ln -s web public_html

Теперь содержимое каталога basic/web — это наш сайт, а другие файлы фреймворка недоступны из сети.
Yii2 Basic установлен, можно открыть сайт в браузере.

2.1.1. Настройка 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.

2.2. Установка Yii2 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.
Настраиваем красивые адреса во фронтенде:

  1. Создаем в /frontend/web такой же .htaccess как и в шаблоне Basic
  2. В конфиге /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/