为什么 Web 服务器上的根目录默认放在“/var/www”中?

为什么 Web 服务器上的根目录默认放在“/var/www”中?

Tux文件关于 Linux 目录结构,如下所述:

/var:

该目录包含系统运行时不断变化的变量数据。

跳频开启/var说如下:

/var包含变量数据文件。这包括假脱机目录和文件、管理和日志记录数据以及瞬态和临时文件。

然后他们继续说日志、邮件和假脱机程序之类的东西都放在该文件夹中。

传统上, Ubuntu Linux 上的 Apache 或 Nginx 或 Arch 的常规安装会将目录放置在/var/www/.

在我看来,它并不是放置包含文件或其他几乎永久的内容的目录的理想位置。

为什么如此频繁地投入/var

更主观地说,根据目录结构,这是理想的位置吗?

答案1

的用法/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 虚拟主机。

答案2

它实际上根本不是“传统”位置。传统上,您在操作系统之后安装的任何东西都会进入/usr/local,事实上,这就是迄今为止的“经典 Apache 路径布局”(他们的原话)。很长一段时间,都是这样/home/httpd

您所看到的是,为特定操作系统(无论是 Red Hat Linux、Mac OS X、GNU 等)配置的 Apache 将自定义该位置。 Apache 的源代码为此精心设计,事实上,如果您跟踪源文件中 ServerRoot 的值,您将看到它从该文件开始,config.layout:

该文件的一些摘录将向您展示文档根位置中有很多变化。

IIRC/var/www是随着 2000-2001 年发行的 Red Hat Linux 7.x(不是 Red Hat Enterprise Linux)进入我的生活的。出于您上面引用的所有原因,我认为这没有多大意义 - 但现实是,在现代时代,无论如何,许多其他工具和技术都涉及位置移动。

#   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

答案3

虽然我同意akond的回答,但我认为还有更重要的方面。大多数其他位置通常由系统(包管理器)管理。/var通常是不受包管理器管理的文件所在的位置(系统范围的“数据”)。

我也认为定义来自FHS更准确一点(数据不必“不断变化”):

/var 包含变量数据文件。这包括假脱机目录和文件、管理和日志记录数据以及瞬态和临时文件。


然而 [FHS](http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE16A) 也指出 www 数据应该进入 `/srv`

/srv 包含由该系统提供的站点特定数据。

指定此项的主要目的是以便用户可以找到特定服务的数据文件的位置,并且能够合理地放置需要用于只读数据、可写数据和脚本(例如 cgi 脚本)的单一树的服务。

用于命名 /srv 子目录的方法未指定,因为目前对于如何完成此操作尚未达成共识。在 /srv 下构建数据的一种方法是通过协议,例如。 ftp、rsync、www 和 cvs。

答案4

根据我的经验(我是一名网络开发人员),网站内容远不稳定。即使是 html 文件(更不用说动态生成的内容),它们也会不断发生变化(修改、遗漏等)。

所以从我的角度来看,它们是变量。因此,它们非常适合放在 /var 目录中,这没有任何问题。

相关内容