Как развернуть приложение Symfony

Как развернуть приложение Symfony

Развёртывание приложения Symfony может быть сложной и разнообразной задачей, в зависимости от установки и требований вашего приложения. Эта статья не является пошаговым руководством, она представляет собой общий список наиболее распространённых требований и идей для развёртывания.

Основы развёртывания Symfony

Типичные шаги, предпринимаемые при развёртывании приложения Symfony включают в себя:

  1. Загрузите ваш код на сервер производства;
  2. Установите ваши зависимости поставщика (обычно делается через Composer и может быть выполнено до загрузки);
  3. Запуск перемещений базы данных или схожие задания по обновлению измененных структур данных;
  4. Очистка (и по желанию разогрев) вашего кеша.

Развёртывание может также включать в себя следующие задачи:

  • Тегирование конкретной версии вашего кода в качестве резила в хранилище вашего исходного кода;
  • Создание временного участка подготовки производства для построения вашей обновлённой установки "оффлайн";
  • Запуск любых доступных тестов, чтобы убедиться в стабильности кода и/или сервера;
  • Удаление любых ненужных файлов из каталога web/ для поддержания чистоты вашего окружения производства;
  • Очистка внешних систем кеширования (как Memcached или Redis).

Как развернуть приложение Symfony

Существует несколько путей развёртывания вашего приложения Symfony. Начните с нескольких базовых стратегий развёртывания и после наращивайте силы.

Базовый перенос файла

Самым базовым способом развёртывания приложения является копирование файлов вручную с помощью FTP/SCP (или схожего метода). Этот способ имеет свои недостатки, так как вам будет не хватать контроля над системой по мере прогрессирования улучшений. Этот метод также требует некоторых ручных действий после переноса файлов (см. Распространённые задачи после развёртывания).

Использование системы управления исходным кодом

Если вы используете системы управления исходным кодом (например, Git или SVN), вы можете упростить себе жизнь, если ваша живая инсталляция также будет копией вашего хранилища. Когда вы будете готовы к улучшению (апгрейду), все что вам нужно будет сделать - это вызвать последние обновления из вашей системы контроля исходного кода.

Это облегчает обновление ваших файлов, но вам все еще надо беспокоиться о том, чтобы выполнять другие шаги вручную (см. Распространённые задачи после развёртывания).

Использование платформ в качестве сервиса

Конкретные шаги развёртывания очень отличаются от одного поставщика сервисов до другого, так что прочтите статью, посвящённую тому сервису, что вы выберете:

Использование скриптов сборки и других инструментов

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

Capistrano и плагин Symfony
Capistrano - это удаленный автоматизатор сервера и инструмент развёртывания, написанный на Ruby. Плагин Symfony - это плагин, который облегчает задания, связанные с Symfony, вдохновлённый Capifony (который работает только с Capistrano 2).
sf2debpkg
Помогает вам построить родной пакет Debian для вашего проекта Symfony.
Magallanes
Этот инструмент развёртывания, похожий на Capistrano, встрое в PHP и может быть ленче для PHP-разработчиков в контексте его расширения под их нужды.
Fabric
Эта библиотека, основанная на Python, предоставляет базовый набор операций для выполнения локальных или удаленных командных оболочеки для загрузки/ скачивания файлов.
Deployer
Это еще один переписанный для PHP Capistrano, с некоторыми готовыми рецептами для Symfony.
Пакеты
Существуют некоторые пакеты, которые добавляют функции развётывания прямо в вашу консоль Symfony.
Базовое написание скриптов
Вы, конечно же, можете использовать консоль, Ant или любой другой инструмент для написания скриптов для развёртывания вашего приложения.

Распространённые задачи после развёртывания

После развёртывания вашего испходного кода, существует перечень наиболее распространённых вещей, которые вам потребуется сделать:

A) Проверка требований

Проверьте, соответствуетли ваш сервис требованиям, выполнив:

1
$ php bin/symfony_requirements

B) Конфигурация вашего файла app/config/parameters.yml

Этот файл не должен развёртываться, он управляется автоматическими утилитами, представленными Symfony.

C) Установка/обвновления ваших поставщиков

Ваши поставщики могут быть обновлены до переноса вашего исходного кода (т.е. вы обновляете каталог vendor/, потом переносите его с вашим исходным кодом) или же после, уже на сервере. В любом случае, просто обновите ваших поставщиков так, как обычно:

1
$ composer install --no-dev --optimize-autoloader

Tip

Флажок --optimize-autoloader значительно улучшает производительноасть автозагрузчика Composer, путём построения "карты классов". Флажок --no-dev убеждается в том, что пакеты разработки не установлены в окружении производства.

Caution

Если вы получите ошибку "класс не найден" во время этого шага, вам может понадобиться запустить export SYMFONY_ENV=prod перед тем, как использовать эту команду, чтобы скрипты post-install-cmd запускались в окружении prod.

D) Очистка вашего кеша Symfony

Убедитесь в том, что вы очистили и разогрели ваш кеш Symfony:

1
2
$ php bin/console cache:clear --env=prod --no-debug --no-warmup
$ php bin/console cache:warmup --env=prod

E) Сброс ваших файлов Assetic

Если вы использоуете Assetic, вы также захотите сбросить ваши источники:

1
$ php bin/console assetic:dump --env=prod --no-debug

F) Другие вещи!

Существует еще масса других вещей, которые вам может понадобиться сделать, в зависимости от вашей установки:

  • Запуск любых перемещений базы данных
  • Очистка вашего APC-кеша
  • Запуск assets:installcomposer install об этом уже позаботиличь)
  • Добавление/изменение работ CRON
  • Перемещение ресурсов в CDN
  • ...

Жизненный цикл приложения: непрерывная интеграция, контроль качества и др.

Несмотря на то, что эта запись покрывает технические детали развёртывания, полный жизненный цикл кода от разработки до прозводства может иметь больше шагов: развёртывание для подготовки, контроль качества, проведение тестов и т.д.

Использование подготовки, тестированя, контроля качества, непрерывной интеграции, перемещений базы данных и возможности отката в случае провала сильно рекомендуются. Существуют простые и более сложные инструменты, и можно сделать развёртывание таким лёгким (или мудрёным), как требует этого ваше окружение.

Не забудьте, что развёртывание вашего приложения также включает в себя обновление любой зависимости (обычно через Composer), перемещение вашей БД, очистку вашего кеша и другие потнециальные вещи, как перемещение ресурсов в CDN (см. Распространённые задачи после развёртывания).

Эта документация является переводом официальной документации Symfony и предоставляется по свободной лицензии CC BY-SA 3.0.