2008-10-08 5 views
6

J'écris un script shell pour faire une configuration de serveur web. Je dois désactiver tous les hôtes virtuels actuellement actifs. a2dissite n'accepte pas plusieurs arguments, donc je ne peux pas faireComment désactiver tous les hôtes virtuels apache?

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

Dois-je utiliser find? Est-il prudent de supprimer manuellement les liens symboliques dans /etc/apache2/sites-enabled?

Répondre

9

Votre script est-il uniquement Debian? Si tel est le cas, vous pouvez supprimer en toute sécurité tous les liens symboliques dans sites-enabled, qui fonctionneront tant que tous les sites auront été correctement écrits, dans le répertoire sites-available.

Par exemple:

find /etc/apache2/sites-enabled/ -type l -exec rm -i "{}" \; 

vous protège contre quelqu'un qui a réellement écrit un fichier au lieu d'un lien symbolique dans ce répertoire.

(retirer la -i rm pour un script automatique, bien sûr)

-1

vous pouvez modifier le httpd.conf et supprimer la ligne include pour les hôtes virtuels (en bas du fichier)

+0

bien, ceci est fait par un script shell, et il n'y a aucune assurance que la structure du fichier httpd.conf est –

+0

il peut utiliser regex. L'inclusion est la même chose. il pourrait passer le dir des vhosts comme argument et sur la base de ce qu'il peut construire la regex – Mote

+0

il n'y a pas non plus d'assurance que tous les vhosts sont définis dans les fichiers de configuration liés depuis le répertoire des sites. – hop

2

Vous pouvez simplement supprimer les liens symboliques, ou déplacer tout le répertoire loin. Il n'y a pas de base de données spéciale ou d'autres métadonnées en dehors de ces liens.

+1

Je ne sais pas pourquoi cela a été downvoted. Tout 'a2ensite' ou' a2dissite' est de créer ou de supprimer des liens dans le répertoire/etc/apache2/sites-enabled. Déplacer le répertoire peut être un peu excessif pour la plupart des gens, cependant. – JoBu1324

1

Je ne jamais utiliser « a2dissite » et toujours supprimer et créer les liens dans/etc/apache2/sites activés manuellement donc oui, je Je dirais que c'est assez sûr.

-3

Apparemment, vous pouvez installer le dernier Ubuntu;)

11

Après un peu plus de recherche, j'ai découvert que a2dissite est juste un script shell, et il appelle fondamentalement juste rm. Alors, comme d'autres réponses, je suis d'accord qu'il est sûr de faire

rm /etc/apache2/sites-enabled/* 
7

ubuntu 12.04lts/ubuntu 16.04lts

Vous pouvez juste faire ce qui suit [NB: vous devrez peut-être la permission root sudo a2dissite]

a2dissite * 

Ou

a2dissite 

Et il vous demandera ceux que vous voulez faire

lorsque vous avez complètement sites désactivés redémarrer le serveur apache2

sudo systemctl restart apache2

+1

Cela ne fonctionne que si vous êtes dans '/ etc/apache/sites-enabled' (ou dans un répertoire similaire). –

1

Pour supprimer le fichier hôte juste le supprimer. Si vous voulez juste dissable le site, utilisez

sudo a2dissite sitename 

Restart apache2

sudo /etc/init.d/apache2 reload 

Encore une fois pour supprimer (supprimer) complètement du système,

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

Je désactivez-le d'abord avant de supprimer le fichier

0

Voici ma solution, premier type:

# a2dissite (tapez cette commande sans aucun argument, il invite à vous demander de choisir la ligne suivante)

Vos choix sont: SiteA siteB SITec SITUER

De quel (s) site (s) voulez-vous désactiver (caractères génériques ok)?

Maintenant, vous venez de copier tous liste ci-dessus des sites (SiteA siteB SITec SITUER) et coller dans votre réponse comme, puis appuyez sur Entrée.

Le résultat de 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 en option à une longue liste de noms de site ne doit être enlevé ou intact.

Questions connexes