2008-10-08 10 views
6

Estoy escribiendo un script de shell para hacer algo de configuración del servidor web. Necesito desactivar todos los hosts virtuales actualmente activos. a2dissite no acepta múltiples argumentos, así que no puedo hacer¿Cómo deshabilitar todos los hosts virtuales de apache?

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

¿Debo usar find? ¿Es seguro eliminar manualmente los enlaces simbólicos en /etc/apache2/sites-enabled?

Respuesta

9

¿Su script es Debian solamente? De ser así, puede eliminar de forma segura todos los enlaces simbólicos en sitios habilitados, que funcionarán siempre que todos los sitios se hayan escrito correctamente, en el directorio de sitios disponibles.

Por ejemplo:

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

lo protegerá contra alguien que ha escrito un archivo en lugar de un enlace simbólico en ese directorio.

(quitar la -i de rm para una escritura automática, por supuesto)

-1

puede editar el httpd.conf y eliminar la línea de incluir las máquinas virtuales (en la parte inferior del archivo)

+0

bueno, esto se hace mediante un script de shell, y no hay seguridad de que la estructura del archivo httpd.conf sea –

+0

que pueda usar regex. incluir es bastante similar. podría pasar el directorio de los fantasmas como argumento y, basándose en que puede construir la expresión regular – Mote

+0

, tampoco existe la garantía de que todos los hosts estén definidos en archivos de configuración vinculados desde el directorio de sitios habilitados. – hop

2

Usted puede simplemente eliminar los enlaces simbólicos, o mover todo el directorio de distancia. No hay una base de datos especial u otros metadatos además de esos enlaces.

+1

No sé por qué esto fue downvoted. Todo 'a2ensite' o' a2dissite' lo hace es crear o eliminar enlaces en el directorio/etc/apache2/sites-enabled. Sin embargo, mover el directorio puede ser un poco excesivo para la mayoría de las personas. – JoBu1324

1

nunca uso 'a2dissite' y siempre eliminar y crear los enlaces en/etc/apache2/sites-enabled manualmente así que sí, Diría que es bastante seguro.

-3

Al parecer, sólo puede instalar la última versión de Ubuntu;)

11

Después de un poco más de investigación, descubrí que a2dissite es solamente un guión, y que básicamente sólo llama rm. Por lo tanto, al igual que otras respuestas, estoy de acuerdo que es seguro hacerlo

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

ubuntu 12.04lts/ubuntu 16.04lts

que sólo puede hacer lo siguiente [NB: usted puede necesitar permiso raíz sudo a2dissite]

a2dissite * 

O

a2dissite 

Y se le pedirá para las que desee hacer

cuando se tiene completamente sitios inhabilitados reiniciar el servidor apache2

sudo systemctl reiniciar apache2

+1

Eso solo funciona si está en '/ etc/apache/sites-enabled' (o directorio similar). –

1

Para quitar el archivo de host simplemente eliminarlo. Si lo que desea es dissable el sitio, utilice

sudo a2dissite sitename 

apache2 Reiniciar

sudo /etc/init.d/apache2 reload 

de nuevo para eliminar (borrar) completamente del sistema,

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

lo haría también deshabilitar primero antes de eliminar el archivo

0

Aquí está mi solución, primer tipo:

# a2dissite (escriba este comando sin ningún argumento, que provocaría que pedir que elija la siguiente línea)

Sus opciones son: sitioA sitioB SITEC situados

¿Qué sitio (s) desea deshabilitar (comodines está bien)?

Ahora que acaba de copiar toda la lista anterior de sitios (sitioA sitioB SITEC situados) y pegarlo en su respuesta que, a continuación, Intro.

El resultado de la salida sería:

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 

Este enfoque nos ayudará a opción de elegir a una larga lista de nombres de sitio debe ser eliminado o intactos.

Cuestiones relacionadas