Configurar el servidor Web Apache en un Ubuntu o Debian

Actualizado el . Posteado en Blog. Visitado 12775 veces.

                                Configuracion apache en servior ubuntu o debian

¿Qué es Apache?

Apache es el servidor web más popular en Internet, esté se utiliza para servir a más de la mitad de todos los sitios web activos.

Aunque hay muchos servidores web viables que servirán a su contenido, es útil entender cómo funciona Apache debido a su omnipresencia.

En el presente artículo, analizaremos algunos archivos de configuración generales y opciones que se pueden controlar dentro de ellos. Este artículo seguirá el diseño Ubuntu / Debian de los archivos Apache, que es diferente de cómo otras distribuciones construyen a la jerarquía de configuración.

Paso 1. Instalar Apache en Ubuntu o Debian

Si aún no tiene instalado Apache, puede hacerlo ahora enviando los siguientes comandos:

sudo apt-get update
sudo apt-get install apache2

Esto es todo lo que se necesita para tener un servidor web en funcionamiento. Si visita la dirección IP de su servidor en un navegador web, obtendrá la página de index predeterminada de Apache:

your_domain_name_or_ip_address
It works!
This is the default web page for this server.
The web server software is running but no content has been added, yet.
 

La Jerarquía de Archivos Apache en Ubuntu y Debian

En Ubuntu y Debian, Apache mantiene sus archivos de configuración principales dentro de la carpeta "/ etc / apache2":

cd /etc/apache2
ls -F
apache2.conf  envvars     magic            mods-enabled/  sites-available/
conf.d/       httpd.conf  mods-available/  ports.conf     sites-enabled/

Hay un gran número de archivos de texto sin formato y algunos subdirectorios en este directorio. Estos son algunos de los lugares más útiles para estar familiarizado con:

  • Apache2.conf : Este es el archivo de configuración principal del servidor. Casi toda la configuración se puede hacer desde este archivo, aunque se recomienda utilizar archivos separados, designados para mayor su simplicidad, además este archivo configurará los valores predeterminados y será el punto central de acceso para que el servidor pueda leer los detalles de la configuración.
  • Ports.conf : Este archivo se utiliza para especificar los puertos en los que los hosts virtuales deben escuchar, allí puede asegúrese de comprobar que este archivo es correcto si está configurando SSL.
  • Conf.d / : Este directorio se utiliza para controlar aspectos específicos de la configuración de Apache, por ejemplo, a menudo se utiliza para definir la configuración SSL y las opciones de seguridad predeterminadas.
  • Sites-available / : Este directorio contiene todos los archivos de host virtual que definen diferentes sitios web. Estos establecerán qué contenido sirve y para qué solicitudes, tratándose de configuraciones disponibles, no de configuraciones activas.
  • Sites-enabled / : Este directorio establece qué definiciones de host virtuales se están utilizando realmente. Normalmente, este directorio consiste en enlaces simbólicos a archivos definidos en el directorio "sitios disponibles".
  • Mods- [enabled, available] / : Estos directorios son similares en función de los directorios de sitios, pero definen módulos que se pueden cargar opcionalmente en su lugar.

Como puede ver, la configuración de Apache no solo tiene lugar en un único archivo monolítico, sino que pasa a través de un diseño modular en el que se pueden agregar y modificar nuevos archivos según sea necesario.

 

Observando el Archivo Apache2.conf

Los detalles de configuración principales de su servidor Apache se mantienen en el archivo "/etc/apache2/apache2.conf".

Este archivo se divide en tres secciones principales: configuración para el proceso global del servidor Apache, configuración para el servidor predeterminado y configuración de hosts virtuales.

En Ubuntu y Debian, la mayoría del archivo es para definiciones globales, y la configuración del servidor predeterminado y hosts virtuales se maneja al final, usando la directiva "Include ...".

La directiva "Include" le permitirá a Apache leer otros archivos de configuración en el archivo actual en la ubicación en la que aparece la sentencia. El resultado es que Apache genera dinámicamente un archivo de configuración global al inicio.

Si se desplaza hasta la parte inferior del archivo, hay varias declaraciones de "Include" diferentes. Estas definiciones de módulo de carga, el documento ports.conf, los archivos de configuración específicos en el directorio "conf.d /" y, por último, las definiciones de Virtual Host en el directorio "sites-enabled /".

Nos enfocaremos en la primera parte del archivo para aprender cómo define Apache sus configuraciones globales.

 

