Вступление
Laravel - это веб-инфраструктура PHP с открытым исходным кодом, предназначенная для упрощения общих задач веб-разработки, таких как аутентификация, маршрутизация и кэширование. Deployer - это инструмент развертывания PHP с открытым исходным кодом с готовой поддержкой ряда популярных платформ, включая Laravel, CodeIgniter, Symfony и Zend Framework.
Deployer автоматизирует развертывание путем клонирования приложения из репозитория Git на сервер, установки зависимостей с помощью Composer и настройки приложения, так что вам не придется делать это вручную. Это позволяет тратить больше времени на разработку, а не на загрузку и настройку, и позволяет выполнять развертывание чаще.
В этом руководстве вы автоматически развернете приложение Laravel без каких-либо простоев. Для этого вы подготовите локальную среду разработки, из которой вы будете развертывать код, а затем сконфигурируете производственный сервер с Nginx и базой данных MySQL для обслуживания приложения.
Предпосылки
Прежде чем начать это руководство, вам понадобится следующее:
-
Один сервер Ubuntu 16.04 с пользователем без полномочий root с привилегиями sudo, как описано в Initial Настройка сервера с Ubuntu 16.04 учебник.
-
Стек LEMP установлен, как описано в How To Установка Linux, Nginx, MySQL, PHP (стек LEMP) в учебнике по Ubuntu 16.04.
-
PHP, Composer и Git установлены на вашем сервере, выполнив шаги 1 и 2 https://www.digitalocean.com/community/tutorials/how-to-install-and-use-composer-on-ubuntu-16-04. Как установить и использовать Composer в Ubuntu 16.04.
-
Пакеты
+ php-xml
и` + php-mbstring` установлены на вашем сервере. Установите их, запустив:+ sudo apt-get install php7.0-mbstring php7.0-xml +
. -
Git-сервер. Вы можете использовать такие службы, как GitLab, Bitbucket или GitHub. GitLab и Bitbucket предлагают частные репозитории бесплатно, а GitHub предлагает частные репозитории, начиная с $ 7 / месяц. Кроме того, вы можете настроить частный сервер Git, следуя учебному руководству https://www.digitalocean.com/community/tutorials/how-to-set-up-a-private-git-server-on-a-vps [ Как настроить частный Git-сервер на VPS.
-
Доменное имя, которое указывает на ваш сервер. Https://www.digitalocean.com/community/tutorials/how-to-set-up-a-host-name-with-digitalocean[How to Set the Host Name with DigitalOcean] учебное пособие может помочь вам настроить это.
-
Composer и Git также установлены на вашем локальном компьютере. Точный метод установки зависит от вашей локальной операционной системы. Инструкции по установке Git доступны на странице загрузок проекта Git, и вы можете загрузить Composer непосредственно с веб-сайта проекта Composer.
Шаг 1 - Настройка вашей локальной среды разработки
Поскольку вы будете создавать и развертывать приложение с локального компьютера, начните с настройки локальной среды разработки. Deployer будет контролировать весь процесс развертывания с вашего локального компьютера, поэтому начните с его установки.
На вашем * локальном компьютере * откройте терминал и загрузите установщик Deployer, используя + curl +
:
curl -LO https://deployer.org/deployer.phar
Затем запустите короткий PHP-скрипт, чтобы убедиться, что установщик соответствует хешу SHA-1 для последнего установщика, найденного на Deployer - страница загрузки. Замените выделенное значение последним хешем:
php -r "if (hash_file('sha1', 'deployer.phar') === '') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('deployer.phar'); } echo PHP_EOL;"
OutputInstaller verified
Сделать Deployer доступным для всей системы. Обратите внимание, что если вы используете Windows или macOS на локальном компьютере, вам может потребоваться создать каталог + / usr / local / bin / dep +
перед выполнением этой команды:
sudo mv deployer.phar /usr/local/bin/dep
Сделайте его исполняемым:
sudo chmod +x /usr/local/bin/dep
Затем создайте проект Laravel на вашем * локальном компьютере *:
composer create-project --prefer-dist laravel/laravel "5.5.*"
Вы установили все необходимое программное обеспечение на свой локальный компьютер. Имея это в виду, мы перейдем к созданию Git-репозитория для приложения.
Шаг 2 - Подключение к вашему удаленному Git-репозиторию
Deployer был разработан, чтобы позволить пользователям развертывать код из любого места. Чтобы разрешить эту функцию, пользователям необходимо отправить код в Интернет-хранилище, из которого Deployer затем скопирует код на рабочий сервер. Мы будем использовать Git, систему контроля версий с открытым исходным кодом, для управления исходным кодом приложения Laravel. Вы можете подключиться к серверу Git по протоколу SSH, и для этого вам нужно сгенерировать ключи SSH. Это более безопасно, чем аутентификация на основе паролей, и позволяет вам не вводить пароль перед каждым развертыванием.
Выполните следующую команду на вашем * локальном компьютере *, чтобы сгенерировать ключ SSH. Обратите внимание, что + -f +
указывает имя файла ключа, и вы можете заменить его своим именем. Он сгенерирует пару ключей SSH (с именами ++
и + .pub +
) в папку + ~ / .ssh / +
.
ssh-keygen -t rsa -b 4096 -f ~/.ssh/
Возможно, у вас есть больше ключей SSH на вашем локальном компьютере, поэтому настройте клиент SSH, чтобы знать, какой закрытый ключ SSH использовать при подключении к вашему Git-серверу.
Создайте файл конфигурации SSH * на своем локальном компьютере *:
touch ~/.ssh/config
Откройте файл и добавьте ярлык на ваш сервер Git. Он должен содержать директиву + HostName +
(указывающую на имя хоста вашего сервера Git) и директиву + IdentityFile +
(указывающую на путь к файлу только что созданного ключа SSH:
~ / .Ssh / конфигурации
Host
HostName
IdentityFile ~/.ssh/
Сохраните и закройте файл, а затем ограничьте его разрешения:
chmod 600 ~/.ssh/config
Теперь ваш SSH-клиент будет знать, какой закрытый ключ использовать для подключения к Git-серверу.
Отобразите содержимое файла с открытым ключом с помощью следующей команды:
cat ~/.ssh/.pub
Скопируйте вывод и добавьте открытый ключ на ваш Git-сервер.
Если вы используете хостинг Git, ознакомьтесь с его документацией о том, как добавить ключи SSH в свою учетную запись:
Теперь вы сможете подключиться к вашему Git-серверу с вашей локальной машины. Проверьте соединение с помощью следующей команды:
ssh -T
Если эта команда приводит к ошибке, убедитесь, что вы правильно добавили свои ключи SSH, обратившись к документации службы Git-хостинга, и попробуйте подключиться снова.
Прежде чем помещать приложение в удаленный репозиторий Git и развертывать его, давайте сначала настроим рабочий сервер.
Шаг 3 - Настройка пользователя Deployer
Deployer использует протокол SSH для безопасного выполнения команд на сервере. По этой причине первым шагом к настройке рабочего сервера будет создание пользователя, которого Deployer сможет использовать для входа и выполнения команд на вашем сервере через SSH.
Войдите на свой сервер LEMP с пользователем не-root sudo и создайте нового пользователя с именем «* deployer *» с помощью следующей команды:
sudo adduser deployer
Laravel нужны некоторые доступные для записи каталоги для хранения кэшированных файлов и загрузок, поэтому каталоги, созданные пользователем * deployer *, должны быть доступны для записи на веб-сервере Nginx. Добавьте пользователя в группу * www-data *, чтобы сделать это:
sudo usermod -aG www-data deployer
Разрешение по умолчанию для файлов, созданных пользователем * deployer *, должно быть + 644 +
для файлов и + 755 +
для каталогов. Таким образом, пользователь * deployer * сможет читать и записывать файлы, а группа и другие пользователи смогут их читать.
Сделайте это, установив umask по умолчанию для * deployer * в + 022 +
:
sudo chfn -o umask=022 deployer
Мы будем хранить приложение в каталоге + / var / www / html / +
, поэтому измените владельца каталога на пользователя * deployer * и группу * www-data *.
sudo chown deployer:www-data /var/www/html
Пользователь * deployer * должен иметь возможность изменять файлы и папки в каталоге + / var / www / html +
. Учитывая это, все новые файлы и подкаталоги, созданные в каталоге + / var / www / html
, должны наследовать идентификатор группы папки (* www-data *). Для этого установите идентификатор группы в этом каталоге с помощью следующей команды:
sudo chmod g+s /var/www/html
Deployer будет клонировать репозиторий Git на рабочий сервер с использованием SSH, поэтому вы хотите убедиться, что соединение между вашим сервером LEMP и сервером Git является безопасным. Мы будем использовать тот же подход, который мы использовали для нашей локальной машины, и мы сгенерируем SSH-ключ для пользователя * deployer *.
Переключитесь на пользователя * deployer * на вашем сервере:
su - deployer
Затем сгенерируйте пару ключей SSH как пользователь * deployer *. На этот раз вы можете принять имя файла ключей SSH по умолчанию:
ssh-keygen -t rsa -b 4096
Показать открытый ключ:
cat ~/.ssh/id_rsa.pub
Скопируйте открытый ключ и добавьте его на свой Git-сервер, как это делалось на предыдущем шаге.
Ваш локальный компьютер также будет взаимодействовать с сервером по SSH, поэтому вы должны сгенерировать ключи SSH для пользователя * deployer * на локальном компьютере и добавить открытый ключ на сервер.
На вашем * локальном компьютере * выполните следующую команду. Не стесняйтесь заменить имя файла на ваш выбор:
ssh-keygen -t rsa -b 4096 -f ~/.ssh/
Скопируйте вывод следующей команды, который содержит открытый ключ:
cat ~/.ssh/.pub
На * вашем сервере * как пользователь * deployer * выполните следующее:
nano ~/.ssh/authorized_keys
Вставьте открытый ключ в редактор и нажмите + CTRL-X +
, + Y +
, затем + ENTER +
, чтобы сохранить и выйти.
Ограничьте права доступа к файлу:
chmod 600 ~/.ssh/authorized_keys
Теперь переключитесь обратно на пользователя sudo:
exit
Теперь ваш сервер может подключаться к серверу Git, и вы можете войти на сервер с пользователем * deployer * с вашего локального компьютера.
Войдите с локального компьютера на сервер как пользователь * deployer *, чтобы проверить соединение:
ssh deployer@ -i ~/.ssh/
После того, как вы вошли в систему как * deployer *, также проверьте соединение между вашим сервером и сервером Git:
ssh -T
Наконец, выйдите из сервера:
exit
Отсюда мы можем перейти к настройке Nginx и MySQL на нашем веб-сервере.
Шаг 4 - Настройка Nginx
Теперь мы готовы настроить веб-сервер, который будет обслуживать приложение. Это потребует настройки корневого каталога и структуры каталогов, которые мы будем использовать для хранения файлов Laravel. Мы настроим Nginx для обслуживания наших файлов из каталога + / var / www / laravel +
.
Во-первых, нам нужно создать конфигурацию блока https://www.digitalocean.com/community/tutorials/how-to-set-up-nginx-server-blocks-virtual-hosts-on-ubuntu-16-04. файл] для нового сайта.
Войдите на сервер как пользователь sudo и создайте новый файл конфигурации. Не забудьте заменить своим доменным именем:
sudo nano /etc/nginx/sites-available/
Добавьте блок + server +
в начало файла конфигурации:
example.com ’> / etc / nginx / sites-available /
server {
listen 80;
listen [::]:80;
root /var/www/html//current/public;
index index.php index.html index.htm index.nginx-debian.html;
server_name www.;
}
Две директивы + listen +
в верхней части указывают Nginx, какие порты прослушивать, а директива + + root + определяет корень документа, в который будет установлен Laravel. `+ Current / public +
в пути к корневому каталогу является символической ссылкой, указывающей на последний выпуск приложения. Добавляя директиву + index
, мы говорим Nginx обслуживать любые файлы` + index.php`, прежде чем искать их HTML-аналоги при запросе расположения каталога. За директивой + server_name +
должен следовать ваш домен и любые его псевдонимы.
Мы также должны изменить способ обработки запросов Nginx. Это делается с помощью директивы + try_files +
. Мы хотим, чтобы он сначала попытался обработать запрос как файл, и, если он не может найти файл с правильным именем, он должен попытаться обработать индексный файл по умолчанию для каталога, соответствующего запросу. В противном случае он должен передать запрос в файл + index.php +
в качестве параметра запроса.
example.com ’> / etc / nginx / sites-available /
server {
listen 80;
listen [::]:80;
root /var/www/html//current/public;
index index.php index.html index.htm index.nginx-debian.html;
server_name www.;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
Далее нам нужно создать блок, который обрабатывает фактическое выполнение любых файлов PHP. Это будет применяться ко всем файлам, которые заканчиваются на .php. Он попробует сам файл, а затем попытается передать его в качестве параметра в файл + index.php +
.
Мы установим директивы + fastcgi +
, чтобы указать Nginx использовать фактический путь приложения (разрешенный после перехода по символической ссылке) вместо символической ссылки. Если вы не добавите эти строки в конфигурацию, путь, по которому будут кэшироваться символьные точки ссылки, означает, что старая версия вашего приложения будет загружена после развертывания. Без этих директив вам пришлось бы вручную очищать кеш после каждого развертывания, и запросы к вашему приложению потенциально могли завершиться ошибкой. Кроме того, директива + fastcgi_pass +
гарантирует, что Nginx использует сокет, который php7-fpm использует для связи, и что файл + index.php +
используется в качестве индекса для этих операций.
example.com ’> / etc / nginx / sites-available /
server {
listen 80;
listen [::]:80;
root /var/www/html//current/public;
index index.php index.html index.htm index.nginx-debian.html;
server_name www.;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
}
Наконец, мы хотим убедиться, что Nginx не разрешает доступ к каким-либо скрытым файлам + .htaccess +
. Мы сделаем это, добавив еще один блок местоположения, называемый + location ~ / \. Ht +
, и внутри этого блока директиву, определяющую + deny all; +
.
После добавления этого последнего блока местоположения файл конфигурации будет выглядеть так:
example.com ’> / etc / nginx / sites-available /
server {
listen 80;
listen [::]:80;
root /var/www/html//current/public;
index index.php index.html index.htm index.nginx-debian.html;
server_name www.;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
Сохраните и закройте файл (+ CTRL-X +
, + Y +
, затем + ENTER +
), а затем включите новый блок сервера, создав символическую ссылку на каталог + sites-enabled +
:
sudo ln -s /etc/nginx/sites-available/ /etc/nginx/sites-enabled/
Проверьте файл конфигурации на наличие синтаксических ошибок:
sudo nginx -t
Если вы видите какие-либо ошибки, вернитесь и перепроверьте файл, прежде чем продолжить.
Перезапустите Nginx, чтобы внести необходимые изменения:
sudo systemctl restart nginx
Сервер Nginx настроен. Далее мы настроим базу данных MySQL приложения.
Шаг 5 - Настройка MySQL
После установки MySQL по умолчанию создает пользователя * root *. Однако этот пользователь имеет неограниченные привилегии, поэтому использование пользователя * root * для базы данных вашего приложения является плохой практикой безопасности. Вместо этого мы создадим базу данных для приложения с выделенным пользователем.
Войдите в консоль MySQL как * root *:
mysql -u root -p
Это попросит вас ввести пароль * root *.
Далее создайте новую базу данных для приложения:
CREATE DATABASE DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Затем создайте новую базу данных пользователя. В целях данного руководства мы будем называть этого пользователя ` с паролем `
, хотя вам следует заменить пароль надежным паролем по вашему выбору.
CREATE USER ''@'localhost' IDENTIFIED BY '';
Предоставьте пользователю права доступа к базе данных:
GRANT ALL ON .* TO ''@'localhost';
Далее перезагрузите привилегии:
FLUSH PRIVILEGES;
И, наконец, выход из консоли MySQL:
EXIT;
База данных и пользователь вашего приложения теперь настроены, и вы почти готовы к первому развертыванию.
Шаг 6 - Развертывание приложения
Итак, вы настроили все инструменты и программы, необходимые для работы Deployer. Все, что осталось сделать перед запуском первого развертывания, - это завершить настройку приложения Laravel и самого Deployer, а также инициализировать и отправить приложение в удаленный репозиторий Git.
Откройте терминал на вашем * локальном компьютере * и измените рабочий каталог на папку приложения с помощью следующей команды:
cd
Из этого каталога выполните следующую команду, которая создает файл с именем + deploy.php +
в папке ++
, который будет содержать информацию о конфигурации и задачи для развертывания:
dep init -t Laravel
Затем откройте файл + deploy.php +
в предпочитаемом вами текстовом редакторе или IDE. Третья строка содержит PHP-скрипт, который содержит необходимые задачи и конфигурации для развертывания приложения Laravel:
deploy.php
<?php
namespace Deployer;
require 'recipe/laravel.php';
. . .
Ниже приведены некоторые поля, которые вы должны отредактировать для соответствия вашей конфигурации:
-
Под
+ // Project Name +
добавьте имя вашего проекта Laravel. -
Под
+ // Project Repository +
добавьте ссылку на ваш Git-репозиторий. -
В разделе
+ // Hosts +
добавьте IP-адрес или доменное имя вашего сервера в директиву+ host () +
, имя вашего пользователя Deployer (* deployer * в наших примерах) к+ user () + `директива. Вам также следует добавить ключ SSH, созданный на шаге 3, в директиву `+ identifFile () +
. Наконец, вы должны добавить путь к файлу папки, содержащей ваше приложение.
Когда вы закончите редактировать эти поля, они должны выглядеть следующим образом:
deploy.php
...
// Project name
set('application', '');
// Project repository
set('repository', '');
. . .
// Hosts
host('')
->identityFile('~/.ssh/')
->set('deploy_path', '/var/www/html/');
Далее, закомментируйте последнюю строку файла, + before ('deploy: symlink', 'artisan: migrate'); +
. Эта строка указывает Deployer на автоматический запуск миграций базы данных, и, комментируя его, мы отключаем его. Если вы не закомментируете это, развертывание завершится неудачей, поскольку для этой строки требуются соответствующие учетные данные базы данных на сервере, которые можно добавить только с помощью файла, который будет создан во время первого развертывания:
deploy.php
...
// Migrate database before symlink new release.
//before('deploy:symlink', 'artisan:migrate');
Прежде чем мы сможем развернуть проект, мы должны сначала отправить его в удаленный репозиторий Git.
На вашем * локальном компьютере * измените рабочий каталог на папку вашего приложения:
cd
Запустите следующую команду в вашем каталоге ++
, чтобы инициализировать Git-репозиторий в папке проекта:
git init
Затем добавьте все файлы проекта в хранилище:
git add .
Зафиксируйте изменения:
git commit -m ''
Добавьте ваш Git-сервер в локальный репозиторий с помощью следующей команды. Обязательно замените выделенный текст URL-адресом вашего собственного удаленного репозитория:
git remote add origin
Отправьте изменения в удаленный репозиторий Git:
git push origin master
Наконец, запустите ваше первое развертывание, используя команду + dep +
:
dep deploy
Если все идет хорошо, вы должны увидеть такой вывод с + Успешно развернуто! +
В конце:
Deployer's output✈︎ Deploying master on
✔ Executing task deploy:prepare
✔ Executing task deploy:lock
✔ Executing task deploy:release
➤ Executing task deploy:update_code
✔ Ok
✔ Executing task deploy:shared
✔ Executing task deploy:vendors
✔ Executing task deploy:writable
✔ Executing task artisan:storage:link
✔ Executing task artisan:view:clear
✔ Executing task artisan:cache:clear
✔ Executing task artisan:config:cache
✔ Executing task artisan:optimize
✔ Executing task deploy:symlink
✔ Executing task deploy:unlock
✔ Executing task cleanup
Successfully deployed!
Следующая структура будет создана на вашем сервере внутри каталога + / var / www / html / +
:
├── .dep
├── current -> releases/1
├── releases
│ └── 1
└── shared
├── .env
└── storage
Проверьте это, выполнив следующую команду * на вашем сервере *, которая выведет список файлов и каталогов в папке:
ls /var/www/html/
Outputcurrent .dep releases shared
Вот что содержит каждый из этих файлов и каталогов:
-
Каталог
+ Releases +
содержит выпуски развертывания приложения Laravel. -
+ current +
- символическая ссылка на последний выпуск. -
Каталог
+ .dep +
содержит специальные метаданные для Deployer. -
Каталог
+ shared +
содержит файл конфигурации+ .env +
и каталог+ storage +
, который будет связан с каждым выпуском.
Однако приложение пока не будет работать, поскольку файл + .env +
пуст. Этот файл используется для хранения важных конфигураций, таких как ключ приложения - случайная строка, используемая для шифрования. Если он не установлен, ваши пользовательские сеансы и другие зашифрованные данные не будут защищены. В приложении есть файл + .env +
на вашем * локальном компьютере *, но файл Laravel + .gitignore +
исключает его из репозитория Git, поскольку хранение конфиденциальных данных, таких как пароли, в репозитории Git не является хорошей идеей, а также, приложение требует различных настроек на вашем сервере. Файл + .env +
также содержит настройки подключения к базе данных, поэтому мы отключили миграцию базы данных для первого развертывания.
Давайте настроим приложение на вашем сервере.
Войдите на свой сервер как пользователь * deployer *:
ssh deployer@ -i ~/.ssh/
Запустите следующую команду * на вашем сервере *, скопируйте и вставьте локальный файл + .env +
в редактор:
nano /var/www/html//shared/.env
Прежде чем вы сможете сохранить его, необходимо внести некоторые изменения. Установите + APP_ENV +
в + production
,` + APP_DEBUG` в + false
,` + APP_LOG_LEVEL` в + error +
и не забудьте заменить базу данных, пользователя базы данных и пароль своими. Вам также следует заменить ++
своим собственным доменом:
/var/www/html/laravel-app/shared/.env
APP_NAME=Laravel
APP_ENV=
APP_KEY=base64:cA1hATAgR4BjdHJqI8aOj8jEjaaOM8gMNHXIP8d5IQg=
APP_DEBUG=
APP_LOG_LEVEL=
APP_URL=http://
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=
DB_USERNAME=
DB_PASSWORD=
BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
Сохраните файл и закройте редактор.
Теперь раскомментируйте последнюю строку файла + deploy.php +
на вашем локальном компьютере:
deploy.php
...
// Migrate database before symlink new release.
before('deploy:symlink', 'artisan:migrate');
Чтобы убедиться, что эта конфигурация работает, разверните приложение еще раз. Запустите следующую команду * на вашем локальном компьютере *:
dep deploy
Теперь ваше приложение будет работать правильно. Если вы посетите доменное имя вашего сервера (), вы увидите следующую целевую страницу:
изображение: https: //assets.digitalocean.com/laraveldeployer/deployerimg.png [целевая страница Laravel]
Вам не нужно редактировать файл + .env +
на вашем сервере перед всеми развертываниями. Типичное развертывание не так сложно, как первое, и выполняется всего несколькими командами.
Шаг 7 - Запуск типичного развертывания
В качестве последнего шага в этом разделе будет описан простой процесс развертывания, который вы можете использовать ежедневно.
Начните с изменения приложения перед повторным развертыванием. Например, вы можете добавить новый маршрут в файл + routs / web.php +
:
/routes/web.php
<?php
. . .
Route::get('/', function () {
return view('welcome');
});
Передайте эти изменения:
git commit -am 'Your commit message.'
Отправьте изменения в удаленный репозиторий Git:
git push origin master
И, наконец, разверните приложение:
dep deploy
Вы успешно развернули приложение на своем сервере.
Заключение
Вы настроили свой локальный компьютер и сервер для простого развертывания приложения Laravel с нулевым временем простоя. Статья охватывает только основы Deployer и имеет много полезных функций. Вы можете развернуть на нескольких серверах одновременно и создавать задачи; Например, вы можете указать задачу резервного копирования базы данных перед миграцией. Если вы хотите узнать больше о функциях Deployer, вы можете найти больше информации в документации Deployer.