在基于 RHEL 的服务器上,多个域的 Web 内容应放在哪里?

在基于 RHEL 的服务器上,多个域的 Web 内容应放在哪里?

我正在设置一个 RHEL Web 服务器,它将托管多个域名的静态和动态内容。多个用户将通过 SSH 和 SFTP 更新文件。

每个域名的文件应该放在哪里?在我的默认系统上,只有一个/var/www/,但没有线索知道如何定位多个域名。

查看文件系统层次结构标准(http://www.pathname.com/fhs/pub/fhs-2.3.html),看来最好的选择是:

/srv/example.com/www/
/srv/example.org/www/

有什么偏好吗?

答案1

Apache 默认设置通常是这样的/var/www/example.com/,但您也可以遵循 FHS 指南,我认为这个指南非常好。重要的是您要保持系统之间的一致性,这就是为什么 FHS 是一个很好的参考。

无论如何,我建议将其放在不同的分区中,因为:

  • 如果满了,不会影响服务器
  • 您可以设置 noexec 等挂载选项以增强安全性

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

答案2

我们在结构方面有很好的经验

/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

答案3

我喜欢 /var/www/example.com 约定。

我喜欢将配置文件放在 /etc/httpd/vhosts.d/example.com.conf 中,并包含在主 apache 配置文件中。我不会让客户编辑它。这样,如果您添加新域并且配置文件测试、重新加载或重新启动检测到错误,那么退出就很容易了。

使用:/var/www/example.com/html /var/www/example.com/cgi-bin /var/www/example.com/log

我使用 posix acls 在上述目录上添加默认 acl,以便它们创建的任何文件都是使用 rwx 为其服务器用户(suexec 中使用的用户)/组创建的,这样无论他们在创建文件时是什么用户,网络服务器的用户都可以访问它们,并且 VritualHosts 用户组的成员可以访问所有文件。

/var/www/example.com/private 我使用私人作为密码和组文件的存放位置。

/var/www/example.com/conf/example.com.include.conf 如果我想允许网站所有者进行配置更改,我还会创建一个文件,例如:/var/www/example.com/conf/example.com.include.conf,该文件包含在域主配置中的 VirtualHost 中,即 /etc/httpd/vhosts.d/example.com.conf。

不过,您需要小心谨慎,因为这意味着用户可能会破坏您的整个配置,因此您需要非常小心,确保用户知道他们在做什么。当一台服务器有多个 VirtualHosts 且全部由同一客户拥有时,我倾向于这样做,因此,如果他们破坏配置,他们只会破坏自己的网站。

我还建议使用 suexec,它允许进程以 apache 以外的用户身份运行,并且还允许动态内容以 apache 用户以外的用户身份运行。

看: http://httpd.apache.org/docs/2.2/suexec.html

您可能还想查看各种 RLmit 指令,这些指令允许您在 VirtualHost 等基础上限制资源使用。请参阅:

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

答案4

我们使用以下布局

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

相关内容