Apache Web 服务器、虚拟主机、子域名和多个 Web 框架

Apache Web 服务器、虚拟主机、子域名和多个 Web 框架

我有一个网站 www.mysite.com 这是主网站,我将使用Django 网络框架对于网站

我还想拥有其他子域名,例如:

我想知道:

  1. 我可以这样做吗(使用 Apache 和子域来服务不同的应用程序)
  2. 设置子域名并让不同的 Web 框架/应用程序共存需要哪些步骤

答案1

当然你可以这么做。

子域名只是单独的 VirtualHost 配置。名称无关紧要。例如,对于 Apache 来说,mail.domain.com 和 mail.anotherdomain.com 与 mail.domain.com 和 mail2.domain.com 的区别是一样的。

例如:

<VirtualHost 192.168.1.1:80>
  ServerName mail.mysite.com
  DocumentRoot /home/mysite.com/sites/mail/public_html
  ...
</virtualHost>
<VirtualHost 192.168.1.1:80>
  ServerName admin.mysite.com
  DocumentRoot /home/mysite.com/sites/admin/public_html
  ...
</VirtualHost>
...

等等。VirtualHost为每个站点重复部分。DocumentRoot路径是任意的。它可以位于/var/www(这在某些 Linux 系统上很常见),也可以位于任何地方。如果系统上只有一个域,并且您希望子域看起来更加独立(并且出于SuExec某些目的由不同的用户拥有,从安全角度来看这可能是可取的),您可以为每个域创建一个单独的用户,并将他们放入自己的主目录中。但是,主目录是任意,因此您可以使用上述示例 Apache 配置拥有多个用户。但是,如果他们不需要共享文件访问权限,您可能希望让他们成为/home/mail/home/admin、 。/home/otherstuff

笔记:如果您的系统有 SELinux 或 AppArmor,DocumentRoots 的位置可能由您的操作系统或您正在使用的 Apache 包固定。同样,如果您使用 SuExec,路径通常会编译到 suexec 二进制文件中(当您使用 suexec-custom 包时,它在 Debian 和 Ubuntu 上是可配置的,在 CentOS 上它被硬编码到 /var/www,除非您安装不同的 Apache 版本或自己重建 Apache)。因此,除非您有理由选择其他路径,否则使用默认路径可能是最简单的。但是我喜欢让用户住在 /home 中,所以我在我的 CentOS 系统上使用重建的 Apache 包,并将 suexec 设置为 /home。

相关内容