在LAMP中设置带有PHP的子域名

3

有没有一种方法可以通过PHP编程方式创建LAMP服务器和子域名?

我不想安装Plesk或cPanel,我知道它们有API可以让我创建子域名。但是有没有一种绕过它们的方法,只安装了LAMP服务的裸服务器呢?

2个回答

2
只需将所有子域指向您的文档根目录,并在您的PHP代码中确定访问的是哪个子域。使用通配符DNS和通配符虚拟主机,您不需要“创建”子域,所有可能的子域都已存在。
<VirtualHost *:80>
    ServerName *.example.com
    DocumentRoot /var/www/html
</VirtualHost>

这是每个用户都有一个子域名的服务如何工作的。它们实际上不会创建DNS记录、编辑Web服务器配置文件并在每次用户注册时重新启动所有服务。

嗯,我有一些想法。在我使用 Plesk 的时候,我注意到每次创建一个子域名时,它都会将其添加到 vhosts.conf 文件中,因此里面会有80多个条目。Plesk 是否每次都重新启动 Apache 服务? - Eli
是的,它每次都会重新启动Apache。 - Dan Grossman

1
您可以查看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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接