Sección de configuración global

Esta sección se utiliza para configurar algunas opciones que controlan cómo funciona Apache en su conjunto.

Hay algunas opciones interesantes que puede que desee modificar en esta sección:

Timeout

De forma predeterminada, este parámetro se establece en "300", lo que significa que el servidor tiene un máximo de 300 segundos para cumplir cada solicitud.

Esto es probablemente demasiado alto para la mayoría de las configuraciones y puede ser eliminado con seguridad entre 30 y 60 segundos.

KeepAlive

Esta opción, si está establecida en "On", permitirá que cada conexión permanezca abierta para manejar múltiples solicitudes del mismo cliente.

Si está en "Off", cada solicitud tendrá que establecer una nueva conexión, lo que puede resultar en gastos generales significativos dependiendo de su configuración y situación de tráfico.

MaxKeepAliveRequests

Esto controla cuántas solicitudes separadas cada conexión manejará antes de morir. Mantener este número alto le permitirá a Apache donar contenido a cada cliente de manera más efectiva.

Establecer este valor en 0 le permitirá a Apache servir una cantidad ilimitada de solicitudes para cada conexión.

KeepAliveTimeout

Esta configuración especifica controla cuánto tiempo debe esperar la siguiente solicitud después de finalizar la última. Si se alcanza el umbral de tiempo de espera, la conexión morirá.

Esto sólo significa que la próxima vez que se solicite el contenido, el servidor establecerá una nueva conexión para manejar la solicitud del contenido que compone la página que el cliente está visitando.

MPM Configuration

La siguiente sección especifica la configuración de las opciones MPM (Multi-Processing Module). Puede hacer referencia cruzada a la sección en la que se compiló la instalación de Apache saliendo al terminal y escribiendo:

apache2 -l
Compiled in modules:
  core.c
  mod_log_config.c
  mod_logio.c
  prefork.c
  http_core.c
  mod_so.c

Como se puede ver, en este servidor, "prefork.c" es un módulo que fue compilado y también está en el archivo "apache2.conf". Su instalación puede tener varios a elegir, pero sólo uno puede ser seleccionado.

Puede ajustar la configuración del prefork MPM en la sección correspondiente.

 

Paso 2. Exploración del Archivo de host virtual predeterminado

La declaración de host virtual predeterminada se puede encontrar en un archivo denominado "predeterminado" en el directorio "sitios disponibles".

Podemos aprender sobre el formato general de un archivo de Virtual Host examinando este archivo. Abra el archivo con el siguiente comando:

sudo nano /etc/apache2/sites-available/default
<VirtualHost *:80>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>
. . .

El host virtual predeterminado está configurado para manejar cualquier solicitud en el puerto 80, el puerto http estándar. Esto se define en el encabezado de la declaración donde dice "*: 80", significando el puerto 80 en cualquier interfaz.

Esto no significa que necesariamente tratará cada solicitud al servidor en este puerto, sin embargo, Apache utiliza la definición de host virtual más específica que coincide con la solicitud. Esto significa que si hubiera una definición más específica, podría reemplazar esta definición.

Configuración de nivel superior de host virtual

Estas opciones se establecen dentro de la definición de Virtual Host fuera de cualquier otra subdeclaración de nivel inferior, estas se aplican a todo el anfitrión virtual.

La opción "ServerAdmin" especifica un correo electrónico de contacto que debe utilizarse cuando hay problemas con el servidor.

Esto se puede insertar en una página de error si tiene "ServerSignature" establecido en "Email" en el archivo "/etc/apache2/conf.d/security", así que asegúrese de estar dispuesto a recibir el correo si ajusta esa configuración .

Si estábamos usando esto como una plantilla para otras definiciones de Virtual Host, querríamos agregar una definición "ServerName" que especifica el nombre de dominio o la dirección IP que debe manejar esta solicitud. Esta es la opción que agregaría especificidad al host virtual, lo que le permite superar la definición predeterminada y si coincide con el valor ServerName.

También puede hacer que el host virtual se aplique a más de un nombre utilizando la definición "ServerAlias", en donde proporciona rutas alternativas para llegar al mismo contenido. Un buen caso de uso para esto es agregar el mismo dominio, precedido por "www".

La opción "DocumentRoot" especifica dónde se ubicará el contenido que se solicita para este host virtual. El host virtual predeterminado está configurado para servir contenido fuera del directorio "/ var / www" de Ubuntu.

Definiciones de directorio

