存储网站内容的推荐目录是什么?

Pat*_*tle 33 linux unix apache-http-server filesystems

当我第一次开始为 Web 编程并想创建一个新项目时,我总是被教导在/var/www/. 然而,在我读到的很多教程中,人们倾向于在/home/username/.

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

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

slh*_*hck 53

没有“最佳”目录。虽然人们可能会争辩说这个问题是主观的,或者文件的实际位置无关紧要——他们对后者是正确的——但关于在类 Unix 系统中放置什么的标准化建议。

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

  • /var– 放置在正常操作期间更改的数据(例如日志等/var/www)的位置是 Apache 放置 Web 内容的默认目录,但它的用法根本没有标准化,只是您放置它的“通常”位置,因为人们不要经常更改默认设置。

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

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

    根据/srv协议构造数据的一种方法是通过协议,例如。ftp, rsync, www, 和cvs

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

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

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

本质上/srv/www/var/www您应该为您可能想要托管的任何 Web 项目创建子目录。然后,您可以对这些目录定义不同的权限,以允许某些用户或用户组对其进行写入。如果您一次有一个用户的项目,请使用/home.

  • `http://example.com/~username` 通常不指向 `/home/username/`,而是指向 `/home/username/public_html/`。 (3认同)
  • 使用 `/var/www` 几年后,是时候做出改变了! (2认同)

小智 12

好吧,您可以将文件放在任何地方,只要可以正确访问它们,但是如果稍后有人进来,混乱的文件系统就会令人头疼。

/srv 如果您遵循 Filesystem Hierarchy Standard,它会放在此处,这是最合乎逻辑的加分项。

如果你做多个域,你可以做/srv/domain1 /srv/domain2等等,然后在里面创建子文件夹/ftp /www /tftp /logs /etc.etc.etc

对我来说,感觉是一个非常坚固的结构,可以建立并轻松控制

但是作为管理员,您可以随心所欲地做干净或凌乱的事情。


Kar*_*son 5

好的简单快速回答。

如果系统上的 web 文件只能被 linux 系统上的一个用户访问。使用用户的主目录 ( ~/)。

如果您的系统上的 web 文件将被 linux 系统上的多个用户访问。使用/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/
  • 如果您的网站仅由系统上的一个用户访问,而不仅仅是通过浏览器访问,而是通过多种协议(ig http 和 tcp 和 ...),则: ~/your-website-directory/
  • 如果系统上的多个用户仅通过浏览器(http 协议)访问您的网站,则: /srv/http/your-website-directory/
  • 如果您的网站被系统上的多个用户访问,而不仅仅是通过浏览器,而是通过多种协议(如 http 和 ftp 以及 ...),那么: /srv/your-website-directory/

咦,为什么不是www?这是 Apache 时代的遗产。www 没有指定正在使用的协议。Debian 至今仍在使用它,而例如 Arch linux 使用 /srv/http。