Как правильно развернуть ваши PHP-приложения?

Как правильно развернуть приложения от разработки до производства и как работать с несколькими конфигурациями сайта. Все мои разработки выполняются через SVN, расположенный в var / svn / myapp / trunk и фактический производственный код находится в / var / www / myapp.

Я извлекаю последний код на свой локальный компьютер в каталог с именем & quot; myapp_latest_svn & quot ;. У меня есть код, специфичный для сайта и местоположения, в моем основном файле settings.php, где H_PATH = & apos;http://myapp.com& APOS; & Амп; Настройки конфига БД для db_host, db_user_name и db_password, которые, как вы знаете, отличаются в настройки локального компьютера (где localhost / myapp.com - это просто псевдоним Apache) & amp; на рабочем сервере (сайт работает на myapp.com).

Также файл .htaccess отличается от файла на рабочем сервере. Короче говоря, между разработкой и производством существует ряд различий.

Я храню всю свою работу в SVN. Каждое утро я использую SVN Update, который обновляет последний код в моем локальном репозитории SVN. Когда я буду готов к работе, я создаю релиз с помощью SVN Commit.

Затем в выпуске я должен помнить, чтобы изменить все соответствующие файлы dev на их производственный аналог. Теперь мне пришлось вручную редактировать производственные settings.php & amp; .htaccess для отражения конкретных изменений сайта.

Я ищу автоматизированный способ перехода от разработки к производству с версионированием и нет ручного редактирования файлов, которые подвержены ошибкам и являются плохой практикой.

Один из способов - сделать рабочую версию файлов доступной только для чтения (0444). Таким образом, когда я делаю экспорт SVN, они не перезаписываются версией файлов dev, и мне не нужно беспокоиться о редактировании файлов на каждый переход от разработки к производству. Но это плохой способ делать такие вещи, как непрерывная интеграция.

Также сделав несколько копий файла settings.php (по одному для localhost, beta и prod). Затем с помощью сценария оболочки который экспортирует из SVN, а затем, когда экспорт завершен, он заменяет файл settings.php на правильный файл settings.php, в зависимости от места, в котором мы развертываем. Таким образом, все автоматизировано. Но это также неудачный путь.

Последний способ

if( eregi ("myapp.com$", $_SERVER['HTTP_HOST']) ){

    define('H_PATH', 'myapp.com');

} else {

    define('H_PATH', 'localmyapp.com');

}

Это нормально, что касается settings.php. Но что касается .htaccess, вы не можете проверить, как описано выше в .htaccess.

То, что я не хочу, в конечном итоге делает каждый раз, когда я развертываю свой сайт, когда мне нужно изменить настройки.

Моя схема БД не находится под контролем версий, поэтому db не проблема для меня, только settings.php и .htaccess.

Также, как я могу сказать svn не обновлять некоторые каталоги, так как это также зависит от сайта (/ log, / cache, / assets, / downloads). Также мне нужно сохранить доступ к записи apache (www_data) для указанных выше файлов.

Наконец, я не хочу копировать пустой каталог соединительных линий и файлы .svn на рабочий сервер при экспорте.

Как я могу использовать Phing или даже скрипт оболочки для интеграции, не вызывая ни одной из этих проблем при сборке с svn на рабочие серверы.

Это может быть полезно для многих разработчиков приложений, которые хотят подражать, в дикой природе.

Заранее спасибо,

ocptime

Ответы на вопрос(4)

Ваш ответ на вопрос