我的服务器、配置和(大)数据应该放在哪里?/srv?/etc?/usr/local/bin?/home/me/.whatever?

我的服务器、配置和(大)数据应该放在哪里?/srv?/etc?/usr/local/bin?/home/me/.whatever?

我正在这个网站上搜索我的问题的好答案,我能找到的最好的答案是. (我猜应该将我的配置放在 中/etc,将应用程序放在 中/usr/local/bin,将数据放在或或/home/firda/.tunnel中的某个地方。)/var/srv/usr

前言:

我正在用 C++ 编写服务器应用程序。它应该位于其他服务器、移动应用程序和单元(例如汽车中的小型设备)之间。它通常会监听 TCP 端口(以处理客户端 = 移动应用程序和服务器)和 UDP 端口(数据从/到 ipsec/racoon 和/或开放端口 - 与设备通信,自定义协议)。它不需要 root 的权限(端口 > 1000,例如 11235),因此,我决定设置 SUID 位并将所有权分配给我的帐户(即使我以 root 身份启动它,也可以在我的帐户下运行)。这是我现在部署它的方式(来自 MAKEFILE)

deploy      := /usr/local/bin
user        := firda
name        := tunnel
watchdog    := tunnel-watchdog
names       := $(name) $(watchdog)

deploy:
    cp $(names) $(deploy)/
    chown $(user):$(user) $(patsubst %,$(deploy)/%,$(names))
    chmod a-rwx,u+xs $(patsubst %,$(deploy)/%,$(names))
    $(deploy)/$(watchdog)

并添加/usr/local/bin/tunnel-watchdog/etc/rc.local(tunnel-watchdog 只需分叉即可运行隧道,如果隧道死机,则重新启动它)。当我想要部署它时,我将源代码复制到我的主目录(/home/firda/tunnel),键入make test以构建并自我测试它(在非 root 帐户下),然后键入kill这两个正在运行的进程(在ps -fu firda知道 PID 之后)并键入make deploy以复制新的可执行文件/usr/local/bin并重新启动它(在 root 帐户下)。

问题:

  1. 基本配置放在哪里?(/etc/tunnel/config现在 - 指定端口号,但现在它也保存用户/单位凭证/设置)
  2. 在哪里放置基本运行时配置数据(例如用户名、凭据、密码、密钥、设备 ID - 所有这些都可以通过自定义 TCP 协议远程更改)。(目前/etc/tunnel/config.tmp是在添加用户等超时后创建的,/etc/tunnel/config->/etc/tunnel/config.bak/etc/tunnel/config.tmp-> /etc/tunnel/config
  3. 放置位置大持久读写数据?(这是需要做的 - 所有单位的所有数据都放在一个大文件中,但没有 dBase,定制的虚拟商店- /home/firda/whatever/srv/something?)

我知道我可以将所有文件放在我的主目录中(这是我自己的服务器,可能不会分发给任何其他人,谁知道呢),但我想知道最佳实践建议正确地做这件事(不要跨越管理员的习惯,如磁盘分区和配额——我想知道它通常是怎么做的,如何做,哪些文件夹适合某些备份系统)。 谢谢。

PS:这不是 Web 服务器(到目前为止),但我猜答案可能类似。这个问题可能与我链接的问题重复,但我对答案并不满意,因此,我指定了自己的应用程序和需求(尤其是分区、配额和备份的问题)。

反馈:

文件系统层次标准根据两个标准分割目录:只读(/usr/etc/opt/boot——所有这些都适用于可执行文件和稳定配置,不适用于数据。第二个标准是可共享(独立于平台)和不可共享(依赖于平台)。数据应放在/var树中,但有一个例外:/srv可用于只读和读写数据(因此非常适合需要在一个目录中同时包含两种文件类型的服务)。

现在我可能会使用它/etc来进行基本配置(包括更改要使用的目录的参数)、/usr/local/bin应用程序和/var/local我的数据。(使用/srv可能是第二种选择。)

在我们关闭这个问题之前还有什么意见吗?

答案1

试图解释这一切的文件是文件系统层次标准;又名 FHS。

但它并没有为您的问题提供简单直接的答案。似乎有 3 个选项:

  1. 使用/opt/tunnel和保存全部与该应用程序相关的文件。
  2. 使用打包系统并将您的应用程序打包为 Debian 包。在本例中,您需要的文档是Debian 政策手册,尤其是第 9 章,操作系统
  3. 使用/usr/local和相关/*/local目录。阅读 FHS

选项 1 是专有软件和企业软件最常见的选择,但它与系统其他部分的精神不太相符。就拥有一个良好的系统而言,选项 2 无疑是最好的选择,但如果您不习惯打包软件,则需要做大量工作。选项 3 是传统且历史上最常见的方法,FHS 会对您最有帮助,但您可能还想研究其他人和软件(您尊重的)如何解决同样的问题。

相关内容