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

Chr*_*ard 9 apache virtualhost

我正在编写一个shell脚本来进行一些Web服务器配置.我需要禁用所有当前活动的虚拟主机.a2dissite不接受多个参数,所以我不能这样做

a2dissite `ls /etc/apache2/sites-enabled`
Run Code Online (Sandbox Code Playgroud)

我应该用find吗?手动删除符号链接是否安全/etc/apache2/sites-enabled

Chr*_*ard 12

经过一番研究,我发现这a2dissite只是一个shell脚本,它基本上只是调用rm.因此,与其他回复一样,我同意这样做是安全的

rm /etc/apache2/sites-enabled/*
Run Code Online (Sandbox Code Playgroud)


Vin*_*vic 11

你的脚本只是Debian吗?如果是这样,您可以安全地删除已启用站点中的所有符号链接,只要所有站点都已正确写入,这些符号链接将在sites-available目录中删除.

例如:

 find /etc/apache2/sites-enabled/ -type l -exec rm -i "{}" \;
Run Code Online (Sandbox Code Playgroud)

将保护您免受在该目录中实际编写文件而不是符号链接的人的攻击.

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


Rob*_*Rob 9

ubuntu 12.04lts/ubuntu 16.04lts

您可以执行以下操作[注意:您可能需要root权限sudo a2dissite]

a2dissite *
Run Code Online (Sandbox Code Playgroud)

要么

a2dissite
Run Code Online (Sandbox Code Playgroud)

它会提示你做你想做的事

当你完全禁用站点重启apache2服务器

sudo systemctl restart apache2
Run Code Online (Sandbox Code Playgroud)

或者只是在没有完全重启的情况下重新加载apache配置:

sudo service apache2 reload
Run Code Online (Sandbox Code Playgroud)

  • 这仅在您位于“/etc/apache/sites-enabled”(或类似目录)中时才有效。 (2认同)
  • @StephanVierkant:“*”将导致 shell 进行通配并匹配当前目录中的所有文件,正如您所指出的,只有当您位于“/etc/apache/sites-enabled”目录中时,这才可能起作用。要按字面意思传递“*”作为参数(“a2dissite”支持作为通配符),请改用“*”。 (2认同)

Sup*_*t M 6

要删除主机文件,只需将其删除即可。如果您只想禁用该网站,请使用

sudo a2dissite sitename
Run Code Online (Sandbox Code Playgroud)

重新启动阿帕奇2

sudo /etc/init.d/apache2 reload
Run Code Online (Sandbox Code Playgroud)

再次将其从系统中完全删除(删除),

sudo rm /etc/apache2/sites-available/sitename
Run Code Online (Sandbox Code Playgroud)

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