Ответы пользователя по тегу Развёртывание ПО
  • Как правильно деплоить laravel проект?

    tommy-vercetti
    @tommy-vercetti
    Symfony/Golang
    Т.к вы не работали с системами контроля версий и не сталкивались с деплоем, то я не буду вам советовать 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, а там у нас уже есть команда для миграций.
    Для генерации тестовых данных для локальной бд можно использовать сиды.
    Ответ написан