我正在寻找这个网站,以回答我的问题,我能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帐户下)。
问题:
/etc/tunnel/config now – 指定端口号,但现在它也保存用户/单元凭证/设置) /etc/tunnel/config.tmp是在添加例如用户之后的一些超时之后创build的, /etc/tunnel/config – > /etc/tunnel/config.bak和/etc/tunnel/config.tmp – > /etc/tunnel/config ) /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个选项:
/opt/tunnel并保存与应用程序有关的所有文件。 /usr/local和相关/*/local目录。 阅读FHS 选项1对于专有软件和企业软件是最常见的,但它并不完全符合系统其他部分的精神。 scheme2无疑是最好的方法,但是如果你不习惯打包软件,那么这是一项很大的工作。 选项3是传统和历史上最常用的方法,FHS将在这里为您提供最大的帮助,但您也可能想调查其他人和软件(您尊重的其他方面)是如何解决相同的问题的。