Tuxfiles对Linux目录结构说了以下内容:

/var上的FHS表示以下内容:


/var包含可变数据文件。其中包括假脱机目录和文件,管理和日志记录数据以及临时和临时文件。


然后他们继续说,将日志,邮件和假脱机程序等内容放入该文件夹中。传统上,在Ubuntu Linux上进行Apache或Nginx的常规安装会将目录放置在/var上。

为什么这么频繁地将其放到/var/www/中?

从主观上来说,这是理想的去向吗?目录结构?

评论

这是一个很好的问题,我也经常问自己,并以某种方式安排它:)。

根据FHS的说法,/ var / lib / www会更适合...

当前的FHS表示Web服务器根目录应位于/ srv
之下
/ var用于不可编辑的,非配置的,由真实用户拥有的数据,这些数据可以被编辑或更改(例如,应位于可重写卷上)。 / var / lib是专门针对应在重新引导后保留并且不会被维护过程删除的数据类型的,例如,isc-dhcp-server使用/ var / lib来存储其DHCP租约记录。因此,这将是Web服务器文件的合理位置。

@Nils,为什么要lib?

#1 楼

/var/www的使用仅乍一看令人困惑。

根据FHS,Web服务器数据应转到/srv。这是主要规则。

但是,它也表示,决定/srv的结构是本地管理员的唯一责任!因此,软件包不得将任何内容放入/srv,并且默认文档根目录不得为/srv,因为(apache)软件包不知道/srv及其以下的内容。可能是具有明文密码和其他内容的Subversion存储库。因此,必须在/srv之外有一个默认值。该默认值为/var/www

/var/www主要是占位符。软件包将/usr/share用于静态HTML内容,或将/var/lib用于动态变量内容。许多人错误地认为他们应该将HTML放入/var/www中。这是一个问题,因为软件包有时也会使用它。因此,最近他们发明了用于包装的/var/www/html。希望人们不会开始使用它,因为那样的话,他们又必须创建一个新目录...依此类推。

摘要:您应该使用/srv并相应地配置Apache虚拟主机。

评论


这个答案真的很有价值。 “希望人们不会开始使用它,因为那样的话,他们又不得不发明一个新目录……等等。”表明许多管理员应该花时间阅读一些基础知识。 (就像我现在正在做的那样;)

– Toastgeraet
16年8月15日在9:09

这在Ubuntu版本中已经发生。 apache文档根目录默认为/ var / www / html,我在某处读到,更改的原因是它更安全。我不知道我该不该竞争。我可以告诉你,我实际上不会使用该路径。并将继续使用我已经使用一段时间的设置。我在/ websites中专门为虚拟主机安装了磁盘。我保持与cpanel托管类似的结构,并从/ websites / vhostname / public_html提供服务。通过这种方式,我可以使用虚拟主机来保存邮件或特定虚拟主机的任何内容。

–克里斯
16 Dec 14'在10:52



我实际上是在考虑对磁盘进行分区,然后将各个分区装入各个虚拟主机备份的虚拟主机目录中。这会给我每个虚拟主机中的/ websites / vhost / backup(我运行了几个,以后可能还会运行更多)

–克里斯
16 Dec 14'在10:56

#2 楼

实际上,它根本不是“传统”位置。传统上,在操作系统进入/usr/local之后安装的所有东西,实际上就是今天的“经典Apache路径布局”(用他们的话)。很长时间以来,它一直是/home/httpd

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

该文件的某些摘录会告诉您docroot位置种类繁多。

IIRC,在2000-2001年发行的Red Hat Linux 7.x(不是Red Hat Enterprise Linux)中出现了。出于上述原因,我认为这没有什么意义-但现实情况是,在现代时代,位置移动仍然涉及许多其他工具和技术。

br />

#3 楼

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

我还认为FHS的定义更为准确(数据不必被“不断更改”):


/ var包含可变数据文件。这包括假脱机目录和文件,管理和日志记录数据以及临时文件和临时文件。 >

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

指定它的主要目的是使用户可以找到特定服务的数据文件的位置,以便需要一棵树的只读数据,可写数据和脚本(例如cgi脚本)可以合理放置。

未指定用于命名/ srv子目录的方法,因为目前尚无关于应如何实现的共识。在/ srv下构造数据的一种方法是通过协议,例如。 ftp,rsync,www和cvs。


评论


错误,/ usr / local的全部要点是它不是由程序包管理器管理的。

–德罗伯特
2012年9月7日16:06

@derobert / usr / local被第三方软件包(发行版的repo未提供的软件包)大量使用。创建自己的软件包以将其放入其中的公司也很常见(尽管仍属于发行版未提供的软件包)。 FHS也支持此功能,请参阅pathname.com/fhs/pub/fhs-2.3.html底部的注释#27

–干粉
2012年9月7日17:41



/ srv / www也是SuSE系统(直到SLES10)上的经典路径。

–指甲
2012年9月7日在20:19

@nils等待,他们符合FHS,然后故意离开了它???叹

–干粉
2012年9月7日在21:40

