假设我将拥有一个供多个开发人员共享代码的唯一开发服务器。每个开发人员的代码将位于其主目录中,sources
因此基本上它将类似于~/<developer_name>/sources
。该服务器运行的是 Apache 2.4.x。
我需要每个开发人员都可以通过例如访问他们的代码<developer_name>.domain.com
。当然,developer_name
URL 上的将与目录中的名称匹配/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
将其注释掉。