网站是否应该根据建议的用法位于/ var /或/ usr /中?


62

根据有关Linux目录结构的指南/usr/它用于应用程序文件,并且/var/用于更改的文件(我认为这意味着“属于应用程序的文件”)。这个对吗?

如果是这种情况,那么在使用这两种方法之间我会有些挣扎。网站是一个应用程序(可以说是动态的),但在其他情况下,它只是Apache使用的文件的集合。

默认的www dir位于/var/www/,因此我们应该通过使用/var/websites/(或类似方法)来效仿,还是选择/usr/websites/它们(因为它们可能是应用程序)?

这是一个非常琐碎的问题,但这仍然困扰着我。对于我们来说,我倾向于/usr/web或类似的方式,因为我们的网站都是应用程序。

更新:

这是我们公司的网站;它不是共享的托管服务器,因此我们不必担心将它们分开/home/或类似的问题。


10
我不认为这个问题很简单。实际上,这是相当不错的。有趣。
Aron Rotteveel,2010年

Answers:


63

根据FHS的说法,- /usrshareable, read-only data您想要放置网站的地方。这是您应该放置代码的位置(例如Fedora为Wordpress编写了代码)。另请参阅Fedora 的Web资产包装指南。

/var是“可变数据文件。这包括假脱机目录和文件,管理和日志记录数据以及临时和临时文件。” -更好,但仍然不太正确-但是会使用很多系统/var/www,因此即使您放错了位置,您也可以在公司中保持良好状态。

/srv用于“此系统提供的特定于站点的数据”。-看起来很不错,但是比少得多/var/www

放置站点文件的另一个常见位置是/home-通过创建一个名为website等的特殊用户,然后将文件放置在该用户的homedir中(例如/home/website)。


4
嗯,我的作品使用了/srv-就像我以前从未见过的那样,我认为它是由他们创造的。是Redhat / CentOS的东西吗?
尼克·博尔顿

12
默认值仅设置为,/var/www因为不允许分发接触/srv。供系统管理员配置。因此,这就是为什么它“不那么常​​见”并且正确的原因。
迈克尔·汉普顿

28

看一下文件系统层次结构标准Wikipedia)。我自己使用/ srv / web / $ domain / {htdocs,logs,cgi-bin,...}。


3
我也这样做,但是我总是使用服务名“ httpd”代替“ www”。因此,我有/ srv / httpd / $ domain ...或/ srv / smbd / sharename ...这样,可以更轻松地查看哪个服务正在提供文件。例如,在某些系统上,我们有/ srv / nginx / $ domain
Raffael Luthiger 2014年

9

网站应位于用户的主目录中。它们是用户数据,应由每个站点一个用户隔离,动态内容应再次以单独的用户身份运行,并具有相应权限才能读取和修改动态内容的文件。

更新:

仅仅因为它不是共享的托管服务器,并不意味着您不应该从事良好的安全实践,也不应将独立角色划分为自己的安全区域。


7

权威指南是Filesystem Hierarchy Standard,它说的/srv是正确的位置。


2
我不是那样阅读的-至少,我认为在这一点上模棱两可。大多数网站不是简单地提供服务by this system,而是由整个系统集群提供服务;从开头开始的两句话This setup will differ from host to host.表明,这不是跨许多服务器共享文件的地方。不过,这是一个相当可能的地方-当然/usr/var
James波利

1
我认为FHS根本不是确定的。回复:(来自Wikipedia):大多数Linux发行版都遵循FHS,并声明其自己的政策来维护FHS遵从性。但是,绝大多数发行版(截至2009年),包括由Free Standards Group成员开发的发行版,都没有完全遵循建议的标准。
Michael Graff

6
关于标准,这是一件好事-有很多选择!:)
詹姆斯·波利

3

它们在磁盘上的位置无关紧要。这是您想要它们的地方。

我从所有机器上的/ www到它们实际居住的地方都有一个符号链接,因此我不必怀疑机器之间的情况。一些较旧的计算机将/ u0和/ u1用于用户磁盘,并且我将网络内容放置在其中。有些直接将/ home挂载,因此可以将它们放到那里,但是/ www始终指向正确的位置。

我也没有在/ usr或/ var中放置任何配置。它在/ local中(您猜到了,它通常是/ u0或/ u1上的符号链接)。这使备份变得容易。我只是备份用户磁盘。

当然,对于我选择的操作系统,我有一个主发行站点,即NetBSD。我在这个主机上(确实是一个xen实例)创建了我想要的系统,并在/ rusr周围进行了rsync。使我的生活变得轻松。


6
如果您是一个人操作的团队,或者甚至是一个紧密合作,彼此熟悉的小团队的小团队,这很好-学习“正确”的方法可能需要比仅仅做更长的时间它。如果您的业务量很大并且经常需要新人加入,则必须使他们尽快采用这样的布局会花费很多时间-坚持(或至少接近)FHS是节省与您带入团队的每个新人在一起的时间。
詹姆斯·波利

5
当您使用8个不同的OS时,内部标准比每个OS都更容易学习。
Michael Graff

1
@James Polley告诉新员工“我们将东西放入/path/we/chose” 需要多少时间?
ceejayoz

@ceejayoz如果您拥有超过两种类别的“东西”,则告诉他们“我们遵循FHS”要简单得多,即使这可能需要某些类别的“东西”的更多详细信息。
三胞胎2015年

3

Apache Web服务器在/ var / www /下有默认网站,但建议将其他网站放在/ srv /下。

我在Ubuntu Server 14.04 LTS上注意到了这一点。它的默认apache2.conf文件包含注释块:

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

2

据我说,您永远也不应在公共系统区域上放置任何Internet服务。

您的Internet服务(Apache / Tomcat / SSH等)是一扇前门,然后,如果将这些服务放在“系统”区域中,则可能容易受到某些攻击。

与将您的差异服务放入另一个独立分区之类的安全沙箱区域中相比,这具有更多的优势。

这是您可以使用的结构示例:

/ --> Root System --> On SDA1 --> Root and System security operator access only
 |
 | -->/usr /etc /var etc.

/SRV --> Web Root --> On SDB1 --> Web users access with minimal rights access.
 |
 |-->/srv/bin & /srv/dta
      |
      |-->/srv/bin/apache (or any other APPLICATION Binaries)
      |-->/srv/dta/SQL (or any other APPLICATION Datas like a 
                        database or web PHP files etc.)

1
您可以在“公共系统区域”上进行扩展吗?这不是我以前听过的术语,也不确定您的意思。/srv/bin似乎违反了FHS,FHS声明该/srv数据仅供参考,而非二进制文件
James Polley 2010年

通用系统区域是指操作系统的一部分,用于存储所有系统组件,例如帐户,密码,管理员二进制文件和库。我知道我的安装不完全遵守FHS,但是我可以将操作系统完全分为两部分。1°/-相当完善的系统(更新和管理工具安装除外)2°/-应用程序,数据和美国家园。这样,如果您的系统或数据出现问题,您将不会丢失所有数据。
I I

我懂了。这是有道理的-这就是为什么大多数台式机都放在/home单独的分区上的原因-您可以删除非/home分区上的所有内容,而不必担心丢失用户数据。+1用于隔离数据。
詹姆斯·波利
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.