我正在创建一个新的应用程序。目前,我的所有服务器代码、配置、日志和数据文件都位于不遵循任何标准的目录中。看着 维基百科关于文件系统层次结构标准的文章我想出了这个新的安排:
/opt/stevedore/ Server Code
/etc/stevedore/steve_site_config.pl Server Configuration
/var/log/stevedore/ Server Logs
/srv/stevedore/ Server Site Data (Document tree)
使用过阿帕奇如果数据文件位于/var/www/
模式中,则似乎表明数据文件应位于此处:
/var/stevedore/ Server Site Data (Document tree)
此外,用户还可以查看位于以下目录中的文档的本地副本进行编辑:
~/MyStevedore/ User - Editable files
~/MyStevedore/CheckOut/ User - Files to CheckOut
~/MyStevedore/CheckInToPublish/ User - Files to CheckIn To Publish
- 哪个对于默认值更好?为什么:
/srv/stevedore/
vs/var/stevedore/
? ~/MyStevedore/
对于标准用户特定目录怎么样?
答案1
如果您计划包含在发行版中,请使用标准存储桶(bin、sbin 等)并避免
/opt
*。如果我的主目录中有强制文件夹,我真的会很生气。我刚刚把那些东西清理干净了! ;-) 您确定不想使用吗
/srv/stevedore/users/(user)
?这是一个文档服务器,对吧?
其他理由:
网络数据也可以放入/usr/share/stevedore/web
。系统管理员可能有自定义的 Apache 设置,您最不想看到的就是/var/www/htdocs/appname
.相反,只需确保它们可用(并且share
非常适合该目的),以便管理员可以Alias
在 Apache 中创建一个并将 Web 应用程序链接到正确的网站中。
您可以选择/var/stevedore
、 或/srv/storedore
,只要可配置就可以。您可以预期 Debian 用户会喜欢/var/*
,SUSE 用户也会喜欢/srv/*
。如果您选择该路线,请确保它可供打包商配置。
这同样适用于安装根目录。这可以是/usr
、、/usr/local
或管理员或打包者想要的其他内容,或者它必须是可配置的。
用于/var/log/stevedore
日志非常有意义。
包装商希望您的包裹与其他包裹相匹配。打包程序还确保您的应用程序链接到其特定版本的库,因此您也不必发布这些库。
[*] 当您将软件放入 时/opt
,我希望整个系统都在那里。例如,
/opt/stevedore/bin/
/opt/stevedore/doc/
/opt/stevedore/etc/
/opt/stevedore/lib/
/opt/stevedore/share/
/opt/stevedore/sbin/
这通常用于第三方安装程序或商业游戏。这些包通常仅以二进制格式提供,并附带所有所需的库。甚至配置文件也在该文件夹中提供。
答案2
最终,如果您计划让人们将其打包到他们的发行版中,那么您需要做的是为每个东西建立一个编译时或配置位置。例如,使用 autoconf/automake/configure 设置 --prefix、--bindir、--datadir 等宏。
一般来说,我认为大多数发行版不使用 /opt/ 来打包可执行文件(这些文件将根据需要进入 /usr/bin 或 /usr/sbin )。似乎用户应该定期使用 ~/MyStevedore/ 中的文件,因此不将其创建为 ~/.MyStevedore/ 是可以原谅的,但某些发行版可能使用需要 ~/MyDocuments/ 中的所有内容的文件管理器MyStevedore/ 或 ~/Desktop/MyStevedore/
答案3
/srv/stevedore/ 和 /var/stevedore/ 之间确实没有太大区别。它是什么样的数据?如果其数据文件通过网络服务器发送,/var/www 可能会更好。在这一点上,这三者之间主要是个人偏好。如果数据是程序的状态,那么 /var/lib/stevedore 就更好了;就像数据库将数据文件保存在那里一样。
至于用户目录,用户实际上是否获得了本地unix帐户?如果是这样,〜就可以了。如果不是,那么这不是一个好主意。有人很容易认为这些用户不再存在,因此可以删除他们的主目录。更好的地方是 /var/lib/stevedore/username。