¿Cómo habilitar todas las confs del sitio con a2ensite (al pasar más de 000-default.conf && default-ssl.conf)?


11

Uso el servidor Ubuntu 16.04.2 con Apache2, en el que almaceno mis sitios web personales.

Para habilitar todos mis archivos conf en /etc/apache2/sites-available(además de 000-default.confy ssl-default.conf), fui /var/www/htmly ejecuté a2ensite.

Entonces me dijeron:

Your choices are: 
000-default default-ssl domain.tld1 domain.tld2 domain.tld3 domain.tld4 
Which site(s) do you want to enable (wildcards ok)?

Luego hice Ctrl+ con el Cobjetivo de ejecutar otra cosa.

Estoy buscando una manera de habilitar automáticamente todas las confs del sitio, sin mencionar una específica --- Solo quiero ejecutar un comando que habilitará todas las confs del sitio que yo mismo agregué.

Respuestas:


18

También podría usar find en su directorio de configuración.

find /etc/apache2/sites-available/ -type f -and -not -name "*default*" -exec a2ensite {} \;

Esto encuentra todos los archivos de configuración que no tienen "predeterminado" en su nombre y los activa.


1
También debe buscar archivos que tengan una *.confextensión. O bien, a2ensite se quejaría de que el sitio no existe
Dan

@Dan no es necesario ya que estamos buscando en el directorio conf.
Ziazis

Supongo que este método también es bueno, por principio, cuando se crean Nginx Sblocks, y no solo para Apache Vhosts.

8

Necesita navegar /etc/apache2/sites-availabley luego ejecutar el comando:

sudo a2ensite *

Permitirá todos los sitios en el directorio. (los archivos deberían ser algo así como xxx.conf)

Y luego vuelva a cargar apache usando sudo service apache2 reload.

Entonces su secuencia de comando debería ser así:

cd /etc/apache2/sites-available
sudo a2ensite *
sudo service apache2 reload

Esto también habilita el archivo conf default-ssl.conf... Esto está claro en la salidaEnabling site default-ssl.

Puede usar dpkg -Spara ver si el archivo de configuración es de un paquete.
muru

1

No importa cuál sea nuestra ubicación actual, el comando sudo a2ensite "*.conf"intentará habilitar todos los archivos de configuración ubicados en /etc/apache2/sites-available/.

A continuación, podemos usar a2dissite 000-default.conf default-ssl.confpara deshabilitar las configuraciones predeterminadas de Apache y luego podemos usar systemctl restart apache2.servicepara reiniciarlo.

Podemos ejecutar todo esto como un solo comando:

sudo bash -c "a2ensite '*.conf' && a2dissite 000-default.conf default-ssl.conf && systemctl restart apache2.service"

Algo más, podemos crear un comando personalizado a través de una función en bash:

function a2ensites {
        sudo bash -c "a2ensite '*.conf' && a2dissite 000-default default-ssl && systemctl restart apache2.service"
}
export -f a2ensites

Ahora tenemos el comando , diseñado para hacer este trabajo. Para hacer que este comando sea permanente, debemos colocar las líneas anteriores en la parte inferior del archivo y luego . El siguiente script simple realizará esta tarea:a2ensites~/.bashrcsource

 printf "\nfunction a2ensites { \n\tsudo bash -c \"a2ensite '*.conf' && a2dissite 000-default.conf default-ssl.conf && systemctl restart apache2.service\" \n}\nexport -f a2ensites\n" | tee -a $HOME/.bashrc; source $HOME/.bashrc

La primera línea no es cierta. El *comodín se está expandiendo antes de pasar al a2ensitecomando en mi caso. Sin embargo, esto funciona sudo a2ensite "*.conf".
Dan

Hola, @Dan, en mi caso (Ubuntu 16.04.2) funciona correctamente sin comillas. Sin embargo, he actualizado la respuesta. ¿Podría verificar si a2ensite '*.conf'funciona correctamente en su sistema?
pa4080

1
Sí, funciona, estoy en Ubuntu 17.04 por cierto.
Dan

0

La ejecución a2ensite /var/www/html/*/hará que Apache habilite cada conf de sitio que tenga el mismo nombre que el directorio del sitio.

Como efecto secundario, también intentará hacer coincidir los directorios del sitio que no coinciden con los archivos conf del sitio, como se predice en el siguiente resultado, pero creo que esto puede ignorarse de manera segura:

ERROR: Site /var/www/html/domain.tld1 does not exist!
ERROR: Site /var/www/html/domain.tld2 does not exist!
ERROR: Site /var/www/html/nice_directory does not exist!
ERROR: Site /var/www/html/nice_file does not exist!

Es probable que deba reiniciar Apache después de habilitar los archivos conf:

systemctl restart apache2.service

1
No estoy seguro, pero ¿por qué la configuración de su sitio está en la carpeta webroot? Intente usar la /etc/apache2/sites-availablecarpeta para configuraciones para sus sitios. Una vez que los habilita a través de a2ensite, se vinculan automáticamente /etc/apache2/sites-enabled. Lo que está haciendo en este momento es bastante extraño y todos los que tienen acceso a su servidor web pueden ver sus configuraciones.
Ziazis

Hola @Ziazis Realmente no entiendo, ¿por qué incluso me preguntas "todos los que tienen acceso a tu servidor web pueden ver tus configuraciones"? Soy el único que usa el servidor; Si no fuera así, normalmente otros usuarios no tendrían acceso a la raíz del documento. De todos modos, ¿puedes aclarar por qué preguntas eso y qué encuentras exactamente mal?

Bueno, no estoy seguro de para qué estás usando este servidor web. Sin embargo, si este es un sistema en vivo con un acceso al que puede acceder un tercero, no querrá que sus archivos de configuración se encuentren /var/www/htmlya que ese es el DocumentRoot del sitio default.html. Entonces, en tu caso, parece que estás ejecutando las configuraciones allí ... Es como comer con la boca abierta, no hagas eso ;-).
Ziazis

No entiendo. ¿Crees que puse los archivos conf en la raíz del documento? Porque no lo hice. ¿Me sugieres ponerlos allí? Me gustaría evitar eso ... Solo quiero habilitar todos los que no son 000-default y default-ssl. Por cierto, uso el servidor web para almacenar mis sitios web personales.

Ah, ya veo, usted nombró todos sus directorios raíz de la misma manera que sus archivos de configuración. Y aquí pensé que cambiaste tu configuración de apache2 para tenerla /var/www/htmlcomo tu carpeta de configuración. NVM entonces. Lo que realmente necesitas es solo unfind ./ -type f -and -not -name "*default*" -exec a2ensite {} \;
Ziazis

0

copia y pega las siguientes líneas en el nombre del archivo apache_enable.sh

cd /etc/apache2/sites-available/
a2ensite *
service apache2 reload

y dar el comando read + execute a apache_enable.shy ejecutar el script usando el usuario root


0

Mueva las configuraciones predeterminadas a otra carpeta y luego * debería funcionar para usted como lo desee.

Vaya a la carpeta "sitios disponibles" ya que solo funciona en esta carpeta.

cd / etc / apache2 / sites-available /

sudo a2ensite *

probado


AFAIK, ¿podría hacerlo desde cualquier parte del sistema cuando documente root es / var / www / html?

La parte importante es la carpeta / etc / apache2_or_other / sites-available. La raíz del documento se vincula en esa configuración. Podría tener su raíz en / usr / share / htlm y no cambiaría nada excepto si no la escribió en el archivo conf. Puedo estar en cualquier lugar de mi servidor, siempre y cuando los archivos conf estén en la carpeta disponible para sitios, a2ensite hará su trabajo.
Carobell

Edité mi respuesta ya que la primera opción no funciona probada
Carobell
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.