我正在build立一个RHELnetworking服务器,它将托pipe几个域名的静态和dynamic内容。 多个用户将通过SSH和SFTP更新文件。
每个域名的文件应放在哪里? 在我的默认系统中,有一个/var/www/ ,但是不知道如何定位多个域。
看文件系统层次结构标准( http://www.pathname.com/fhs/pub/fhs-2.3.html ),似乎最好的select是:
/srv/example.com/www/ /srv/example.org/www/
任何偏好?
Apache默认通常是/var/www/example.com/但你也可以按照FHS的指导,我觉得很好。 重要的是你保持系统之间的一致性,这就是为什么FHS是一个很好的参考。
无论如何,我build议将它放在不同的分区中,因为:
请记住要非常小心的目录权限,以避免用户从一个网站访问其他网站。
我们有一个非常好的经验
/srv/www/example.com/html /srv/www/example.com/sub-d/www /srv/www/example.com/sub-d/beta /srv/www/example.com/sub-d/logs (if preferred)
如果服务器被一个公司使用。 如果您有客户端域名服务,您可能需要考虑
/srv/www/client1/doma.in/html /srv/www/client1/secon.nd/html /srv/www/client2/foob.ar/html
我喜欢/var/www/example.com约定。
我喜欢在/etc/httpd/vhosts.d/example.com.conf中包含在主要的apache conf中。 我不让客户编辑这个。 这样,如果你添加一个新的域名和configtest,重新加载或重新启动检测到一个错误,那么它很容易退出。
使用:/var/www/example.com/html /var/www/example.com/cgi-bin/var/www/example.com/log
我使用posix acls在上面的dirs上添加默认的acls,这样他们创build的任何文件都是用rwx为他们的服务器用户(在suexec中使用的)/ group创build的,这样无论用户创build文件时,Web服务器可以访问它们的用户,以便VritualHosts用户组的成员可以访问所有的文件。
/var/www/example.com/private我使用private作为密码和组文件的去处。
/var/www/example.com/conf/example.com.include.conf如果我想允许站点所有者进行configuration更改,我也创build一个文件,如:/var/www/example.com/conf/example .com.include.conf包含在主域configuration中的VirtualHost中,例如/etc/httpd/vhosts.d/example.com.conf。
你需要小心,因为这意味着用户可以打破你的整个configuration,所以你要非常小心,用户知道他们在做什么。 当有一个服务器拥有同一个客户拥有的多个VirtualHost时,我倾向于这样做,所以如果破坏configuration,他们只会破坏自己的网站。
我还build议使用suexec,它允许进程以apache以外的用户身份运行,并允许以apache用户以外的用户身份运行dynamic内容。
请参阅: http : //httpd.apache.org/docs/2.2/suexec.html
您可能还想看看各种RLmit指令,这些指令允许您在VirtualHost等基础上提供资源使用。 看到:
我们使用以下布局
/var/www/domains/$DOMAIN/$HOST/{htdocs,logs}
所以,以www.google.com为例
<VirtualHost *:80> ServerName www.google.com DocumentRoot /var/www/domains/google.com/www/htdocs ErrorLog /var/www/domains/google.com/logs/error_log CustomLog /var/www/domains/google.com/logs/access_log combined </VirtualHost>