在基于RHEL的服务器上为多个域放置Web内容的位置?

我正在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议将它放在不同的分区中,因为:

  • 如果填满,不会影响服务器
  • 您可以设置像noexec一样的安装选项以增加安全性

请记住要非常小心的目录权限,以避免用户从一个网站访问其他网站。

我们有一个非常好的经验

 /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等基础上提供资源使用。 看到:

http://httpd.apache.org/docs/2.2/mod/core.html#rlimitcpu

我们使用以下布局

 /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>