При разработке собственного проекта, после внесения каких-либо изменений в нём возникает необходимость его деплоя. Это связано с тем, что изменения, которые были внесены, требуют актуализации кода на сервере, чтобы обеспечить их доступность для пользователей.
Что такое деплой проекта?
Деплой проекта представляет собой процесс развертывания приложений или веб-сайтов на сервере с целью сделать их доступными для пользователей. Этот процесс включает в себя несколько шагов, таких как:
- Обновление кода: получение последней версии кода из репозитория, например, с помощью команды
git pull
. - Установка зависимостей: установка необходимых библиотек и пакетов, например, с использованием
composer
илиnpm
. - Выполнение миграций: применение изменений в структуре базы данных, используя соответствующие команды для миграций.
- Кэширование: оптимизация конфигурации, маршрутов и событий для повышения производительности приложения.
- Перезапуск сервера: иногда может потребоваться перезапуск службы или приложения для полного применения изменений.
Таким образом, процесс деплоя помогает перейти от стадии разработки к актуальной версии приложения, которая становится доступной для пользователей.
Пошаговый алгоритм процесса быстрого обновления проекта на сервере
Для того чтобы подготовить наш проект к обновлению на сервере, необходимо создать файл deploy.sh
в корне проекта на локальном сервере. В этом файле будет размещён bash-скрипт, выполнение которого на внешнем сервере произведет деплой нашего проекта. Скрипт будет включать в себя выполнение команды git pull
для получения всех изменений с GitHub и другие необходимые операции.
Пример содержания файла deploy.sh
:
#!/bin/bash
# Переходим в директорию проекта
cd /путь/к/вашему/проекту
# Выполняем git pull для обновления кода
git pull origin master
# (Опционально) Устанавливаем зависимости, если используем, например, npm или composer
# npm install
# composer install
# (Опционально) Выполняем команды для сборки проекта, если это требуется
# npm run build
# Перезапускаем сервер, если это требуется (например, с помощью systemctl или pm2)
# sudo systemctl restart имя_сервиса
# pm2 restart имя_приложения
echo "Деплой завершен!"
Пример из реального проекта:
#!/bin/bash
set -e
git pull origin master
php8.2 artisan down
php8.2 composer.phar install --no-dev --optimize-autoloader
php8.2 artisan migrate --force
php8.2 artisan config:cache
php8.2 artisan event:cache
php8.2 artisan route:cache
php8.2 artisan up
После того как файл deploy.sh
создан, необходимо выполнить в консоли нашего проекта на локальном сервере следующие команды:
git add .
git commit -m "Изменение 1"
git push origin master
(если вы работаете в ветке master)
Далее, необходимо соединиться с внешним сервером (хостингом) с помощью команды:
ssh -i ~/.ssh/id_rsa имя_пользователя@адрес_сервера
P.S. Команда ssh -i ~/.ssh/id_rsa
используется для подключения к удаленному серверу с использованием указанного файла ключа для аутентификации. Файл ключа обычно генерируется на нашей локальной машине и должен иметь надлежащие права доступа. Подробнее здесь.
После того как мы подключились к консоли сервера, необходимо перейти в папку своего проекта и запустить созданный нами bash-скрипт deploy.sh
. Это можно сделать с помощью следующей команды:
sh deploy.sh
Выполнение этого скрипта осуществит все указанные в нём шаги, что обеспечит быстрое обновление проекта на сервере. В результате пользователи смогут получить доступ к последним изменениям, которые были внесены в код.