Archlinux /srv/http vs Debian /var/www

07 October 2013

原文地址

两者的联系

Debian以及一些其它较老的系统仍然使用/var/www作为web服务的默认根目录, 然而Arch却使用的是/srv/http. /var现在确实有点凌乱, 但是由于心理作用, 我每次都按如下的方式在我的笔记本/台式机上建立符号连接: sudo ln -s /srv/http/ /var/www

两者的不同

简单地说, 你的服务是从/srv得到的, 而/var放的是可变的内容.

/srv

指定/srv的主要目的是为了让用户可以找到特定服务的文件所在的位置, 因此这些需要一个单独的目录来存放只读的数据, 可写的数据以及脚本(例如cgi scripts)的服务就能够放在合理的位置. 某个特定用户感兴趣的数据应该适用于所有用户的home目录.

命名/srv子目录的方法没有具体指定, 因为对于应该如何命名现在还没有达成共识. 其中一种方法是通过协议来组织/srv目录下的数据, 例如ftp, rsync, www以及cvs. 对于大型的系统, 通过管理环境来组织/srv是很有用的, 例如/srv/physics/www, /srv/compsci/cvs等等. 这一步因服务器不同而不同. 因此, 任何程序都不能依靠一种具体的/srv的组织结构而存在, 任何数据也不能必须被存储在/srv目录下. 但是在FHS标准的系统里, /srv目录应该总是存在的, 而且也应该作为这些数据存放的默认目录.

各个发行版一定要注意, 在没有管理员权限的情况下是不能把本地文件放入这些目录里的.

/var

/var存放的是可变的数据文件. 包括spool目录和文件, 管理和日志数据, 以及临时文件.

/var的一些部分在不同的系统间是不共享的. 比方说, /var/log, /var/lock以及/var/run. 其他的部分是可以共享的, 特别是/var/mail, /var/cache/man, /var/cache/fonts以及/var/spool/news.

指定/var是为了有可能只读地挂载/usr. 如果有文件一旦到了/usr里, 在系统运行期间就是可写的(相对于安装和软件维护)了的话, 那这个文件一定要放在/var里.

如果/var不能成为独立的一部分, 那么比较好的方法是, 把根目录下的/var移到/usr里.(这有时候用来减少根目录的大小, 或者根目录的空间没剩多少时也可以这样做.) 但是, /var一定不能连接到/usr, 因为这使得分开/usr/var更加困难了, 而且很可能会导致命名冲突. 相反, 把/var连接到/usr/var.

应用通常都不会在/var的顶级目录下增加新的目录. 只有当这些目录有系统范围的应用的时候, 并且咨询了FHS的邮件列表之后才能被添加.

例如:

/var/log for logs

/var/tmp for temporary files

/var/cache for cache

/var/lock for lock files

标签:
  • Linux
comments powered by Disqus