В настоящее время я разрабатываю php-приложение для благотворительной организации, и сейчас я нахожусь в стадии определения методов развертывания.
В нашем приложении используются как Zend Framework, так и Doctrine. Приложение будет развернуто на разные серверы, каждый с другим конфигурационным файлом. Машины являются как Windows, так и Linux (но все с Apache и php 5.2 +).
Источник доступен в репозитории subversion, и мы хотим создавать и хранить наши пакеты на сервере Linux.
Желательно, чтобы процесс обновления был таким же простым, как запуск команды обновления в каталоге приложения, где команда обновления также обновляет базу данных (с помощью сценариев доктрины) и обеспечивает зависимости фреймворков. Эта команда обновления должна быть командой на машине (мы не можем ssh в них). Предпочтительно, у нас есть возможность загрузить новую версию или предоставить уже загруженный tarball с новой версией. (но только загрузка или только tarball также в порядке)
Пакеты с установками и обновлениями (новые версии) также предпочтительно создаются с помощью одной команды.
Я читал немного о phar's, pear, phing, но я понятия не имею, что лучший способ сделать это. Сервер непрерывной интеграции на самом деле не нужен, но я думаю о развертывании тестовых сред автоматически после создания версии.
Изначально только обновление php-приложения должно быть очень простым, сначала заполняя конфигурационный файл, когда установка может быть выполнена вручную.