我有一个网站 www.mysite.com 这是主网站,我将使用Django 网络框架对于网站
我还想拥有其他子域名,例如:
- https://mail.mysite.com (由津布拉)
- http://admin.mysite.com (安装项目码头)
- http://otherstuff.mysite.com(ASymfony应用)
我想知道:
- 我可以这样做吗(使用 Apache 和子域来服务不同的应用程序)
- 设置子域名并让不同的 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。