Cómo configurar Apache (sitios disponibles vs httpd.conf)

27

He estado tratando de seguir algunos tutoriales básicos que explican cómo hacer que Apache funcione (en ubuntu, en Amazon). La mayoría de las veces he quedado en blanco, porque todos los tutoriales me dijeron que configurara httpd.conf (para agregar DocumentRoot, etc.).

Ahora me topé con un tutorial que me decía que agregara configuraciones de sitio al directorio de sitios disponibles (bajo / etc / apache), y luego un enlace simbólico desde sitios habilitados. Configurar de esta manera parece funcionar.

Pero ahora estoy confundido: ¿cómo se supone que debo configurar Apache? La mayoría de los tutoriales todavía parecen decir que debería estar usando httpd.conf. ¿Cuál debería estar usando? ¿Cual es la diferencia? ¿Por qué todos los tutoriales están "equivocados" (si lo están)?

Edan Maor
fuente

Respuestas:

35

El sites-availablemétodo generalmente se considera la "forma de Debian":

  • configuración "principal" en /etc/apache2/apache2.conf
  • configuración de "usuario" en /etc/apache2/httpd.conf
  • Vhosts en /etc/apache2/sites-availablearchivos (uno por archivo, típicamente)
    • es posible que desee numerarlos, por ejemplo, 00-domain.com, 01-otherdomain.com
  • puertos ( Listendirectivas) en/etc/apache2/ports.conf
  • mods en /etc/apache2/mods-available

Puede manipularlos con enlaces simbólicos o con la a2serie de comandos:

a2ensite/a2dissite <site_config_filename>
a2enmod/a2dismod <module_name>

Dependiendo de las preferencias personales, puede reiniciar Apache utilizando apachectl, /etc/init.d/apache2 (start|stop|reload|restart)oservice apache2 (start|stop|reload|restart)

Un ejemplo en el que usaría en httpd.conflugar de una entrada vhost sería para una regla de redireccionamiento global o reescritura, por ejemplo. Otros tidbits: en general, debe dejarlo apache2.confsolo y asegurarse de configurar un esquema de nomenclatura coherente para vhosts en el sites-availabledirectorio.

Sam Halicke
fuente
Gran resumen! Mucho más claro y conciso que el que estaba trabajando. +1.
Steven lunes
2
Los sitios disponibles proporcionan una buena modularización de la configuración. Le permite centrarse fácilmente en la configuración de un solo sitio. También hace que sea mucho más fácil comparar sitios en un servidor o mover o replicar un sitio entre servidores.
BillThor
+1. Cuando necesite mantener estas configuraciones, vaya a 'sitios habilitados' en lugar de 'sitios disponibles' y acceda a ellos directamente desde allí. De esta manera, siempre podrá determinar y acceder a las configuraciones de sitio utilizadas actualmente.
Ross
9

La ubicación y organización de los archivos de configuración es configurable y puede cambiar entre versiones principales o entre distribuciones.

Apache Wiki tiene una práctica guía para los nombres y ubicaciones de los archivos de configuración.

Debido a que los archivos de configuración pueden contener includedirectivas, partes de la configuración se pueden separar en archivos más pequeños. Dado que un archivo de configuración estándar de Apache contiene muchos comentarios y muchos elementos estándar, tiene sentido separar las partes que es más probable que cambie.

El nombre del archivo de configuración principal se puede cambiar en el momento de la compilación y en versiones recientes ha cambiado de httpd.confaapache2.conf

Con los años también ha habido una evolución en la organización de los archivos de configuración incluidos.

Por ejemplo, instalé Apache2 en un sistema basado en Ubuntu usando apt-get install apache2: aquí están los archivos incluidos

/etc/apache2$ ls
apache2.conf  envvars     mods-available  ports.conf       sites-enabled
conf.d        httpd.conf  mods-enabled    sites-available

/etc/apache2$ grep ^Include apache2.conf
Include /etc/apache2/mods-enabled/*.load
Include /etc/apache2/mods-enabled/*.conf
Include /etc/apache2/httpd.conf
Include /etc/apache2/ports.conf
Include /etc/apache2/conf.d/
Include /etc/apache2/sites-enabled/ 

/etc/apache2$ ls -l sites-enabled
total 0
lrwxrwxrwx 1 root root 26 Dec 26 12:30 000-default -> ../sites-available/default

Entonces, los pocos ajustes de configuración en los que probablemente esté más interesado ahora están /etc/apache2/sites-available/default.

Puedo ver que esto es consistente con la documentación de Ubuntu para Apache que recomiendo que leas primero. Si tiene otra documentación para versiones anteriores de Apache (u otras distribuciones), puede adaptar esa información para adaptarla a la forma en que se organizan las cosas en Ubuntu.

RedGrittyBrick
fuente
-2

El Apache en Linux se puede instalar de dos tipos. uno es por apt-get y otro descarga el archivo tar y el extracto ... Por lo tanto, en el proceso de apt-get los sitios se sirven desde la carpeta / etc / apache2 / sites habilitado ya que cada sitio que sirve al mundo exterior está configurado en estas carpetas por Ejemplo de archivos .conf 000-default.conf es un sitio predeterminado habilitado para mostrar trabajos de apache.

por lo tanto, al crear cualquier archivo .conf en sitios habilitados y dirigirlo a la ubicación del contenido, se sirve este sitio.

Por lo tanto, para agregar un nuevo sitio estático, debe crearse un nuevo archivo .conf en una carpeta habilitada para sitios con el nombre de ejemplo example.conf. y tiene que agregar las siguientes líneas en él

Webmaster ServerAdmin @ localhost DocumentRoot / var / www / html ErrorLog $ {APACHE_LOG_DIR} /error.log CustomLog $ {APACHE_LOG_DIR} /access.log combinado

Donde como, *: 80 indica "abierto al mundo a través del puerto 80" DocumentRoot / var / www / html indica "ruta del contenido del sitio"

Basutkar Karthik
fuente
Esta mal y engañoso. Puede crear sus archivos en sitios disponibles para que las herramientas (recomendadas) como a2ensite puedan funcionar. Por lo general, vincula estos archivos conf mediante a2ensite en sitios habilitados. apt-get no tiene nada que ver con la configuración de sus sitios.
HörmannHH