如何禁用所有apache虚拟主机?

如何禁用所有apache虚拟主机?,apache,virtualhost,Apache,Virtualhost,我正在编写一个shell脚本来进行一些web服务器配置。我需要禁用所有当前活动的虚拟主机A2Dispatite不接受多个参数,因此我无法执行此操作 a2dissite `ls /etc/apache2/sites-enabled` 我应该使用查找?手动删除/etc/apache2/sites enabled中的符号链接是否安全?您可以编辑httpd.conf并删除虚拟主机的include行(在文件底部)您可以删除符号链接,或将整个目录移走。除了这些链接之外,没有特殊的数据库或其他元数据。您的脚

我正在编写一个shell脚本来进行一些web服务器配置。我需要禁用所有当前活动的虚拟主机
A2Dispatite
不接受多个参数,因此我无法执行此操作

a2dissite `ls /etc/apache2/sites-enabled`

我应该使用
查找
?手动删除
/etc/apache2/sites enabled
中的符号链接是否安全?

您可以编辑httpd.conf并删除虚拟主机的include行(在文件底部)

您可以删除符号链接,或将整个目录移走。除了这些链接之外,没有特殊的数据库或其他元数据。

您的脚本是否仅限于Debian?如果是这样,您可以安全地删除已启用站点中的所有符号链接,只要在“站点可用”目录中正确写入所有站点,这些符号链接就可以正常工作

例如:

 find /etc/apache2/sites-enabled/ -type l -exec rm -i "{}" \;
将保护您免受实际编写了文件而不是该目录中的符号链接的人的攻击


(当然,从rm中删除自动脚本的-i)

我从不使用'a2Dispatite',总是在手动启用的/etc/apache2/sites中删除和创建链接,所以是的,我认为这是非常安全的。

显然,你可以安装最新的Ubuntu;)

经过进一步研究,我发现
a2dispate
只是一个shell脚本,它基本上只调用
rm
。所以,和其他回答一样,我同意这样做是安全的

rm /etc/apache2/sites-enabled/*

ubuntu 12.04lts/ubuntu 16.04lts

您只需执行以下操作[NB:您可能需要root权限sudo a2dispate]

a2dissite *

它会提示您选择您想做的事情

完全禁用站点后,重新启动apache2服务器

sudo systemctl restart apache2
或者在不完全重新启动的情况下重新加载apache配置:

sudo service apache2 reload

要删除主机文件,只需删除它。 如果您只想禁用该站点,请使用

sudo a2dissite sitename
重新启动apache2

sudo /etc/init.d/apache2 reload
再次将其从系统中完全删除

sudo rm /etc/apache2/sites-available/sitename

在删除文件之前,我也会先禁用它

这是我的解决方法,第一种类型:

#a2dispatite
(在不带任何参数的情况下键入此命令,它将提示您选择下一行)

您的选择是:siteA siteB siteC siteD

要禁用哪个站点(通配符ok)

现在您只需复制上述所有站点列表(siteA siteB siteC siteD)并粘贴到中作为答案,然后输入

输出结果将是:

removing dangling symlink /etc/apache2/sites-enabled/siteA.conf
removing dangling symlink /etc/apache2/sites-enabled/siteB.conf
removing dangling symlink /etc/apache2/sites-enabled/siteC.conf
removing dangling symlink /etc/apache2/sites-enabled/siteD.conf

这种方法将有助于我们选择删除或保留一长串站点名称。

这是通过shell脚本完成的,无法保证ishe可以使用regex的httpd.conf文件结构。包括基本相同。他可以通过vhost的dir作为参数,并以此为基础构建regex。也不能保证所有vhost都是在从站点启用dir链接的配置文件中定义的。不过,这会干扰将来快速激活其中一些vhost的能力。我不知道为什么会被否决。所有
a2ensite
a2dispatite
都是在/etc/apache2/sites enabled目录中创建或删除链接。但是,对于大多数人来说,将目录移开可能有点过分。这只在启用了
/etc/apache/sites
(或类似目录)的情况下才有效。编辑我之前的评论-为Debian Stretch更新:根据您的回答,我建议使用
查找/etc/apache2/sites available/-type f-exec basename'{}\\xargs-n 1 a2dispatite
因此,如果a2dispatite脚本将来发生更改,您将保持安全。。。
removing dangling symlink /etc/apache2/sites-enabled/siteA.conf
removing dangling symlink /etc/apache2/sites-enabled/siteB.conf
removing dangling symlink /etc/apache2/sites-enabled/siteC.conf
removing dangling symlink /etc/apache2/sites-enabled/siteD.conf