Фреймворк 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. Создайте директорию у себя на компьютере для вашего проекта и зайдите в неё через командную строку:

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

или:

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

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

или:

Указанные три команды выполняют следующие действия: 1 – переход в каталог с файлами конфигурации, 2 – создание копии файла “vagrant-local.example.yml” с наименованием “vagrant-local.yml” и 3 – возврат в корневую директорию проекта.

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

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

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

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

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

Если вы устанавливали шаблон “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” (он находится в корне проекта) можно увидеть где находятся эти provision скрипты. Они сложены в директории “../vagrant/provision”, часть из них запускается один раз при первичной настройке, а вторая часть при каждом запуске.

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

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

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

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

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

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

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

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

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

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

Комментарии

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