17

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

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

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

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

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

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

1 ответ1

20

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

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

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

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

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

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .