【问题标题】:Where to store configurations存储配置的位置
【发布时间】:2012-09-28 09:30:30
【问题描述】:

我正在尝试将我的配置文件夹移动到我的 debian 服务器并将其存储在一个看起来最合理和最合乎逻辑的地方。我把所有东西都扔在家里,但现在看起来像这样:

软件:/opt/
网络文件:/var/www

但是,我必须将我的软件配置文件夹移动到服务器上的某个位置,然后才能将它们符号链接到正确的位置。以下哪一个似乎最适合执行此操作:

/home/configs
/var/cfgs
还是别的?

对不起,如果这看起来很迂腐,但你知道他们在说什么,万物皆有其位;)

【问题讨论】:

    标签: linux unix debian sysadmin


    【解决方案1】:

    根据FHS,我建议使用/etc,这是放置特定于主机的系统范围配置的地方。

    这假定该配置用于服务器应用程序(而不是由人类用户运行的应用程序)。

    例如我正在运行多个 zope 实例,其中包含配置文件

    /etc/zope/instanceA/
    /etc/zope/instanceB/
    /etc/zope/test/
    

    【讨论】:

      【解决方案2】:

      这是一种品味……你是这台机器上唯一的用户吗?
      如果是这样也没关系,你可以把所有东西都放在家里。

      如果是服务器,你要确保你的config目录有正确的访问权限 权限。所以 $HOME 不合适。

      还有一件事,如果它是 Debian 机器,请将/var/www 留在原处。那是许多与网络相关的软件包安装东西的地方。如果您开始四处移动,以后升级这些软件包时可能会遇到问题。

      为每个软件创建一个用户也是一种品味……我假设这些服务用户没有登录,所以即使设置一个 $HOME 也没有真正的目的。我什至会将它们设置为nologin 作为安全手段,如果这些软件可以从其他机器访问并且您想避免有人损害这些用户。

      【讨论】:

      • 我正在为服务器上安装的每个主要软件创建一个用户,因此不会只有一个。所以,在这一点上,我确定我应该把网站放在 www 而我不应该把代码放在家里,但是我有一个问题,我应该把它放在哪里?!
      • @JamesWillson,我添加了一些关于您添加的信息的注释。
      • 感谢您的额外 cmets,我很乐意为您提供答案,但我仍然不确定我的配置应该放在哪里。
      【解决方案3】:

      系统范围的配置文件绝不应位于用户的主目录中。太容易破坏,或错误修改,不当更改权限。

      /etc 在您管理多个系统时会出现问题。最佳实践:将副本保存在另一个目录中,并酌情通过 scp 推送到所有适当的系统。

      如果您有不受系统包管理器管理的包,例如从源代码安装。如果您正在运行多个版本的软件,那就更难了。

      随着系统数量和类型以及软件包和版本数量的增加,管理变得更加复杂。对于一台用户很少的机器,在 /etc 中进行配置就可以了。

      举个反例:考虑是否自定义 foo 安装。假设这是您的发行版提供的一个包,但您需要一个稍微不同的版本。

      在默认位置安装配置文件可能会导致它在下次系统升级时被破坏。 (可能与您在 /usr/bin 中的修改版本一起)

      一种常见的做法是将您添加/修改的内容与系统文件树完全分开。 当我是一名练习系统管理员时,我将所有特殊的东西都放在 /opt 中。

      /opt
      /opt/bin
      /opt/sbin
      /opt/usr/bin
      /opt/usr/sbin
      /opt/man
      /opt/etc
      

      这可以防止系统影响文件,但并不总是清楚哪些文件属于哪个包。

      具有许多可执行文件和手册页的包可能有自己的目录。 Netpbm 和 ImageMagic、gnu utils、perl(模块)就是很好的例子。这为目录树添加了一个级别。

      /opt/misc/bin #Contained anything that was one program, one man page
      /opt/netpbm_2.1/bin
      /opt/imagemagick_3.2/...
      /opt/gnu_1.1/...
      

      连同所有其他目录。例如全套 /opt/{package-version}/{bin|sbin|man|etc|var}

      This is especially true for packages where you need to keep multiple versions.  e.g.
      
      /opt/perl4.023...
      /opt/perl5.8...
      

      为大型包维护单独的树使切换变得容易——快速退出错误的更改。在大多数情况下,您将在用户的默认路径中保留符号链接以指向实际的二进制文件。例如。 /usr/bin/perl -> /opt/perl5.8/bin/perl.这里的好做法是留下特定版本的链接。例如/usr/bin/perl4 -> /opt/perl4.023/bin/perl

      在某些地方,您需要处理多种架构。 (我在一个地方有 11 个 unix 变体......)这可以为树添加另一个级别:

      /opt/hpux/...
      /opt/irix/...
      /opt/sysv/...
      /opt/solaris/...
      

      通常我只在 NFS 文件共享上保持这种方式,并且在各个机器上制作本地副本。

      复杂层次结构的优点是易于维护。如果 /opt/apache 包含所有二进制文件、手册页和配置文件,那么如果您决定更改为 lighttpd,那么您最终不会将 lighttpd 与 apache 的配置文件混淆。 (两者都称为httpd.conf)

      这也意味着当您尝试一个包裹并将其移除时,您不会到处乱扔垃圾。

      通常您不希望应用程序的数据驻留在其 /opt/application 树中。

      有缺点:

      • 如果配置文件和 var 可以从 /opt 中分离出来,那么 /opt 可以只读,但升级除外。这可以简化备份。

      • 这样做的一个副作用是可执行路径维护问题。保留系统范围的点文件(.cshrc、.tcshrc、.bashrc),这些文件会进行必要的路径更改,以便您的大部分用户不知道更改。这些文件来源于它们的默认点文件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-12
        • 2011-03-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-04
        相关资源
        最近更新 更多