Как правильно поддерживать "версию для сервера" - с измененными только конфигурационными файлами в Git?
Иногда я работаю с Codeigniter, и после того, как я закончу разработку на локальном сайте, мне нужно перенести файлы на сервер. Все файлы в /config/
папку необходимо изменить в соответствии с настройками сервера. Неправильно делать полный коммит для этих изменений, я просто заставляю Git полностью игнорировать эти файлы, или есть способ отследить эти изменения и применить их с Git в нужный момент?
3 ответа
Вы можете сохранить версию:
- два "файла конфигурации значений" с правильными значениями для каждой среды
- файл конфигурации шаблона со значением-заполнителем в нем (например,
@@PORT_NUMBER@@
) - скрипт, способный генерировать фактический конфигурационный файл в зависимости от текущей среды
- драйвер фильтра содержимого, который при оформлении заказа запустит скрипт, чтобы сгенерировать правильный файл конфигурации.
Примечание: это предполагает, что ваш файл конфигурации шаблона имеет распознаваемое содержимое (фильтр не имеет имени или пути к файлу). Смотрите " Git эквивалент Subversion's $URL$
расширение ключевых слов "(подробнее об ограничении драйвера фильтра содержимого git).
Создайте две папки в config
папка. Один называется development
а другой production
, Теперь скопируйте config.php, database.php и т. Д. В каждую из этих папок. Теперь, когда вы находитесь на рабочем сервере, CodeIgniter сначала проверит production
папка для файлов. Если его там нет, то он использует файл по умолчанию в config
папка. И если вы находитесь в среде разработки, CodeIgniter сначала проверит development
папка.
Если вы хотите, чтобы любой файл конфигурации был идентичен среде производства и разработки, сохраните его в config
папка.
Если вы хотите установить среду, добавьте следующий код в файл.htaccess:
#This code for Development Environment
SetEnv CI_ENV development
а также
#This code for Production Environment
SetEnv CI_ENV production
Это зависит от ваших потребностей. В моей компании мы используем другой подход. Мы создали несколько сред (где звездочкой является внутреннее имя проекта):
- devel - сайт работает на домене **. local.com *
- test - сайт работает на домене test.*.company.com
- бета - бета. *. company.com
- производство - любой другой домен.
На основе доменного имени мы автоматически переключаем конфигурации. В основном конфигурационный файл выглядит так:
<?php
return array(
'_env' => array(
'devel' => array(
// config for devel
),
'production' => array(
// config for production
)
)
);
?>
Некоторые платформы (AFAIR Zend) задают имя среды в конфигурации виртуального хоста (или.htaccess). Вы должны посмотреть: Zend Framework, автоматическое переключение производства и т.д.
Вы смотрели документацию CI? Есть раздел об этом.