Установка приложения на Yii2 через composer
Как я устанавливаю advanced приложение Yii2
Исходные данные. ОС: Linux Mint 18.1 (Serena). Рассмотрим на примере локального сайта blog.local:
1. В первую очередь прописываем локальный адрес в /etc/hosts
127.0.0.1 blog.local
2. Физически файлы всех локальных сайтов я размещаю в папках /home/kostya/server/
<VirtualHost *:80>
ServerAlias blog.local www.blog.local
DocumentRoot /home/kostya/server/blog.local/frontend/web
<Directory home/kostya/server/blog.local/frontend/web/>
RewriteEngine on
# Если запрашиваемая в URL директория или файл существуют обращаемся к ним напрямую
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Если нет - перенаправляем запрос на index.php
RewriteRule . index.php
AllowOverride All
Require all granted
</Directory>
Alias /admin /home/kostya/server/blog.local/backend/web
<Directory home/kostya/server/blog.local/backend/web/>
RewriteEngine on
#Если запрашиваемая в URL директория или файл существуют обращаемся к ним напрямую
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Если нет - перенаправляем запрос на index.php
RewriteRule . index.php
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
3. Включаем сайте и перезапускаем сервер:
sudo a2ensite blog.local.conf sudo service apache2 restart
4. Устанавливаем composer. Как я устанавливал composer уже не помню, поэтому этот пункт я дополню позже, а пока оставлю инструкцию найденную в Интернете. Скорее всего я так и делал.
curl -sS https://getcomposer.org/installer | php mv composer.phar /usr/local/bin/composer
5. Переходим в папку /home/kostya/server/ и выполняем одну из двух команд:
- для базовой версии:
composer create-project --prefer-dist yiisoft/yii2-app-basic blog.local
- для расширенной версии:
composer create-project --prefer-dist yiisoft/yii2-app-advanced blog.local
6. Переходим в папку blog.local и выполняем следующую команду:
php init
И на вопрос:
Which environment do you want the application to be initialized in?
выбираем 0 для развёртывания окружения разработчика и 1 для выбора окружения готового для развёртывания приложения. Я выбрал 0 для начала работы. Ну и собственно приложение развёрнуто.
7. Следующим шагом идёт как вариант миграция базы данных. Для начала на локальном сервере создаём базу данных и прописываем соответствующие настройки в файле /blog.local/common/config/main-local.php. Далее нужно перейти в папку blog.local и выполнить команду
php yii migrate
Появится список миграций. И на вопрос:
Apply the above migration? (yes|no) [no]:
ответить yes. И миграция выполниться. Миграции, которые в приложении по умолчанию находятся в папке /console/migrations/ . После этого переходим на страницу http://blog.local/index.php?r=site/signup и создаём нужную учётную запись.
Возможные проблемы при установке
- Проблемы с composer
Если стандартным описанным методом не удаётся установить composer, то я выполнял следующие команды, найденные на просторах интернета:
rm -rf ~/.composer/vendor/fxp composer global require "fxp/composer-asset-plugin:~1.1.1" rm -rf vendor composer install
- Проблемы с правами
Когда в 6-ом пункте выбираете тип инициализации приложения: development или production. Я когда выбирал сразу production у меня вылезала ошибка 500 сервера. Анализ логов Apache указал на проблему с правами папки assets. Проблема разрешалась путём установки прав на запись для папок:
- frontend/assets
- backend/assets
Полезные материалы по теме
Ссылки:
- https://www.yiiframework.com/doc/guide/2.0/ru/start-installation
- https://nix-tips.ru/yii2-api-guides/guide-ru-start-installation.html
- https://toster.ru/q/348348
- http://sauron.org.ua/post/947
- https://www.youtube.com/watch?v=YWL6om91aGU
- hhttps://github.com/yiisoft/yii2-app-advanced/issues/331
Видео
Настройка debug-панели
Решил сюда добавить кратко информацию по поводу debug-панели. Включать и выключать панель можно в файле /frontend/config/main-local.php закомментировав или раскомментировав код
$config['bootstrap'][] = 'debug'; $config['modules']['debug'] = [ 'class' => 'yii\debug\Module', 'allowedIPs' => '*', ];
Вот хорошее видео про debug-панель: