4

我已经让 Apache 正常工作,虚拟主机按预期工作。我的操作系统是 Windows 7。

但是,我遇到了一个问题,我正在努力寻找答案,而 Google 并没有产生多少成果——无论如何,对于 Windows,仅适用于 Linux(在这种情况下并不真正适用)。

如何在不不断重启服务器的情况下添加新的虚拟主机?

(Apache 2.2 版是我目前正在运行的)

我将新主机添加到主机文件和虚拟主机中的文件,如下所示:

<VirtualHost *:80>
ServerName  host1.tld
ServerAlias www.host1.tld
DocumentRoot /www/vhosts/host1.tld
ErrorLog /www/Apache22/logs/error.log

<Directory "/www/vhosts/host1.tld">
    Options All
    AllowOverride All
    order allow,deny
    allow from all
</Directory>

<VirtualHost *:80>
ServerName  mywebsite.com
ServerAlias www.mywebsite.com
DocumentRoot /www/vhosts/mywebsite.com
ErrorLog /www/Apache22/logs/error.log

<Directory "/www/vhosts/mywebsite.com">
    Options All
    AllowOverride All
    order allow,deny
    allow from all
</Directory>

有没有人有过类似的解决方案,如果有,你有什么建议?

4

2 回答 2

3

您可以使用VirtualDocumentRoot使用单个块配置所有虚拟主机

<VirtualHost *:80>
UseCanonicalName Off
VirtualDocumentRoot /www/vhosts/%0
ErrorLog /www/Apache22/logs/error.log

<Directory "/www/vhosts">
    Options All
    AllowOverride All
    order allow,deny
    allow from all
</Directory>
于 2011-01-17T20:24:39.967 回答
0

您可以在不重新启动服务器的情况下重新启动 apache。我的 Mac 上有一个苹果脚本,可以为我重新启动 apache,这样只需单击一下,四分之一秒就可以加载新的 apache 配置。这是可以轻松移植到 Python 的苹果脚本(供您的 Windows 使用):

set stopString to do shell script "sudo /usr/local/apache2/bin/apachectl stop" with administrator privileges and password
set startString to do shell script "sudo /usr/local/apache2/bin/apachectl start" with administrator privileges and password

if startString as string = "" then
    "Apache started correctly"
else
    stopString & " , " & startString
end if
于 2011-01-17T20:19:38.660 回答