Т.к вы не работали с системами контроля версий и не сталкивались с деплоем, то я не буду вам советовать CI/CD с различными ветками и тд. Вам сходу будет сложно разобраться.
Предлагаю для начала более простой способ:
Если проект коммерческий, то создаем приватный репозиторий в каком-то сервисе (к примеру, GitHub).
Коммитим (фиксируем) изменения и пушим их в репозиторий.
Контроль версий нам нужен для того, чтобы хранить историю изменений проекта, делать откаты в случае ошибки и тд.
У Laravel есть пакет
Laravel Envoy. В файле
Envoy.blade.php
описывыем список команд что нужно сделать на сервере, подключившись по SSH.
@task('production:deploy', ['on' => 'production'])
cd /var/www/my-project-folder
git pull origin master // подтягиваем изменения из репозитория
php composer install --no-dev --optimize-autoloader
php artisan migrate --force // запуск миграций
@endtask
И локально (на своем ПК) запускаем таску
envoy run production:deploy
. Envoy подключится по SSH к серверу и запустит там эти команды.
Про работу с базамы данных:
Должно быть несколько БД: локальная и продакшн.
Допустим, я хочу добавить новое поле в БД. Для этого локально создаю миграцию (это обычный php-класс), описываю какое поле добавить и запускаю её. Коммичу изменения в git и делаю пуш в репозиторий. И запускаю таску
envoy run production:deploy
, а там у нас уже есть команда для миграций.
Для генерации тестовых данных для локальной бд можно использовать
сиды.