[su_spoiler open=”yes” icon=”” class=”my-spoiler note” title=””]

Разработка может быть сложной и разнообразной в зависимости от того что вам нужно. В этой главе не будет расказанно все, но некоторые наиболее общие требования и идеи разработки.

[/su_spoiler]

Symfony2 База Разработки

Типичные шаги при разработки приложений для  Symfony2:

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

Разработка также может включать и другие вещи, такие как:

  • Связывание конкретного кода и релива в системе контроля весрий;
  • Создание плацдарма для того чтобы обновиться в режиме “оффлайн”;
  • Запуск тестов чтобы убедиться что код и(или) сервер стабильны;
  • Удаление бесполезный файлов, чтобы держать ваше prod окружение чистым;
  • Очистка внешних систем кэширование (Memcached или Redis)

Развертывание приложения

Есть несколько способов, чтобы развернуть приложение Symfony2.

Начнем с базовых стратегий.

Передача файлов

Стандартный способ развертывания приложение – это ручное копировани ftp/scp (или что-нибудь похожее). У этого способа есть ряд недостатков: во-первых вы теряете контроль над системой пока обновляете. Так же после копирование, может потребоваться еще некоторые ручные манипуляции ( смотри Common Post-Deployment Tasks)

Использование Системы Контроля Версий

Если вы используете системы контроля версии (например GIT или SVN), вы можете просто установить приложения, скопировав из репозитория. Когда вы будете готовы для обновления просто заберите последние обновления из SVC.

Этот путь проще, но вам все еще надо забодиться о шагах, которые необходимо выполнять вручную ( смотри Common Post-Deployment Tasks )

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

Есть также мега-крутые тулы, которые призваны уменьшить боль. Есть также несокль инструментов которые специально учитывают требования Symfony2, и которые заботятся о том чтобы все до, во время и после развертования работала правильно.

Смотри список инструметов, которые могут помочь тебе.

Обычные после-деплойные задачи

После развертывание, вот список задач, которые вы должны сделать:

A) Настроить app/config/parameters.yml

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

B) Обновить vendors

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

[su_spoiler open=”yes” icon=”” class=”my-spoiler tip” title=””]

Флаг –optimize-autoloader следалет работу Composer более производительней за счет “класс-карты”. Флаг –no-dev гарантирует что пакеты разработки не установлены в prod окружении.

[/su_spoiler]

C) Очистка кэша

Убедитесь что вы сбросили ( и разогрели ) кэш Symfony2:

D) Свалите в кучу ваши Assets

Если вы используете Assetic, обновите Assets:

E) Остальное

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

  • Запуск миграции баз данных
  • Очистка APC кэша
  • Заруск assets:install (позаботились уже в composer.phar установить)
  • Добавить/изменить CRON
  • Залить

Жизненный цикл приложения: Continuous Integration, QA, etc

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

Использование stanging, тестирование, QA, continuous integration, миграция баз данных и возможность отката если что-то пошло не так – оч крутые вещи. Есть простые и сложные тулы которые могут облегчить ( или усложнить ) вам жизнь.

Не забывайте что развертывание приложений также включает в себя обновление зависимостей ( обычно через Composer ), миграции БД, очистка кэша или других ведей таких как заливание assets в CDN ( Common Post-Deployment Tasks ).

Инструменты

Capifony

Этот инструмент предоставляет набор инструментов Capistrano, подогнанные спечиально под symfony

sf2debpkg

Этот инструмент может создавать Debian пакеты для проектов Symfony2

Magallanes5:

Этот инстумент как Capistrano написан на PHP, и может быть проще для PHP разработчиков

Bundles:

Есть много бандлов которые добавляют фичи прямо в консоль Symfony2

Basic scripting:

Вы конечно же можете использовать shell, Ant7 или любой другой скрипт для развертывания вашего приложения

Platform as a Service Providers:

PaaS это относительно новый способ развертывания. Обычно PaaS содержит один конфигурационный файл в корневой папке проекта, который определяет как будет постоено окружения на лету, чтобы поддерживать ваше программное обеспечение. Существует только один поставщик для Symfony2 – PagodaBox8.

[su_spoiler open=”yes” icon=”” class=”my-spoiler tip” title=””]

Ищешь силы? Поговори с людьми из комьюнити Symfony IRC channel9 #symfony (on freenode)

[/su_spoiler]