建议使用什么目录存储网站内容?


21

当我第一次开始为Web编程时,我想创建一个新项目,总是被教导要在中创建目录/var/www/。但是,在我读过的许多教程中,人们倾向于在中创建目录/home/username/

我不喜欢把它放进去的想法/home/username/

是否将其放置在文件系统的某些区域中,如果没有正确的位置,则有什么优点/缺点?


对于大多数开发,这是首选项(“最佳”表示,也许应该将其更改为最安全等)。如果您也从那里提供服务,那么您可能希望有一些隐秘的地方,以使您的个人文件和网络共享内容之间保持一定距离。但是有上百万种配置。我坚持/var/www并通常将其放在另一个驱动器上(只是偏爱)。
nerdwaller 2013年

没有“最佳”目录。这完全是您的看法,因为文件的物理位置无关紧要。
Ramhound

Answers:


36

没有“最佳”目录。虽然人们可能会认为这个问题是主观的,或者是文件的实际位置并不重要,他们说得对后者,也在哪里放什么在类Unix系统标准化的建议。

文件系统层次标准定义了这一点,你提供以下功能:

  • /var–用于放置在正常操作期间会发生变化的数据(例如日志等/var/www)的位置是放置Apache的Web内容的默认目录,但是它的使用完全没有标准化,而仅仅是您放置它的“常用”位置,因为人们不要经常更改默认设置。

  • /srv–该目录应包含系统提供的数据。通常这是您想要的地方。FHS解释:

    指定此文件的主要目的是,使用户可以找到特定服务的数据文件的位置,并可以合理地放置需要一棵树用于只读数据,可写数据和脚本(例如cgi脚本)的服务。仅特定用户感兴趣的数据应放在该用户的主目录中。(...)

    一种用于构造数据的方法/srv是通过协议,例如。ftprsyncwww,和cvs

    因此,只需创建一个/srv/www目录并使用它。您可以为可能要与计算机一起使用的每个虚拟主机创建子文件夹。

  • /home包含实际上只应属于一个用户的文件。例如,Apache允许userdirs,因此您可以通过访问用户的Web文件http://example.com/~username,这些文件是从public_html用户家目录中提供的。

    如果您使用多人共享的服务器,并且希望允许所有人托管自己的脚本,那么他们应该去那里。请记住,使目录只能由它们所属的用户写入。

从本质上讲/srv/www/var/www目录应该是您可能希望托管的任何Web项目的子目录。然后,您可以在这些目录上定义不同的权限,以允许某些用户或用户组向其写入。如果您一次有一个用户的项目,请使用/home


3
http://example.com/~username通常不指向/home/username/,而是要/home/username/public_html/
choroba

是的,谢谢,为清楚起见,应该添加该内容。做完了
slhck

经过几年的使用,/var/www现在是时候改变了!
sitilge

而且,www听起来对我来说更像是一个子域。
sitilge

只是要添加...对于单个站点服务实例和默认的Apache位置,使用/ var / www是一种常见做法,而对于转售服务器或多站点,使用/ home / usr /是/通常是一种做法从用户==客户端的概念得出的托管。两者都是常见的做法,而shlck的答案是更好地利用文件系统的预期目的。
Jools,

4

好了,只要可以正确访问文件,就可以将文件放置在任何地方,但是如果有人稍后进入,混乱的文件系统将是一个令人头疼的问题。

/srv 最合乎逻辑的是,如果您遵循文件系统层次结构标准,它将在此处显示。

如果您有多个域,则可以进行其他操作,/srv/domain1 /srv/domain2等等,然后在其中子文件夹/ftp /www /tftp /logs /etc.etc.etc

对我来说,感觉很牢固,可以轻松控制

但是,作为管理员,您可以按照自己的意愿进行整洁或凌乱的处理。


1

好的,简单快速的答案。

如果您的系统上的Web文件仅由linux系统上的一个用户访问。使用用户的主目录(~/)。

如果您的系统上的Web文件将被Linux系统上的MULTIPLE用户访问。使用/srv/

这正是http://refspecs.linuxfoundation.org/FHS_2.3/fhs-2.3.html#SRVDATAFORSERVICESPROVIDEDBYSYSTEM状态。

这是报价:

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

指定它的主要目的是使用户可以找到特定服务的数据文件的位置,并可以合理地放置需要单个树的只读数据,可写数据和脚本(例如cgi脚本)的服务。仅特定用户感兴趣的数据应放在该用户的主目录中。

奖励:www?FTP?通过协议进行组织???

http://refspecs.linuxfoundation.org/FHS_2.3/fhs-2.3.html#SRVDATAFORSERVICESPROVIDEDBYSYSTEM中所述

  • 如果您的网站仅由系统上的一个用户访问,并且只能通过浏览器(http协议)访问,则:~/http/your-website-directory/或(https协议),然后:~/https/your-website-directory/
  • 如果您的网站仅由系统上的一个用户访问,而不仅是通过浏览器访问,而是由多种协议(例如,ig http AND tcp AND ...)访问,则: ~/your-website-directory/
  • 如果系统上有多个用户访问您的网站,并且仅通过浏览器(http协议)访问您的网站,则:/srv/http/your-website-directory/或(https协议),然后:/srv/https/your-website-directory/
  • 如果系统上有多个用户而不是仅通过浏览器访问您的网站,而是通过多个协议(例如http和ftp AND ...)访问,则: /srv/your-website-directory/

嗯,为什么不www?这是Apache时代的遗产。www未指定使用哪种协议。直到今天,Debian仍使用此功能,例如Arch Linux使用/ srv / http。


0

Apache Web服务器具有默认网站,/var/www/但建议将其他网站置于/srv/

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

#<Directory /srv/>
#   Options Indexes FollowSymLinks
#   AllowOverride None
#   Require all granted
#</Directory>
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.