我正在这个网站上搜索我的问题的好答案,我能找到的最好的答案是这. (我猜应该将我的配置放在 中/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 帐户下)。
问题:
- 基本配置放在哪里?(
/etc/tunnel/config
现在 - 指定端口号,但现在它也保存用户/单位凭证/设置) - 在哪里放置基本运行时配置数据(例如用户名、凭据、密码、密钥、设备 ID - 所有这些都可以通过自定义 TCP 协议远程更改)。(目前
/etc/tunnel/config.tmp
是在添加用户等超时后创建的,/etc/tunnel/config
->/etc/tunnel/config.bak
和/etc/tunnel/config.tmp
->/etc/tunnel/config
) - 放置位置大持久读写数据?(这是需要做的 - 所有单位的所有数据都放在一个大文件中,但没有 dBase,定制的虚拟商店-
/home/firda/whatever
?/srv/something
?)
我知道我可以将所有文件放在我的主目录中(这是我自己的服务器,可能不会分发给任何其他人,谁知道呢),但我想知道最佳实践建议正确地做这件事(不要跨越管理员的习惯,如磁盘分区和配额——我想知道它通常是怎么做的,如何做,哪些文件夹适合某些备份系统)。 谢谢。
PS:这不是 Web 服务器(到目前为止),但我猜答案可能类似。这个问题可能与我链接的问题重复,但我对答案并不满意,因此,我指定了自己的应用程序和需求(尤其是分区、配额和备份的问题)。
反馈:
文件系统层次标准根据两个标准分割目录:只读(/usr
、/etc
和/opt
)/boot
——所有这些都适用于可执行文件和稳定配置,不适用于数据。第二个标准是可共享(独立于平台)和不可共享(依赖于平台)。数据应放在/var
树中,但有一个例外:/srv
可用于只读和读写数据(因此非常适合需要在一个目录中同时包含两种文件类型的服务)。
现在我可能会使用它/etc
来进行基本配置(包括更改要使用的目录的参数)、/usr/local/bin
应用程序和/var/local
我的数据。(使用/srv
可能是第二种选择。)
在我们关闭这个问题之前还有什么意见吗?
答案1
试图解释这一切的文件是文件系统层次标准;又名 FHS。
但它并没有为您的问题提供简单直接的答案。似乎有 3 个选项:
- 使用
/opt/tunnel
和保存全部与该应用程序相关的文件。 - 使用打包系统并将您的应用程序打包为 Debian 包。在本例中,您需要的文档是Debian 政策手册,尤其是第 9 章,操作系统。
- 使用
/usr/local
和相关/*/local
目录。阅读 FHS
选项 1 是专有软件和企业软件最常见的选择,但它与系统其他部分的精神不太相符。就拥有一个良好的系统而言,选项 2 无疑是最好的选择,但如果您不习惯打包软件,则需要做大量工作。选项 3 是传统且历史上最常见的方法,FHS 会对您最有帮助,但您可能还想研究其他人和软件(您尊重的)如何解决同样的问题。