jon*_*ard 102 directory-structure
Tuxfiles关于 Linux 目录结构的说明如下:
/var:该目录包含在系统运行时不断变化的可变数据。
FHS on/var说以下内容:
/var包含可变数据文件。这包括假脱机目录和文件、管理和日志数据以及瞬态和临时文件。
然后他们继续说日志、邮件和假脱机程序等内容都放在该文件夹中。
传统上,在 Ubuntu Linux 上安装 Apache 或 Nginx 或 Arch 会将目录放在/var/www/.
在我看来,它不是放置包含文件或其他内容的目录的理想位置,这些目录应该是几乎永久的。
为什么这么频繁的投入/var?
更主观地,根据目录结构,这是理想的去处吗?
小智 52
的用法/var/www只是乍一看令人困惑。
根据 FHS,Web 服务器数据应转到/srv. 这是主要规则。
但是,它也说决定 的结构/srv是本地管理员的唯一责任!因此包不能放入任何东西/srv,默认文件根不能是/srv,因为(apache)包不知道/srv它里面和下面是什么。也许是一个带有明文密码和其他东西的颠覆存储库。所以必须有一个默认值之外的/srv. 那个默认变成/var/www.
/var/www主要是占位符。包/usr/share用于静态 HTML 内容或/var/lib动态变量内容。许多人错误地认为他们应该将 HTML 放入/var/www. 这是一个问题,因为包偶尔也会使用它。所以最近他们发明/var/www/html了包装。希望人们不会开始使用它,因为他们必须再次发明一个新目录......等等。
总结:您应该相应地使用/srv和配置您的 Apache 虚拟主机。
ckh*_*han 39
它实际上根本不是“传统”的位置。传统上,您在操作系统进入后安装的任何东西/usr/local,事实上这就是今天的“经典 Apache 路径布局”(他们的话)。很长一段时间,它是/home/httpd。
您看到的是,已为特定操作系统(无论是 Red Hat Linux、Mac OS X、GNU 等)配置的 Apache 将自定义位置。Apache 的源代码为此设计得很好,事实上,如果您跟踪源文件中 ServerRoot 的值,您会看到它从这个文件开始config.layout:
该文件的一些摘录将告诉您 docroot 位置有很多变化。
IIRC,/var/www随着 Red Hat Linux 7.x(不是 Red Hat Enterprise Linux)的 2000-2001 版本进入我的生活。由于您在上面引用的所有原因,我认为这没有多大意义-但现实是,在现代时代,涉及位置移动的其他工具和技术太多了。
# Classical Apache path layout.
<Layout Apache>
prefix: /usr/local/apache2
datadir: ${prefix}
# GNU standards conforming path layout.
# See FSF's GNU project `make-stds' document for details.
<Layout GNU>
exec_prefix: ${prefix}
datadir: ${prefix}/share+
# Mac OS X Server (Rhapsody)
<Layout Mac OS X Server>
prefix: /Local/Library/WebServer
datadir: ${prefix}
# Darwin/Mac OS Layout
<Layout Darwin>
prefix: /usr
datadir: /Library/WebServer
# Red Hat Linux 7.x layout
<Layout RedHat>
prefix: /usr
datadir: /var/www
# SuSE 6.x layout
<Layout SuSE>
prefix: /usr
datadir: /usr/local/httpd
# BSD/OS layout
<Layout BSDI>
prefix: /var/www
datadir: ${prefix}
# Solaris 8 Layout
<Layout Solaris>
prefix: /usr/apache
datadir: /var/apache
Run Code Online (Sandbox Code Playgroud)
phe*_*mer 27
虽然我同意 akond 的回答,但我认为它还有一个更重要的方面。大多数其他位置(例如/usr/local)通常由系统(包管理器)管理。/var通常是不受包管理器管理的文件所在的位置(系统范围的“数据”)。
我还认为FHS的定义更准确一些(数据不必“不断变化”):
/var 包含可变数据文件。这包括假脱机目录和文件、管理和日志数据以及瞬态和临时文件。
然而,FHS也指出 www 数据应该进入/srv
/srv 包含此系统提供的特定于站点的数据。
指定这个的主要目的是为了让用户可以找到特定服务的数据文件的位置,并且可以合理地放置需要单个树的只读数据、可写数据和脚本(例如 cgi 脚本)的服务。
用于命名 /srv 的子目录的方法未指定,因为目前尚未就如何完成此操作达成共识。在 /srv 下构造数据的一种方法是通过协议,例如。ftp、rsync、www 和 cvs。
min*_*ive 13
正如其他人所说,原因主要是历史原因。/var一直用于系统数据的变化,例如缓存文件、日志、运行时数据(例如锁定文件)、邮件服务器存储、打印机假脱机等。基本上用于所有不能放入的东西/usr(因为它包含本地数据),不是进入的第三方程序/opt,并且在进入时不可丢弃和易失/tmp。
随着 Unix/Linux 的发展,它变成了杂乱无章的地方,各种不同的目录放在一起。近年来,有一种趋势是将某些东西移出那里,尤其是机器提供的内容(现在按照 [文件系统层次结构标准 2.3,第 15 页] 应该放入/srv,而不是放入/var/www)。
类似的事情也发生在/var/run几年前-几个分布的集中努力,很是感动,从/var/run到/run其融合在一起先前使用的功能/var/lock,/var/run和/dev/shm。
根据我的经验(我是一名 Web 开发人员),网站内容远非稳定。即使是 html 文件(更不用说动态生成的内容),它们也会不断变化(修改、遗漏等)。
所以在我看来,它们是变量。因此,它们非常适合在 /var 目录中,并且没有任何问题。
IIRC,在过去,我们总是将其安装/var为自己的文件系统(单独的磁盘或磁盘片)。
正如其他人所说,造成这种情况的原因之一是对该文件系统(日志/等)的大量读/写。拥有一个单独的磁盘/片意味着它可以更好地调整这种类型的I / O的(相对于主要是阅读/,/usr等...)。
另一个原因是,在那些日子里,如果您的系统在写入操作期间崩溃,那么您的根文件系统很有可能被损坏,使其处于难以修复的状态。因此需要从/.
随着时间的推移,文件系统和磁盘技术有了很大的改进,因此这种情况发生的可能性要小得多。