Dentro de la definición de Host Virtual, hay definiciones de cómo el servidor maneja diferentes directorios dentro del sistema de archivos. Apache aplicará todas estas direcciones en orden desde el más corto al más largo, por lo que hay una vez más una oportunidad para anular las opciones anteriores.

La primera definición de directorio aplica reglas para el directorio "/", o raíz. Esto proporcionará la configuración de línea de base para su host virtual, ya que se aplica a todos los archivos que se sirven en el sistema.

De forma predeterminada, Ubuntu no establece ninguna restricción de acceso al sistema de archivos. Apache recomienda que añada algunas restricciones de acceso predeterminadas. Puede modificarlo de la siguiente manera:

<Directory />
	Options FollowSymLinks
	AllowOverride None
	Order Deny,Allow
	Deny from All
</Directory>

Esto denegará el acceso a todo el contenido a menos que se especifique lo contrario en las definiciones de directorio posteriores.

La siguiente definición de directorio es para la raíz del documento, por lo que especifica la opción "allow from all" que reemplaza la opción "/" para este directorio.

La opción "AllowOverride" se utiliza para decidir si un archivo ".htaccess" puede anular la configuración si se coloca en el directorio de contenido. Esto no está permitido por defecto, pero puede ser útil para habilitarlo en una variedad de circunstancias.

Alias ​​y Sentencias de ScriptAlias

Las definiciones de directorio son a veces precedidas por las sentencias "Alias" o "ScriptAlias". Alias ​​asigna una ruta URL a una ruta de directorio.

ScriptAlias ​​funciona de la misma manera, pero se utiliza para definir directorios que tendrán componentes ejecutables en ellos.

Por ejemplo, esta línea en un host virtual que maneja la solicitud de "example.com" permitiría acceder al contenido de "/ path / to / content /" navegando a "example.com/content/":

Alias /content/ /path/to/content/

Siguiendo el alias, debe recordar definir el directorio con privilegios de acceso como se discutió en la sección anterior.

 

Paso 3. Habilitación de sitios y Módulos en Apache

Una vez que tenga un archivo de Host Virtual que cumpla con sus requisitos, puede utilizar las herramientas incluidas con Apache para realizar la transición a sitios en vivo.

Para crear automáticamente un enlace simbólico en el directorio "sitios habilitados" a un archivo existente en el directorio "sitios disponibles", emita el siguiente comando:

sudo a2ensite virtual_host_file_name

Después de habilitar un sitio, emita el siguiente comando para indicarle a Apache que vuelva a leer sus archivos de configuración, permitiendo que el cambio se propague:

sudo service apache2 reload

También hay un comando complementario para deshabilitar un host virtual. Funciona eliminando el enlace simbólico del directorio "habilitado para sitios":

sudo a2dissite virtual_host_file_name

Una vez más, vuelva a cargar la configuración para que este cambio ocurra:

sudo service apache2 reload

Los módulos se pueden activar o desactivar mediante los comandos "a2enmod" y "a2dismod", respectivamente. Funcionan de la misma manera que las versiones "sitio" de estos comandos.

Recuerde recargar los cambios de configuración después de que los módulos también estén habilitados o desactivados.

 

Conclusión

Hemos revisado algunos archivos básicos de configuración de Apache. Apache es versátil y muy modular, por lo que las necesidades de configuración serán diferentes dependiendo de su configuración.

Debe tener una buena comprensión de lo que los archivos de configuración principal se utilizan para y cómo interactúan entre sí. Si necesita saber acerca de las opciones de configuración específicas, los archivos proporcionados son bien comentados.

Esperemos que los archivos de configuración no sean tan intimidantes ahora, y se sienten más cómodos experimentando y modificando según sus necesidades.

 

Fuente. Artículo traducido y con muy ligeras modificaciones de: https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-debian

licencia creative common
Este trabajo está licenciado por Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
Sobre el Autor
Pipe Peña
Author: Pipe Peña
Soy un loco enamorado de la vida. Licenciado en Ciencias Sociales y Humanas, amante de la informática y la astrofísica. Me gusta crear e investigar proyectos que enriquezcan la construcción y desarrollo del conocimiento individual y colectivo. Me encantan los videojuegos, el cine, la química, matemáticas, la física cuántica y la música, en donde actualmente soy compositor. Me baso en la idea que toma Baruch Spinoza sobre Dios.

Imprimir


Comentar este artículo en los foros (0 respuestas).