Comment désactiver tous les hôtes virtuels Apache?
-
06-07-2019 - |
Question
J'écris un script shell pour configurer le serveur Web. Je dois désactiver tous les hôtes virtuels actuellement actifs. a2dissite
n'accepte pas les arguments multiples, donc je ne peux pas le faire
a2dissite `ls /etc/apache2/sites-enabled`
Devrais-je utiliser find
? Est-il prudent de supprimer manuellement les liens symboliques dans / etc / apache2 / sites-enabled
?
La solution
Votre script est-il uniquement Debian? Si tel est le cas, vous pouvez supprimer en toute sécurité tous les liens symboliques des sites activés. Ils fonctionneront tant que tous les sites auront été écrits correctement, dans le répertoire sites-available.
Par exemple:
find /etc/apache2/sites-enabled/ -type l -exec rm -i "{}" \;
vous protégera contre toute personne ayant écrit un fichier au lieu d’un lien symbolique dans ce répertoire.
(supprimez le -i de rm pour un script automatique, bien sûr)
Autres conseils
Après un peu plus de recherches, j'ai découvert que a2dissite
est simplement un script shell et qu'il appelle simplement rm
. Donc, comme d’autres réponses, je conviens qu’il est sécuritaire de le faire
rm /etc/apache2/sites-enabled/*
Ubuntu 12.04lts / Ubuntu 16.04lts
Vous pouvez simplement faire ce qui suit [NB: vous aurez peut-être besoin de la permission root sudo a2dissite]
a2dissite *
Ou
a2dissite
Et cela vous invitera à choisir ceux que vous voulez faire
lorsque vous avez complètement désactivé les sites, redémarrez le serveur apache2
sudo systemctl restart apache2
ou tout simplement recharger la configuration d'Apache sans redémarrage complet:
sudo service apache2 reload
Pour supprimer le fichier hôte, supprimez-le simplement. Si vous souhaitez simplement dissoudre le site, utilisez
.sudo a2dissite sitename
Redémarrez apache2
sudo /etc/init.d/apache2 reload
Encore une fois pour le supprimer (supprimer) complètement du système,
sudo rm /etc/apache2/sites-available/sitename
Je le désactiverais aussi avant de supprimer le fichier
Vous pouvez simplement supprimer les liens symboliques ou déplacer tout le répertoire. Il n’existe pas de base de données spéciale ni de métadonnées autres que ces liens.
Je n’utilise jamais 'a2dissite' et je supprime et crée toujours manuellement les liens dans / etc / apache2 / sites-enabled, alors oui, je dirais que c’est plutôt sûr.
Voici ma solution de contournement, premier type:
# a2dissite
(tapez cette commande sans argument, cela vous demanderait de choisir la ligne suivante)
Vos choix sont les suivants: siteA siteB siteC siteD
Quel (s) site (s) souhaitez-vous désactiver (caractères génériques ok)?
Il ne vous reste plus qu'à copier l'ensemble de la liste de sites ci-dessus ( siteA siteB siteC siteD ) et le coller dans votre réponse, puis Entrée.
Le résultat en sortie serait:
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
Cette approche nous aidera à choisir facultativement de choisir une longue liste de noms de sites qui devraient être supprimés ou intacts.
vous pouvez éditer le fichier httpd.conf et supprimer la ligne d'inclusion des hôtes virtuels (au bas du fichier)
Apparemment, vous pouvez simplement installer la dernière version d'Ubuntu;)