Предпочтительное место для хранения файлов конфигурации, которые часто меняются

18

У меня есть ряд приложений на моем сервере Linux, которые зависят от нескольких файлов конфигурации. Эти приложения связаны, но раздельные. Что бы ни стоило, на данный момент у каждого приложения есть свой собственный каталог /opt. Файлы конфигурации могут меняться примерно раз в неделю, но не более того. Я планирую настроить работу cron для получения последней версии с FTP-сайта каждое воскресенье.

Я пока не до конца понимаю, где лучше всего разместить эти файлы конфигурации. Вот несколько возможностей:

  • /etc/<appsuitename>/ Это файл конфигурации, конфигурация идет в /etc
  • /var/<appsuitename>/ Файлы действительно меняются достаточно часто, но никогда непосредственно администратором (мной), а не поставщиком платформы.
  • /opt/<appsuitename>/libили /opt/<appsuitename>/commonЭто скорее образ мышления Windows, но в этом случае это может иметь смысл
  • /usr/lib вероятно нет, но включены для полноты.

Или, может быть, что-то еще, о чем я не думал?

Редактировать: Отвечая на вопросы @ MichaelKjörling:

  • Есть только 3 разделов, /home, /, и /swap. /optне только для чтения
  • Да, другому человеку придется использовать этот сервер, если меня сбьет автобус.
  • Эти приложения разрабатываются внутри, так что я тот, кто решает, куда должны идти конфигурации. Если бы это не был «метатег», я мог бы добавить тег передовой практики.
  • В конечном счете, что бы я ни решил на самом деле, не имеет значения, я знаю, что организационные системы предназначены для системного администратора больше, чем для внутренней работы ОС, но мне нравится следовать стандартным соглашениям, поскольку они существуют по определенной причине.
durron597
источник

Ответы:

21

Стандарт Иерархии Файловой Системы требует, чтобы файлы конфигурации для чего-либо установленного в /opt/xyzдолжны быть помещены туда /etc/opt/xyz, где они xyzдолжны совпадать. То есть приложение, установленное в каталоге в / opt, для которого требуются файлы конфигурации для конкретного хоста, должно иметь соответствующий каталог в / etc / opt, в который эти файлы конфигурации попадают.

Назначение / etc (специфичная для хоста конфигурация системы) просто определяется как:

/etcИерархия содержит конфигурационные файлы. «Файл конфигурации» - это локальный файл, используемый для управления работой программы; он должен быть статическим и не может быть исполняемым двоичным файлом.

Конечно, никакая конфигурация не является полностью статической, но я бы взял в этом контексте «статический», что примерно означает «не меняется без вмешательства администратора».

/ etc / opt более конкретен, и его назначение указано как:

Специфичные для хоста файлы конфигурации для пакетов дополнительного программного обеспечения должны быть установлены в каталоге /etc/opt/<subdir>, где <subdir>находится имя поддерева, в /optкотором хранятся статические данные из этого пакета.

Поскольку вы устанавливаете программное обеспечение в / opt, файлы конфигурации должны находиться в соответствующем подкаталоге или иерархии в / etc / opt.

Конечно, ничто не требует, чтобы ваша система соответствовала FHS, но другим будет намного легче находить любые файлы, которые они могут искать, так как они будут знать, где они могут их найти.

Поскольку речь идет о программном обеспечении, разработанном внутри компании, я также настоятельно рекомендую вам настроить местоположение . Даже если его можно настроить только с помощью объявления макроса, сделанного в make-файле и выполненного посредством полной перестройки из исходного кода, это все же намного лучше, чем жесткое кодирование определенного местоположения в исходный код везде, где вы хотите открыть файл конфигурации.

CVn
источник
На самом деле это уже сделано в .propertiesфайле. Но на данный момент каждая версия программного обеспечения имеет свою собственную копию в /optподкаталоге, которая, очевидно, не идеальна, и я собирался ее изменить. Этот вопрос о том, «что я должен изменить это на». Благодарность!
durron597