Как правильно развернуть приложения от разработки до производства и как работать с несколькими конфигурациями сайтов. Все мои разработки выполняются через svn, расположенные в var/svn/myapp/trunk и фактический производственный код находится в /var/www/myapp.
Я проверяю последний код на свой локальный компьютер в директорию с именем myapp_latest_svn. У меня есть код сайта и местоположения в моих основных settings.php, который имеет H_PATH = 'http://myapp.com' & Амп; db настройки конфигурации для db_host, db_user_name и db_password, которые, как вы знаете, отличаются в локальные настройки компьютера (где localhost/myapp.com - это просто псевдоним Apache) и на сервере (на сайте myapp.com).
Также файл .htaccess отличается от файла на производственном сервере. Короче говоря, существует ряд различий между dev и production.
Я все время работаю в SVN. Каждое утро я использую SVN Update, который обновляет последний код в моем локальном репозитории svn. Когда я готов идти вживую, я создаю выпуск с svn Commit.
Затем в релизе я должен помнить, чтобы изменить все соответствующие файлы dev на свою производственную копию. Теперь мне пришлось вручную редактировать производственные настройки .php и .htaccess, чтобы отразить изменения, специфичные для сайта.
Я ищу автоматизированный способ перехода от разработчика к производству в комплекте с версиями и без ручного редактирования файлов, которые являются склонными к ошибкам и плохой практикой.
Один из способов - сделать производственную версию файлов только для чтения (0444). Таким образом, когда я делаю экспорт svn, они не перезаписываются dev-версией файлов, и мне не нужно беспокоиться о редактировании файлов на каждый переход от разработчика к производству. Но это плохой способ делать такие вещи, как непрерывная интеграция.
Также, создавая несколько копий settings.php(один для localhost, beta и prod). Затем, используя оболочку script который экспортирует из 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. Но то, что abt.htaccess, вы не можете проверить, как выше в .htaccess.
Что я не хочу делать каждый раз, когда я развертываю свой сайт, чтобы изменить настройки.
Моя схема DB не находится в управлении версиями, поэтому db не является проблемой со мной, только settings.php и .htaccess.
Также как я могу сказать svn не обновлять некоторые каталоги, поскольку это также зависит от сайта (/log,/cache,/assets,/downloads). Также мне нужно сохранить доступ для записи apache (www_data) без изменений для вышеуказанных файлов.
Наконец, я не хочу копировать пустой каталог соединительных линий и .svn файлы на рабочий сервер при экспорте.
Как я могу использовать Phing или даже оболочку script для интеграции без каких-либо из этих проблем при создании с svn на производственные серверы.
Это может быть полезно для многих разработчиков приложений wannabe там в дикой природе.
Спасибо заранее,
ocptime