Из этой статьи вы узнаете, как задеплоить проект Laravel на Heroku — облачной платформе для развёртывания, управления и масштабирования проектов.
- Что понадобится для работы
- Шаг 2: создайте Procfile
- Шаг 3: создайте новое приложение на Heroku
- Шаг 4: подключите Node.js
- Шаг 5: настройте ключ шифрования Laravel
- Шаг 6: отправьте приложение на Heroku
- Шаг 7: убедитесь, что приложение использует правильные пакеты сборки
- Шаг 8: проверьте доступность приложения
Что понадобится для работы
- Знания PHP и Laravel
- Аккаунт на Heroku
- Heroku CLI (можно загрузить здесь)
- Git (инструкция по установке здесь)
Предполагается, что у вас есть приложение на Laravel, которое работает на локальном сервере и готово к развёртыванию.
Шаг 1: инициализируйте Git
Инициализируйте git-репозиторий в текущей рабочей директории. Используйте такую команду:
$ git init
Внимание: если вы не умеете работать с Git, пройдите бесплатный курс по системам контроля версий.
Шаг 2: создайте Procfile
В рабочей директории создайте Procfile без расширения и добавьте в него такую строку:
web: vendor/bin/heroku-php-apache2 public/
Также Procfile можно создать и обновлять через терминал. Для этого понадобится следующая команда:
$ echo "web: vendor/bin/heroku-php-apache2 public/" > Procfile
Шаг 3: создайте новое приложение на Heroku
Это можно сделать с помощью команды:
$ heroku create
В этом случае для вашего проекта устанавливается рандомное название. Чтобы его изменить, используйте следующую команду:
$ heroku apps:rename newAppName
Вместо newAppName укажите желаемое название проекта.
Шаг 4: подключите Node.js
Node.js понадобится для работы с командами npm install, npm production и так далее. Добавьте в проект пакет heroku/nodejs с помощью команды:
$ heroku buildpacks:add heroku/nodejs
После этого все зависимости, указанные в package.json, будут установлены при развёртывании проекта, а devDependencies будут проигнорированы.
Чтобы устанавливать все зависимости, включая dev, используйте такую команду:
$ heroku config:set NPM_CONFIG_PRODUCTION=false
Затем добавьте heroku-postbuild
в package.json
в секцию scripts
:
"scripts": {
"heroku-postbuild": "npm run production"
}
Шаг 5: настройте ключ шифрования Laravel
Чтобы настроить ключ шифрования, скопируйте значение APP_KEY из файла .env и выполните указанную ниже команду:
$ heroku config:set APP_KEY="Your app key"
А с помощью предложенной далее команды можно сгенерировать и установить новый ключ шифрования.
$ heroku config:set APP_KEY=$(php artisan --no-ansi key:generate --show)
Шаг 6: отправьте приложение на Heroku
Запушить приложение на Heroku можно с помощью такой команды:
$ git push heroku main
Шаг 7: убедитесь, что приложение использует правильные пакеты сборки
Для этого используйте предложенную команду:
$ heroku buildpacks
Если в списке пакетов есть heroku/php и heroku/nodejs, всё в порядке. Если какого-то из пакетов нет, запустите такую команду:
$ heroku buildpacks:add ['missing build']
Вместо [‘missing build’] укажите название пакета, который нужно добавить.
Шаг 8: проверьте доступность приложения
Для этого введите в адресную строку браузера соответствующий URL.
Чтобы установить переменные окружения, воспользуйтесь командой:
$ heroku config:set VAR_NAME=VAR_VALUE
Также можно использовать панель инструментов. На вкладке Settings выберите Reveal config vars. Здесь можно просмотреть и настроить переменные окружения.
Heroku позволяет бесплатно использовать PostgreSQL. Для этого понадобится такая команда:
$ heroku addons:create heroku-postgresql:hobby-dev
На панели инструментов в настройках укажите для DB_CONNECTION значение pgsql. Выберите Reveal config vars, чтобы проверить переменные окружения.
Чтобы получить учётные данные БД приложения, выберите аддон Heroku Postgres Hobby Dev на вкладке Overview панели инструментов. После этого откроется новая вкладка в браузере. Учётные данные БД можно найти на вкладке «Настройки».
Обратите внимание, чтобы использовать команды artisan или npm на Heroku, перед всеми командами запускайте heroku run. Например, heroku run php artisan storage:link или heroku run npm install.
Адаптированный перевод статьи How to deploy a Laravel/Vue App to Heroku by Chinedu Ogama. Мнение администрации Хекслета может не совпадать с мнением автора оригинальной публикации.