【发布时间】:2011-10-06 14:45:15
【问题描述】:
有没有办法拥有一个 LAMP 服务器并通过 PHP 以编程方式创建子域?
我不想安装 Plesk 或 cPanel,我知道他们有 API 可以让我创建子域。但是有没有办法绕过它们并拥有一个只安装了 LAMP 服务的裸服务器。
【问题讨论】:
有没有办法拥有一个 LAMP 服务器并通过 PHP 以编程方式创建子域?
我不想安装 Plesk 或 cPanel,我知道他们有 API 可以让我创建子域。但是有没有办法绕过它们并拥有一个只安装了 LAMP 服务的裸服务器。
【问题讨论】:
只需将所有子域指向您的文档根目录,然后找出您的 PHP 代码中访问了哪个子域。使用通配符 DNS 和通配符虚拟主机,您无需“创建”子域,所有可能的子域都存在。
<VirtualHost *:80>
ServerName *.example.com
DocumentRoot /var/www/html
</VirtualHost>
这就是将子域分配给每个用户的服务的工作方式。他们实际上不会在每次用户注册时创建 DNS 记录、编辑 Web 服务器配置文件并重新启动所有服务。
【讨论】:
你可以看看Apache提供的海量虚拟主机模块:
在您的 PHP 中,当您想创建一个新域时,只需创建一个新目录...并实施此配置的部分内容(请参阅上面的链接)以了解如何配置您的 Apache。这将允许每个主机有一个单独的虚拟主机......而不是替代答案,它仍然需要每个唯一主机名的更多配置工作......
# get the server name from the Host: header
UseCanonicalName Off
# this log format can be split per-virtual-host based on the first field
LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon
CustomLog logs/access_log vcommon
# include the server name in the filenames used to satisfy requests
VirtualDocumentRoot /www/hosts/%0/docs
VirtualScriptAlias /www/hosts/%0/cgi-bin
【讨论】: