Установка и работа с Yii2 через Vagrant

Фреймворк Yii2 предоставляет возможность быстро разворачивать рабочее окружение (LAMP-сервер) с помощью Vagrant. В этой статье мы рассмотрим установку и настройку как advanced, так и basic шаблонов приложений. Они немножко отличаются конфигурациями.

В стандартную сборку окружения для Yii2 входят:

  • box для Vagrant’a – bento/ubuntu-16.04;
  • PHP 7.0;
  • MySql (MariaDB 10.0);
  • PHP-FPM;
  • NGINX.

До начала настройки окружения необходимо установить виртуальную машину (VirtualBoxVMWareParallels и т.д.), надстройку над виртуальной машиной – Vagrant и сгенерировать токен для Github (исходники Yii2 будут браться оттуда). Также у вас должны быть установлены git, php и composer (можно сказать – джентльменский набор веб-разработчика 🙂 ).

Разворачиваем окружение

1. Создайте директорию у себя на компьютере для вашего проекта и зайдите в неё через командную строку:

cd ПУТЬ_ДО_СОЗДАННОЙ_ДИРЕКТОРИИ

2. Установите один из двух доступных шаблонов приложения Yii2 (basic или advanced):

Basic
composer create-project --prefer-dist yiisoft/yii2-app-basic .

или:

Advanced
composer create-project --prefer-dist yiisoft/yii2-app-advanced .

В созданной директории появятся исходники выбранной версии приложения.

3. Создайте файл конфигурации Vagrant’a по примеру от разработчиков:

Linux
cd vagrant/config
cp vagrant-local.example.yml vagrant-local.yml
cd ../..

или:

Windows
cd vagrant/config
copy vagrant-local.example.yml vagrant-local.yml
cd ../..

Указанные три команды выполняют следующие действия:

  1. Переход в каталог с файлами конфигурации.
  2. Создание копии файла vagrant-local.example.yml с наименованием vagrant-local.yml.
  3. Возврат в корневую директорию проекта.

4. Запишите свой токен для Github (который вы генерировали ранее) в файл настроек vagrant-local.yml в параметр github_token. Пример:

Файл конфигурации: ../vagrant/config/vagrant-local.yml
github_token: 90283409823402934798273498289347982347892384

Остальные настройки файла vagrant-local.yml изменять не обязательно.

5. Установите vagrant-hostmanager:

Если вы ранее устанавливали vagrant-hostmanager, то повторно этого делать не нужно – пропустите этот шаг.

vagrant plugin install vagrant-hostmanager

6. Запустите виртуальную машину:

vagrant up

Если вы устанавливали шаблон basic, то потребуется прописать cookieValidationKey в файле конфигурации приложения – «../config/web.php», иначе возникнет ошибка при открытии страницы со следующим содержимым:

Invalid Configuration–yii\base\InvalidConfigException
yii\web\Request::cookieValidationKey must be configured with a secret key.

Если же вы устанавливали шаблон advanced, то выполните команду инициализации проекта «php init«. С помощью неё приложение переходит в режим разработки (Development) или в боевой режим (Production).

На этом базовая настройка завершена, адреса сайтов пропишутся в файл “hosts” самостоятельно и будут доступны сразу после запуска виртуальной машины. Если вы устанавливали шаблон basic, то сайт будет доступен по адресу – «http://yii2basic.test/», а для шаблона “advanced” будут созданы два хоста – «http://y2aa-frontend.test/» и “http://y2aa-frontend.test/” для фронтенда и бекенда соответственно.

Пример тонкой настройки окружения через provision скрипты

Уже в таком виде вполне можно пользоваться настроенным окружением, но для реальной разработки придется подстраивать это окружение под конкретные проекты по-разному, например, для вашего текущего проекта требуется новая версия PHP (на момент написания статьи это PHP 7.3), а в исходном используется «старая» PHP 7.0. Давайте обновим версию PHP через настройку окружения Vagrant’a.

Vagrant для настройки окружения использует так называемые provision скрипты (они устанавливают пакеты PHP, MySql и т.д., а также выставляют все требуемые настройки системы). Они находятся в файле конфигурации — Vagrantfile, директория — «../vagrant/provision». Часть из них запускается один раз при первичной настройке, а вторая часть при каждом запуске.

Для установки новой версии PHP в Ubuntu 16.04 нам необходимо добавить репозиторий где его можно найти (в репозиториях Ubuntu 16.04 находятся только «старые» версии PHP, это сделано для стабильности релиза этой ОС). Это делается всего одной командой:

add-apt-repository ppa:ondrej/php

Эту команду нужно добавить в файл первичной настройки (provision скрипта) «../vagrant/provision/once-as-root.sh» сразу после строчки ‘ «info «Update OS software»», вот что должно получиться:

...
info "Update OS software"
add-apt-repository ppa:ondrej/php
apt-get update
apt-get upgrade -y
...

Теперь осталось только заменить все версии 7.0 на 7.3 в этом файле (воспользуйтесь поиском и заменой в редакторе для надежности). Также рекомендую сразу изменить версию PHP в файле конфигурации composer’a – composer.json.

...
"php": "<=7.3",
...

Для перенастройки окружения используйте команду «vagrant provision»:

vagrant provision

Эта команда запустит все provision-скрипты, которые должны запускаться один раз при первичной настройке окружения.

Пример настройки хостов

Также как и с предыдущим примером для реального проекта требуется указать свой домен (или домены для крупных проектов) вместо стандартного «http://yii2basic.test/». Чтобы изменить домен на свой поправьте настройки в двух местах: 1 – в Vagrantfile (он  находится в корне проекта) опция «domains» и 2 – в файле конфигурации Nginx (он находится вот тут: ../vagrant/nginx/app.conf) опция «server_name». Просто замените стандартное наименование домена на новое. Для применения изменений перезагрузите Vagrant:

vagrant reload

Новые домены после этого заработают.

Если после длительной разработки вам потребовался какой-нибудь пакет, например, PostgreSQL, то вместо перенастройки окружения через «vagrant provision» разумнее будет установить этот пакет вручную подключившись к виртуальной машине (vagrant ssh).

Подключение к Vagrant по SSH

Для подключения к ОС созданной Vagrant’ом достаточно использовать следующую команду в консоли (CMD):

vagrant ssh

Иногда требуется получить дополнительные сведения о подключении по SSH. Все необходимое покажет команда:

vagrant ssh-config

Указанные данные требуются для настройки различных утилит, например, в PhpStorm’e есть компонент для работы с базой данных (в некоторых других IDE есть аналогичные инструменты) и для настройки соединения необходимо использовать данные отображаемые командой «vagrant ssh-config». Пример использования:

Полезные ссылки:

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