@Patrick就是这样-当我意识到这一点时,我非常惊讶。可能他们想更像其他Linux变体...

–指甲
2012年9月8日19:28

#4 楼

正如其他人所说,原因主要是历史原因。 /var已用于始终更改的系统数据,例如缓存文件,日志,运行时数据(例如锁定文件),邮件服务器存储,打印机假脱机等。基本上用于所有无法放入的内容/usr(因为它包含本地数据)不是在/opt中使用的第三方程序,并且不是在/tmp中使用的可丢弃且易失的。

随着Unix / Linux的发展,它变得杂乱无章,杂乱无章地摆放着各种不同的目录。近年来,有一种趋势是将某些内容移到那里,尤其是机器提供的内容(现在,根据[文件系统层次结构标准2.3,第15页],应该将其放在/srv中,而不是/var/www中)。

几年前,/var/run发生了类似的事情-在多个发行版本的集中努力下,它从/var/run移至/run,将以前使用的/var/lock/var/run/dev/shm的功能融合在一起。

#5 楼

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

所以从我的角度来看,它们是变量。因此,它们非常适合/ var目录,并且没有问题。

评论


我不同意。我仍然没有看到HTML文件“不断变化”。对它们进行的更改是有意为之,理想情况下,应将其检查到修订控件中以进行更改跟踪。

– jonallard
2012年9月8日于20:45

对Mysql数据库的更改也是有意的,但是数据库文件位于/ var / db中。不打扰你吗?

– akond
2012年9月8日在21:03

当然可以,但是我认为在从变量到常量的连续性上,数据库的可变性要比HTML / whatever / web应用程序大,因为网页的版本比数据库少。这些页面具有相对较少的不同版本,我不会放在/ var中。但是我认为这是见解和辩论,而不是硬事实。

– jonallard
2012年9月8日在21:13

如果我向您显示两年未更改的数据库,您会怎么说?

– akond
2012年9月8日在21:26

通过此处给出的参数,主目录属于/ var。为此,/ usr也是如此,因为它会针对安全补丁程序等不断更新。/var是针对“频繁”更改的文件的,它允许安装一个针对大量小文件写入而优化的文件系统。关于数据库不属于/ var的争论并不能证明网站确实属于这种情况,这确实说明了它们不属于网站。网站阅读量大,使用/ var毫无益处,并且实际上可能会减慢日志和电子邮件等基本系统进程的速度。

–邓肯
15年8月22日在10:52

#6 楼

IIRC,在过去,我们始终将/var挂载为它自己的文件系统(单独的磁盘或磁盘片)。

正如其他人所述,这样做的原因之一是对该文件系统的大量读/写操作(日志/其他)。具有单独的磁盘/片意味着可以更好地针对此类I / O进行调整(与之相对的主要是在//usr等上阅读)。

另一个原因是天,如果您的系统在写操作期间崩溃,则很有可能您的根文件系统会损坏,使其处于难以修复的状态。因此,与/分离的需要。

文件系统和磁盘技术随着时间的推移已大大改善,因此这种情况发生的可能性要小得多。

评论


/ var作为单独的分区仍然是一个好习惯,如果由于/满而不想在日志变大时关闭计算机

–邓肯
15年8月22日在10:54

#7 楼

如果您的网站运行着多个允许FTP或其他上传的虚拟主机,即您是Web主机或类似主机,则/var是用户中立的“基本”位置进行多用户访问的不错选择。

/home可能不是最佳选择,因为如果没有思想或恶意的用户上载到/home分区限制(假设/var/home等的传统设置位于单独的分区),则其他用户外壳程序帐户可能会发生不良情况)可能会影响其他用户帐户。

当然,我认为/srv更好,但是/var在UNIX传统中存在的时间更长。

评论


分发和分发的软件包应遵守FHS。最终的“用户”(如果是服务器,则为sysadmin)可以随心所欲地放置网站。从出现/ srv以来,我一直将网站放在/ home / pub或/ home / web中。但是,如果今天我要分发Web服务器软件项目,则/ srv / www或FHS所说的都是默认的,尽管管理员可以更改它。

– Skaperen
2012年9月9日在2:22

@ultrasawblade,为什么不/ home / http?

–起搏器
15年1月22日在6:47

#8 楼

我想在此处添加的内容是,将Web“根”放入/ usr会与FHS中指示/ usr为可共享且只读的部分冲突,因为即使是同一“群集”上的Web服务器也不同可能具有包含不同配置的不同文件,这并不适合/ usr。 Web目录树下用于附件/媒体文件上传的可写位置。因此,如果您希望遵循只读的/ usr定义,则将Web树放在/ usr下会发生冲突。

#9 楼

Apache Web服务器在/ var / www /下有默认网站,但建议将其他网站放在/ srv /下。我在Ubuntu Server 14.04 LTS上注意到了这一点。其默认的apache2.conf文件包含注释块:

#<Directory /srv/>
#   Options Indexes FollowSymLinks
#   AllowOverride None
#   Require all granted
#</Directory>