Всем доброго времени суток. Хочу поделиться с вами своим опытом развертывания php+mysql приложения на сервисе heroku. Если вы первый раз о таком слышите, вам сюда.
Итак, представим, что у нас есть уже готовое php+mysql приложение. Для начала регистрируемся здесь. На почту придет письмо с подтверждением регистрации. Далее переходим по ссылке, вводим пароль и подтверждение, жмем save. Первый этап пройден, идем дальше.
После успешной регистрации сервис предлагает нам скачать клиент. Естественно, для каждой ОСи свой вариант установки. Далее будем рассматривать пример для UNIX.
Пишем в консоли:
С установкой не должно возникнуть проблем. Также нам необходим установленный и настроенный git, об этом я писать не буду, на просторах интернета полно информации об этом.
После установки нужно войти в приложение:
Вводим email и пароль. Приложение должно вас авторизовать и автоматически загрузить ваш публичный ssh ключ. Если этого не произошло, заходим в свой аккаунт (https://dashboard.heroku.com/account) и добавляем публичный ssh:
Чтобы посмотреть публичный ssh, пишем в консоли:
Ключи также можно добавить с помощью команды:
Итак, все готово для того, чтобы создать свое первое «heroku приложение». Заходим в директорию, где хранится наше приложение, и пишем в консоли:
В результате вы должны увидеть что-то похоже на это:
Далее делаем push нашего приложения в heroku master:
После чего пишем в консоли:
Наш сайт откроется в браузере. Если бы мы не юзали mysql, то на этом все бы и закончилось, но нам придется еще чуть попотеть. Скорее всего, на экране полезли ошибки о том, что невозможно соединиться с mysql. Также ошибки можно посмотреть, открыв логи:
Для работы с mysql будем использовать аддон ClearDB. Чтобы его установить, для начала необходимо заполнить данные о вашей кредитной карте на странице dashboard.heroku.com/account:
Если этого не сделать, при установке ClearDB вы будете видеть ошибку:
Ниже команда для установки ClearDB:
ClearDB установлен, теперь посмотрим доступы к базе данных:
Получим результат в виде:
Используя полученные доступы через любой удобный MySQL клиент заливаем дамп БД на сервер.
Доступы к базе в php можно получить следующим образом:
Чтобы каждый раз не менять конфиг для локального сайта и heroku, можно добавить проверку:
Было бы правильней это сделать через APPLICATION_ENV, но я не нашел информации о том, как это сделать. Если кто-то в курсе — напишите.
Почти все готово. Осталось добавить в корень файл composer.json:
Если такой уже есть, нужно просто дописать
Пишем в консоли:
Открывается браузер, видим рабочий сайт.
Буду рад если этот «мануал» кому то поможет.
Всем спасибо з а внимание.
Поехали
Итак, представим, что у нас есть уже готовое 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
Открывается браузер, видим рабочий сайт.
Буду рад если этот «мануал» кому то поможет.
Всем спасибо з а внимание.