一个带有多个虚拟主机的 Apache 开发服务器?

一个带有多个虚拟主机的 Apache 开发服务器?

假设我将拥有一个供多个开发人员共享代码的唯一开发服务器。每个开发人员的代码将位于其主目录中,sources因此基本上它将类似于~/<developer_name>/sources。该服务器运行的是 Apache 2.4.x。

我需要每个开发人员都可以通过例如访问他们的代码<developer_name>.domain.com。当然,developer_nameURL 上的将与目录中的名称匹配/home

我的解决方案是在 Apache 配置上为每个开发人员提供一个虚拟主机,有没有更好的解决方案而我不知道?

答案1

我们有类似的设置。

唯一的问题是,您需要为服务器设置一个完整的子域。因此,您将拥有 jdoe.dev.domain.com 和 bsmith.domain.com,而不是 jdoe.domain.com 和 bsmith.dev.domain.com。您几乎可以将“dev.domain.com”视为服务器。

你可能想做这样的事情:

Apache 模块

确保虚拟主机别名模块已启用。

# a2enmod vhost_alias

Apache 配置

(关键是虚拟文档根指示)

<VirtualHost *:80>
  ServerName dev.domain.com
  ServerAlias dev.domain.com *.dev.domain.com
  VirtualDocumentRoot /home/%1/sources
</VirtualHost>

DNS 条目

您需要一个 DNS 条目来将 dev.domain.com 及其下的任何内容 (*.dev.domain.com) 指向您的开发服务器。

如果您想摆脱“dev”子域,您必须为每个开发人员创建一个 DNS 条目。

domain.com 区域中的 BIND 记录可能如下所示:

*.dev     A       10.1.1.1

答案2

您是否需要他们拥有自己的域名?如果不需要,可以使用内置的 mod_userdir 来实现这一点。您的开发人员将位于http://developers.domain.com/~<developer_name>/(例如 /~bob/)。您只需将 UserDir 定义为“sources”(默认为 public_html)。

配置通常在 httpd.conf 中,但您只需要类似以下内容:

LoadModule userdir_module modules/mod_userdir.so
<IfModule mod_userdir.c>
    UserDir sources
</IfModule>

您可能还必须UserDir disable将其注释掉。

相关内容