在 Apache 上添加新的虚拟主机而不重新启动服务器?
Posted
技术标签:
【中文标题】在 Apache 上添加新的虚拟主机而不重新启动服务器?【英文标题】:Add new virtualhosts on Apache without restarting server? 【发布时间】:2011-06-10 16:26:39 【问题描述】:我已经让 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>
有没有人遇到过类似的解决方案,如果有,您有什么建议?
【问题讨论】:
重启网络服务器有什么问题? 对于托管许多站点的大型系统,不能仅仅因为我们想要更改一个站点而在其他站点上停机。 【参考方案1】:您可以使用 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>
【讨论】:
【参考方案2】:您可以在不重新启动服务器的情况下重新启动 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
【讨论】:
我认为“重新启动服务器”实际上是指“重新启动网络服务器”(即 Apache)。 我找到了我的解决方案,httpd -k restart。不过还是要感谢其他人!以上是关于在 Apache 上添加新的虚拟主机而不重新启动服务器?的主要内容,如果未能解决你的问题,请参考以下文章
nginx - 我可以在不重新启动服务器的情况下添加新的虚拟主机吗?