На самом деле не стоит использовать Yii2, когда есть нормальный фреймворк Symfony.
Что необходимо иметь в арсенале:
- PHP
- git
- Браузер
- Репозиторий с Yii2 в GitLab.
Первым делом регистрируемся на Heroku.
После успешной регистрации создаём новое приложение на Heroku:
Вводим название и нажимаем кнопку "Create app":
Затем нажимаем на вкладку "Overview":
Вводим в поле поиска postgres
и выбираем "Heroku Postgres":
Нажимаем "Provision" и тем самым создаём сервер бд:
Теперь редактируем composer.json
:
- Добавляем
"ext-gd": "*"
в require - Переносим
"yiisoft/yii2-debug": "~2.1.0"
и"yiisoft/yii2-gii": "~2.1.0"
из require-dev в require
Теперь заходим в GitLab и нажимакм "Set up CI/CD":
Перед нами открывается окно настройки CI/CD:
Вставляем:
image: php:7.2
before_script:
- apt-get update -qq
- apt-get install -y -qq git
deploy to heroku:
stage: deploy
script:
- apt-get install -y ruby
- gem install dpl
- dpl --provider=heroku --app=ТУТ_НАЗВАНИЕ_ПРОЕКТА --api-key=ТУТ_КЛЮЧ
Открываем Heroku, нажимаем на аватар, нажимаем "Account settings":
Скроллим до API Key, нажимаем Reveal и копируем ключ и вставляем в -api-key
Теперь нажимаем "Commit changes" из пункта выше.
Нажимаем на CI/CD, нажимаем выбираем pipeline:
Смотрим логи деплоя и наслаждаемся деплоем не самого лучшего фреймворка:
В конце должно быть сообщение "Job succeded" и ссылка на Heroku:
Переходим по ссылке и видим, что получилось сделать автодеплой с мастера:
Открываем вкладку "Overview" на Heroku и нажимаем на "Heroku Postgres":
Открываем вкладку "Settings" нажимаем на "View credentials":
Редактируем файл config/bd.php
и вставляем данные для бд:
Пушим измненения, ждём пока проект задеплоится.
Создаём файл Procfile
и вставляем туда:
web: vendor/bin/heroku-php-nginx -C nginx.conf web
Создаем файл nginx.conf
и вставляем туда:
location / {
index index.php;
try_files $uri $uri/ /index.php?$args;
}
Пушим измненения, ждём пока проект задеплоится.
Можно добавить, чтобы миграции накатывались автоматом и перечислить команды для работы с фикстурами, но почему-то возникает ошибка на Heroku.
Для этого создаём файл post-install-cmd.sh
и вставляем:
#!/bin/sh
yii migrate --interactive=0
ТУТ_КОМАНДЫ_ДЛЯ_РАБОТЫ_С_ФИКСТУРАМИ
В composer.json добавляем:
"scripts": {
"post-install-cmd": [
"sh post-install-cmd.sh"
]
}
Пушим изменения, смотрим на результаты билда.
- Проверяем, что в
config/db.php
лежат данные от БД Heroku - Запускаем миграции:
yii migrate --interactive=0
Была создана миграция для постов:
Создан тестовый пост. Результаты вывода данных из бд: