Как правильно развертывать приложения от разработки до производства и как работать с несколькими конфигурациями сайта.
Все мои разработки выполняются через SVN, расположенный в var / svn / myapp / trunk и
фактический производственный код находится в /var/www/myapp.
Я проверяю последний код на моем локальном компьютере в каталоге с именем "myapp_latest_svn".
В моем основном файле settings.php есть код, специфичный для сайта и местоположения, который имеет H_PATH = 'http://myapp.com'
& db config настройки для db_host, db_user_name и db_password, которые, как вы знаете, отличаются в
настройки локального компьютера (где localhost / myapp.com - это просто псевдоним Apache) и на рабочем сервере (работающий сайт работает на myapp.com).
Также файл .htaccess отличается от файла на рабочем сервере. Короче говоря, между разработкой и производством есть ряд отличий.
Я храню всю свою работу в SVN. Каждое утро я использую SVN Update, который обновляет последний код в моем локальном репозитории SVN.
Когда я готов начать работу, я создаю релиз с помощью SVN Commit.
Тогда в выпуске я должен помнить, чтобы заменить все соответствующие файлы dev на их производственный аналог.
Теперь мне пришлось вручную отредактировать производственные settings.php & .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