Развертывание Laravel 8 с нулевым временем простоя (1 часть)

Для меня одно удовольствие разрабатывать проекты с использованием фреймворка Laravel. Он обеспечивает чистоту кода и максимально возможный набор инструментов для создания как мелких, так и крупных приложений.

Хочу сразу сказать, что во всех своих статьях я оставляю реферальные ссылки на сервисы, которые здесь фигурируют. Ваш переход по ним и регистрация — благодарность мне за труд, который я изложил здесь. Заранее спасибо 😉

Мелкие (одноразовые/простые) проекты мы обычно разрабатываем локально и после, выгружаем на продакшн, забывая о системах контроля версий и дальнейшей его поддержке. Важно, речь идет именно о простых и тривиальных проектах, со стабильным низким трафиком.

Более крупные и долгосрочные проекты требуют серьезного подхода к доставке новых версий на продакшн-сервер. Теперь на продакшн нам ничего нельзя будет править и дописывать в «релиз-коде». Есть некая минимальная последовательность при таком подходе:

  1. Разрабатываем в локальной среде проект, с использованием GIT (или любой другой SVC);
  2. Выгружаем наши коммиты в удаленный репозиторий;
  3. Запускаем нашу будущую систему непрерывного развертывания приложения;
  4. Проверяем результат. Если что то пошло не так — одной командой возвращаем сайт к старой версии.

Как на словах так и на деле все выглядит достаточно удобно. Именно такой минимальный «конвейер» мы будем разрабатывать в Вами в этом мини курсе, состоящем из нескольких частей.


Давайте посмотрим, как это выглядит на схеме:


Покупка домена

Я советую регистрировать домен только у крупных компаний, например:

Убедимся, что у нас есть доменное имя для нашего приложения. Давайте дадим ему хорошее имя. В моем случае это будет testmysite.pro. Проверям, не занят ли он и регистрируем.

Регистрация домена на Reg.ru

После покупки у вас должен быть доступ к странице с управления доменом, где вы можете установить нужные нам DNS.

В этой серии уроков, в качестве сервера-провайдера я буду использовать Selectel.ru. Если вы планируете размещать проект для зарубежного сегмента пользователей, рекомендую использовать в качестве альтернативы воспользоваться услугами DigitalOcean.com.

В моем случае, в настройках DNS домена, мне нужно указать следующие данные, которые свойственны Selectel:

ns1.selectel.org
ns2.selectel.org
ns3.selectel.org
ns4.selectel.org

Ключ SSH

Так как весь процесс деплоя приложения будет полностью автоматизирован, нам необходимо создать пару ключей RSA (публичный и приватный).

На большинстве ОС (Linux, Mac OS) вы обычно найдете свой открытый и закрытый ключи в разделах ~/.ssh/id_rsa.pub и ~/.ssh/id_rsa — соответственно. Убедитесь, что вы никогда не опубликуете последний, на каком-либо веб-сайте. Первый необходимо будет указывать в различных местах, чтобы доказать, что вы являетесь тем, за кого себя выдаете.

Если вы не смогли найти пару ключей у себя на компьютере, вы можете их создать следуя инструкции.

После того, как мы создали пару ключей, необходимо установить содержимое публичного файла ~/.ssh/id_rsa.pub в настройках вашего удаленного GIT хостинга. В моем случае это GitHub. Как это сделать — описано в официальной документации.


Вывод

Итак, мы проделали основные работы перед началом реализации нашего «конвейера». Теперь, когда мы изменили серверы имен, чтобы они указывали на нашего сервер-провайдера (в моем случае Selectel), мы можем начать устанавливать DNS таким образом, чтобы наш домен — testmysite.pro — был перенаправлен на IP-адрес нашего будущего сервера.

На данный момент у нас еще нет собственного сервера. Так давайте же его создадим!

Об этом, в следующем эпизоде.

Всем хорошего дня и адекватных заказчиков 😉