Установка фреймворка Yii2 на VPS от Jino
28-11-2018Рассмотрю установку фреймворка на VPS от Jino «под ключ». Т.е. предполагается что ты уже зарегистрировался (если нет вот ссылка) и подключил VPS Сервер.
Сразу хочу оговорить моменты:
В статье свой адрес сайта заменил на что-то-там. Т.к. для написания этой статьи я не арендовал домен, а использовал тестовый (который Jino предоставляет при аренде сервера VPS).
Для «путешествия» по каталогам в консоле использую конструкция cd. При её помощи можно открывать каталоги (аналог двойного клика по папке).
В панели управления жмем Консоль (или можете подключиться к серверу через консоль, последовательность будет такая же). Рассматриваю вариант работы через Консоль, которую предлагает Jino, чтобы даже самые неопытные программисты справились с установкой =) Итак поехали…
Переходим в консоле в каталог где будет установлен сайт, путь к каталогу с сайтом будет таким: /var/www/domains/что-то там. Для этого используем команду cd. Домен нам арендовать необязательно, т.к. при оплате сервера VPS, Jino предоставляет нам тестовый домен.
Пример команды в консоле:
cd /var/www/domains/что-то там
т.е. нам надо открыть каталог с нашим тестовым доменом
Уставнока Composer
Перед тем, как ставить сам фреймворк Yii2, нам необходимо установить Composer, для этого в консоле пишем:
/usr/local/zend/bin/php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
Сразу хочу оговориться, что /usr/local/zend/bin/php - путь где установлен php. Можно провести манипуляции и можно будет писать просто php. Но сейчас этого делать не будем - не та задача.
Дальше пишем
/usr/local/zend/bin/php -r "if (hash_file('sha384', 'composer-setup.php') === '93b54496392c062774670ac18b134c3b3a95e5a5e5c8f1a9f115f203b75bf9a129d5daa8ba6a13e2cc8a1da0806388a8') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
Это была подготовительная работа, теперь сама установка Comoser’a:
/usr/local/zend/bin/php composer-setup.php
Видим инфу о том что скачан файлик composer.phar (картинка 1)
Картинка 1.
Файлик composer-setup.php нам больше не нужен, а заучит можно его и удалить. Пишем в консоле:
/usr/local/zend/bin/php -r "unlink('composer-setup.php');"
Теперь Composer установлен, можно приступать к установке Yii2. Если что, вся официальная документация по установке Composer'a есть на оффСайте
Устанавливаем Yii2 (на примере advanced).
Пишем
/usr/local/zend/bin/php composer.phar global require "fxp/composer-asset-plugin:~1.1.1"
Это всё по инструкции: устанавливаем плагин composer asset, который управляет зависимостями пакетов bower и npm.
В консоле должно отобразится что-то вроде такого (картинка 2):
Картинка 2.
Composer предупреждает нас об опасности установки от имени root (админа). Это не всегда безопасно, но если четко следовать инструкции, можно не переживать за результат =)
Ставим Yii2 Advanced, для этого в консоле пишем:
/usr/local/zend/bin/php composer.phar create-project --prefer-dist yiisoft/yii2-app-advanced mysite
где mysite - директория куда будет установлен фреймворк. У нас её нет, соответственно в текущем каталоге (где мы сейчас «находимся») будет создан этот каталог.
Пошел процесс установки (картинка 3)
Картинка 3
Процесс может занять некоторое время (около 2х минут), так что есть время пойти заварить кофе =)
Настройка Yii2 Advanced
Открываем каталог mysite. Для этого используя команду cd, в консоле пишем:
cd mysite
Инициализируем фреймворк:
/usr/local/zend/bin/php init
У нас спрашивают в какой среде собираемся инициализирвоать, говорим что мы девелоперы, пишем 0 и жмём Enter. После чего подтверждаем свой выбор, пишем yes. Если все правильно сделали, начался процесс инициализации (картинка 4, картинка 5)
Картинка 4
Когда инициализация закончится, увидим надпись initialization complited (картинка 5).
Картинка 5
После завершения инициализации можно проверить работоспособность фреймворка Yii2. Если открыть http://что-то-там.vps.myjino.ru/mysite/frontend/web/, увидим что мы молодцы и фреймворк установили (картинка 6).
Но путь не айс. Хотелось бы избавится от /mysite/frontend/web/.
Картинка 6.
Для этого возвращаемся в консоль (на данный момент ты должен быть в директории mysite) и пишем:
ln -s frontend/web public_html
Далее идем в настройки Apache для нашего домена. Для простоты можете в файловом менеджере открыть файл (/etc/httpd/conf.d/что-то-там.vps.myjino.ru.conf).
Строку
DocumentRoot /var/www/domains/что-то-там.vps.myjino.ru
Меняем на
DocumentRoot /var/www/domains/что-то-там.vps.myjino.ru/mysite/frontend/web
Т.е. добавили /mysite/frontend/web.
Идем в настройки веб-сервера и перезагружаем его (картинка 7)
Картинка 7.
Теперь сайт доступен по норм адресу http://что-то-там.vps.myjino.ru/
Настраиваем админку сайта
Для этого возвращаемся в консоль и открываем каталог frontend/web, для этого используем уже полюбившуюся конструкцию cd:
cd frontend/web
И создаем ссылку, на каталог с бэкендом (находится тут backend/web), для этого пишем:
ln -s ../../backend/web admin
Теперь админка доступна по адресу http://что-то-там.vps.myjino.ru/admin,
Но после чего добавляется некрасивые параметры и получается адресная строка похожая на эту: http://что-то-там.vps.myjino.ru/admin/index.php?r=site%2Flogin . Та же история если переходить по страницам фронтенда
Согласись, не очень красиво. Будем исправлять!
При помощи файлового менеджера создаем в каталоге /frontend/web файлик с названием .htaccess (да, да, это файл без названия, но с точкой и расширением. Этот файл отвечает за дополнительные настройки к Apache). Открываем его на редактирование и пишем туда:
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
RewriteEngine on
RewriteCond %{HTTP:X-Forwarded-Protocol} !=https
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
В конфиге /frontend/config/main.php прописываем код как на картинке. Скорее всего этот код уже написан, его надо просто раскомментировать (картинка 8)
Картинка 8.
Это мы настроили фронтэнд. В директории backend проводим толе самое, а именно:
- Создаём файл .htaccess (с таким же содержимым, как и в frontend)
- Редактируем файл конфига (/backend/config/main.php)
Подключаем БД
Идем в common/config/main-local.php, там указываем настройки подключения к БД: Логин, пароль пользователя, имя БД (картинка 9)
Картинка 9.
Стоять. Мы же не создавали никакой БД…
Создаем БД
В панели управления сервером переходим Управление -> Управление MySQL. Там жмем кнопку Создать базу данных (картинка 10).
Картинка 10.
Указываем имя БД, логин, пароль (их потом указываем в main-local.php)
Возвращаемся в консоль и пишем:
cd ../../
Напомню. Мы находились в папке backend/web, а нам надо вернуться на два каталога выше (в корень сайта).
В фреймворке Yii2 работа со структурой БД происходит при помощи миграций. Одна миграция уже заготовлена «в коробке», нам её надо лишь выполнить. Для этого пишем:
/usr/local/zend/bin/php yii migrate
Нам говорят что есть одна миграция (там самая, из коробки) и предлагают применить, говорим yes (картинка 11)
Картинка 11.
Нам сообщают что наша миграция успешно применилась (картинка 12) (если конечно создали и подключили БД корректно)
Картинка 12.
На странице Управление MySQL открываем phpMyAdmin под тем пользователем, которого создали (картинка 13)
Картинка 13.
Видим что у нас создалось две таблицы: user и migrate (картинка 14)
Картинка 14.
Проверяем работоспособность. Открываем сайт по адресу http://что-то-там
Переходим в Signup (Регистрация)
Заполняем форму регистрации (картинка 15)
Картинка 15.
Поздравляю! Мы зарегистрировались на нашем же сайте =) Если не верите, то в правом верхнем углу должен отображается наш логин, рядом с кнопкой Logout (картинка 16)
Картинка 16.
Не веришь что реально с этим справился? Открываем phpMyAdmin под нашим пользователем БД, и смотрим что хранится в таблице user (картинка 17)
Картинка 17.
Вот это поворот! Реально добавилась запись в таблицу user с теми данными, которые мы указали =) Если что-то не понятно, задавайте вопросы в комментариях. И пишите о чем ещё написать ;)
ТЕГи: yii2 Программирование