在哪里放置我的服务器,configuration和(大)数据? / SRV? /等等? 在/ usr / local / bin目录? /home/me/.whatever?

我正在寻找这个网站,以回答我的问题,我能find的最好的就是这个 。 (我猜想把我的configuration放在/etc ,应用程序放在/usr/local/bin ,在/home/firda/.tunnel或者在/var/srv/usr某个地方放置。

前言:

我正在用C ++编写服务器应用程序。 它应该站在其他服务器,移动应用程序和单位(小型设备,如汽车)之间。 它通常会侦听TCP端口(处理客户端=移动应用程序和服务器)和UDP端口(数据将从/到ipsec / racoon和/或打开端口 – 与设备通信,自定义协议)。 它不需要root权限(port> 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 (隧道监视程序只是分叉运行隧道,如果它死了,重新启动它)。 当我想部署它时,我将源文件复制到我的主目录/home/firda/tunnel )中,inputmake test来构build并自我testing(在非root帐户下),然后kill这两个正在运行的进程ps -fu firda知道PID),然后键入make deploy将新的可执行文件复制到/usr/local/bin并再次启动(在root帐户下)。

问题:

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

我知道我可以将所有文件放在我的主目录(这是我自己的服务器,可能不会分发给任何人,…谁知道),但想知道最佳做法的build议,做到这一点(不跨磁盘分区和配额等pipe理员习惯 – 我想知道如何通常完成,如何完成, 哪些文件夹是有利于一些备份系统 )。 谢谢。

PS:这不是一个Web服务器(到目前为止),但我猜测答案可能是类似的。 这个问题看起来可能与我所链接的问题重复,但是我对答案并不满意,所以我需要指定自己的应用程序和需求(特别是分区,配额和备份的问题)。

反馈:

文件系统层次结构标准根据两个标准拆分目录:只读( /usr/etc/opt/boot ) – 所有这些都用于可执行文件和稳定的configuration,而不是数据。 第二个标准是可共享的(平台独立的)和不可共享的(平台相关的)。 数据应该放在/var树中,添加一个例外: /srv可以用于只读和读写数据(因此对于需要在一个目录中同时存在这两种types的文件的服务来说是完美的)。

现在我可能会使用/etc进行基本configuration(包括更改目录的参数), /usr/local/bin作为应用程序, /var/local作为我的数据。 (使用/srv可能是第二个选项。)

任何意见之前,我们可以closures这个问题?

试图理解这一切的文件Filesystem Hierarchy Standard ; 又名FHS。

尽pipe如此,它并没有为你的问题提供一个简单直接的答案。 似乎有3个选项:

  1. 使用/opt/tunnel并保存与应用程序有关的所有文件。
  2. 使用包装系统并将您的应用程序打包为Debian软件包。 在这种情况下,您需要的文档是Debian政策手册 ,特别是第9章操作系统 。
  3. 使用/usr/local和相关/*/local目录。 阅读FHS

选项1对于专有软件和企业软件是最常见的,但它并不完全符合系统其他部分的精神。 scheme2无疑是最好的方法,但是如果你不习惯打包软件,那么这是一项很大的工作。 选项3是传统和历史上最常用的方法,FHS将在这里为您提供最大的帮助,但您也可能想调查其他人和软件(您尊重的其他方面)是如何解决相同的问题的。