Как стать автором
Обновить

Деплой php+MySQL на heroku

Время на прочтение3 мин
Количество просмотров22K
Всем доброго времени суток. Хочу поделиться с вами своим опытом развертывания php+mysql приложения на сервисе heroku. Если вы первый раз о таком слышите, вам сюда.

Поехали


Итак, представим, что у нас есть уже готовое php+mysql приложение. Для начала регистрируемся здесь. На почту придет письмо с подтверждением регистрации. Далее переходим по ссылке, вводим пароль и подтверждение, жмем save. Первый этап пройден, идем дальше.

После успешной регистрации сервис предлагает нам скачать клиент. Естественно, для каждой ОСи свой вариант установки. Далее будем рассматривать пример для UNIX.

Пишем в консоли:

wget -qO- https://toolbelt.heroku.com/install.sh | sh


С установкой не должно возникнуть проблем. Также нам необходим установленный и настроенный git, об этом я писать не буду, на просторах интернета полно информации об этом.

После установки нужно войти в приложение:


$ heroku login


Вводим email и пароль. Приложение должно вас авторизовать и автоматически загрузить ваш публичный ssh ключ. Если этого не произошло, заходим в свой аккаунт (https://dashboard.heroku.com/account) и добавляем публичный ssh:



Чтобы посмотреть публичный ssh, пишем в консоли:


$ cat ~/.ssh/id_rsa.pub


Ключи также можно добавить с помощью команды:


$ heroku keys:add


Итак, все готово для того, чтобы создать свое первое «heroku приложение». Заходим в директорию, где хранится наше приложение, и пишем в консоли:


$  heroku create


В результате вы должны увидеть что-то похоже на это:



Далее делаем push нашего приложения в heroku master:


$ git push heroku master


После чего пишем в консоли:


$ heroku open


Наш сайт откроется в браузере. Если бы мы не юзали mysql, то на этом все бы и закончилось, но нам придется еще чуть попотеть. Скорее всего, на экране полезли ошибки о том, что невозможно соединиться с mysql. Также ошибки можно посмотреть, открыв логи:


$ heroku logs


Для работы с mysql будем использовать аддон ClearDB. Чтобы его установить, для начала необходимо заполнить данные о вашей кредитной карте на странице dashboard.heroku.com/account:



Если этого не сделать, при установке ClearDB вы будете видеть ошибку:

Adding cleardb:ignite on dry-taiga-2649... failed
! Please verify your account to install this add-on
! For more information, see devcenter.heroku.com/categories/billing
! Verify now at heroku.com/verify


Ниже команда для установки ClearDB:


$ heroku addons:add cleardb:ignite
в

ClearDB установлен, теперь посмотрим доступы к базе данных:


$ heroku config


Получим результат в виде:

CLEARDB_DATABASE_URL:mysql://USER:PASSWORD@HOSTNAME/DBASENAME?reconnect=true

Используя полученные доступы через любой удобный MySQL клиент заливаем дамп БД на сервер.

Доступы к базе в php можно получить следующим образом:

    $url=parse_url(getenv("CLEARDB_DATABASE_URL"));

    $server = $url["host"];
    $username = $url["user"];
    $password = $url["pass"];
    $db = substr($url["path"],1);

    mysqli_connect($server, $username, $password);


    mysqli_select_db($db);


Чтобы каждый раз не менять конфиг для локального сайта и heroku, можно добавить проверку:

if ($_SERVER['SERVER_NAME'] == "thawing-island-242342379.herokuapp.com") {
	$url = parse_url(getenv("CLEARDB_DATABASE_URL"));
	$host = $url["host"];
	$username = $url["user"];
	$password = $url["pass"];
	$dbname = substr($url["path"], 1);
} else {
	$host = 'localhost';
	$dbname = 'db';
	$username = 'user';
	$password = '123';
}


Было бы правильней это сделать через APPLICATION_ENV, но я не нашел информации о том, как это сделать. Если кто-то в курсе — напишите.

Почти все готово. Осталось добавить в корень файл composer.json:

{
    "require": {
        "ext-mysql": "*"
    }
}


Если такой уже есть, нужно просто дописать "ext-mysql": "*"

Пишем в консоли:


$ git add .
$ git commit -am "added db credentials"
$ git push heroku master
$ heroku open


Открывается браузер, видим рабочий сайт.

Буду рад если этот «мануал» кому то поможет.

Всем спасибо з а внимание.
Теги:
Хабы:
Всего голосов 9: ↑4 и ↓5-1
Комментарии7

Публикации

Истории

Работа

PHP программист
95 вакансий

Ближайшие события

7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн
15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
22 – 24 ноября
Хакатон «AgroCode Hack Genetics'24»
Онлайн
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань