Propósito de los directorios de Debian "sitios disponibles" y "sitios habilitados"

60

¿Alguien puede decirme, en pocas palabras, cuál es el propósito de estos dos directorios en Debian?

/etc/apache2/sites-enabled
/etc/apache2/sites-available

Noto que difieren sites-available/000-defaulty sites-enabled/defaultmuestra que son idénticos.

¿Lo que da?

aaaidan
fuente

Respuestas:

63

sites-available contiene los archivos de configuración de apache para cada uno de sus sitios. Por ejemplo:

<VirtualHost *:80>
  ServerName site.mysite.com
  ServerAdmin [email protected]

  DirectoryIndex index.php
  DocumentRoot /home/user/public_html/site.mysite.com/public

  LogLevel warn
  ErrorLog /home/user/public_html/site.mysite.com/logs/error.log
  CustomLog /home/user/public_html/site.mysite.com/logs/access.log combined
</VirtualHost>

Cuando desee agregar un nuevo sitio (por ejemplo, site.mysite.com), agréguelo aquí y use:

a2ensite site.mysite.com

Para habilitar el sitio. Una vez que el sitio está habilitado, se coloca un enlace simbólico al archivo de configuración en el directorio habilitado para sitios, lo que indica que el sitio está habilitado.

Jason Leveille
fuente
12
Si desea deshabilitar un sitio, debe ejecutar a2dissite site.mysite.com
2
a2ensitey a2dissiteestán ubicados en los /usr/sbinque actualmente no está incluido en la ruta de usuario predeterminada, por lo que la finalización de la pestaña no funcionará. sudo a2Sin embargo, al escribir y presionar la tecla de tabulación, se le ofrecerán ambas a2ensitey a2dissite.
Stefan Schmidt
22

Más importante que la mecánica del sistema es la lógica ...

Debian proporciona los dos directorios separados, de modo que si está administrando automáticamente sus configuraciones de Apache, puede hacer que todos los vhosts caigan en sites-availabletodas sus máquinas, y luego se pueden habilitar vhosts individuales en el servidor que realmente los servirá. También significa que puede deshabilitar casi instantáneamente un sitio si está causando problemas ( a2dissite example.com; /etc/init.d/apache2 reload).

womble
fuente
1
Esta es la verdadera respuesta a la pregunta original.
silpol
5

Para agregar a los anteriores, el archivo en sites-enabledes un enlace simbólico al sites-availablearchivo:

ls -l /etc/apache2/sites-enabled/

¡No es solo el mismo contenido, es el mismo archivo real!

JakeGould
fuente
5

Información importante:

Debería editar archivos solo en el sites-availabledirectorio.

Nunca edite archivos dentro del sites-enableddirectorio, de lo contrario puede tener problemas si su editor se queda sin memoria o, por cualquier motivo, recibe un SIGHUP o SIGTERM.

Por ejemplo: si está utilizando nanopara editar el archivo sites-enabled/defaulty se queda sin memoria o, por cualquier motivo, recibe un SIGHUP o SIGTERM, nanocreará un archivo de emergencia llamado default.save, dentro del sites-enableddirectorio. Por lo tanto, habrá un archivo adicional dentro del sites-enableddirectorio. Eso evitará que apache o NGINX se inicien. Si su sitio estaba funcionando, ya no lo estará. Tendrá dificultades hasta que descubra, en los registros, algo relacionado con el default.savearchivo y luego lo elimine.

En el ejemplo anterior, si estuviera editando el archivo dentro del sites-availabledirectorio, no habría pasado nada malo. El archivo sites-available/default.savese habría creado, pero no haría ningún daño dentro del sites-availabledirectorio.

Vini
fuente
¡Muy interesante! ¿Alguien más puede confirmar esto?
aaaidan
Aquí hay un ejemplo de alguien que tuvo este problema: stackoverflow.com/questions/36808705/…
Vini
Algo similar sucedió en el siguiente enlace. Vea el comentario de Melvyn en el Answaer, sobre la edición de archivos en sitios habilitados. stackoverflow.com/questions/26210115/…
Vini