我一直这样配置 Apache:
/etc/httpd/conf/httpd.conf(主要 Apache 配置)
<Directory />
Options None
AllowOverride None
Order deny,allow
Deny from all
</Directory>
<Directory "/var/www/html">
Options None
AllowOverride None
Order deny,allow
Deny from all
</Directory>
虚拟主机配置
<VirtualHost *:80>
ServerName xxxxx.co.uk
ServerAlias xxxxx.co.uk xxxxx
DocumentRoot /var/www/html/xxxxx.co.uk
ErrorLog /var/www/log/xxxxx.co.uk
<Directory "/var/www/html/xxxxx.co.uk">
AllowOverride None
Options -Indexes -FollowSymLinks
Order Allow,Deny
Allow from all
</Directory>
</VirtualHost>
我注意到有些人似乎为网页内容和日志创建了一个特定的文件夹,即
/srv/html/xxxxx.co.uk
/srv/log/xxxxx.co.uk
我想知道是否有人可以解释一下为什么会这样?这样做是否更安全?还有其他原因将 Web 内容和日志移出 /var/..... 路径吗?
提前致谢 :-)
答案1
除了 Mike 关于 FHS 的观点外,我还看到了来自 Ubuntu 论坛的讨论:
http://ubuntuforums.org/showthread.php?t=1425726
最好的评论是:
/var 是一个较旧的约定。它用于存储随时间变化的数据(“可变数据”),例如缓存、假脱机、日志、各种内务管理和管理文件,而“用户数据”则位于主目录中……但在某些时候,可能由于没有其他合适的地方,/var 也成为守护进程为其他系统和用户(例如数据库和网页)提供“数据”的地方。当然,这些文件也会“随时间变化”,但我同意网站和系统日志之间存在差异。
Debian 仍然默认将数据放在 /var 中,但可能大多数“旧”Linux 都是这样(例如 Redhat),并且大多数文档也假设 /var 用来存放这类东西,虽然我在一些(不太传统的)应用程序的管理指南中看到过 /srv 作为数据目录的例子。
顺便说一下,CentOS 6 有一个 /srv 目录,但它是空的,而 Apache 则默认将 /var/www 作为根目录。有人可能会认为,/srv/logs
在您的示例中,应该按照惯例正确放置/var
,因为日志不是您的机器提供的东西。
答案2
我的理解是,这/var/www
是长期以来的常见做法,也是/srv
文件系统标准化工作的一部分。/var/www
这是过去的事实上的惯例,我们正处于过渡时期,旧惯例正在逐步被新惯例取代。
对于许多发行版来说,转换的第一步通常是创建/srv
符号链接并填充它,例如/srv/www
-> /var/www
。在未来的某个时候,我希望看到发行版逆转这一情况,此时文件将存在于 -> 之下/srv
,符号链接将是/var/www
-> /srv/www
。在未来,/var/www
可能会完全消失。
答案3
您可以查看以下内容
http://www.pathname.com/fhs/pub/fhs-2.3.html#SRVDATAFORSERVICESPROVIDEDBYSYSTEM
我也使用 /srv。不过,这更多的是我这样做的方式,并且更喜欢这样做,而不是为什么这样做。
答案4
当您处理非常大的应用程序(通常在集群内提供数据)时,您可以为 /srv 和 /var 使用不同的后端(RAID,NAS......),同时还有两个额外的好处:
/srv(真实数据)和 /var(日志、临时文件……)的备份、复制和快照策略可能不同。
可能对 /var 中的数据的访问是连续的,而对 /srv 的访问则更倾向于随机。您可以将 /srv 放在更快的后端(具有大缓存或 SSD 的 NAS)中,将 /var 放在更便宜的本地磁盘中。
可以将真实数据混合在 /var 中,但这种方式更加清晰且更易于管理。