Cómo configurar Apache Hosts virtuales en CentOS 7

Hoy repasaremos cómo configurar Apache hosts virtuales en un servidor CentOS 7 VPS o servidor dedicado. Si aloja sitios web, es probable que esté alojando más de uno. Si es así, saber cómo y por qué funcionan estos hosts virtuales debería permitirle comprender mejor por qué son necesarios. Por defecto, Apache puede alojar solo una raíz de documento para todas las solicitudes, lo que probablemente no sea lo que desea que suceda.

Podemos usar bloques VirtualHost para traducir dominios con nombre a sus raíces de documentos apropiadas, con nuevas configuraciones por bloque según sea necesario. Pero, ¿qué entra en un VirtualHost válido? ¿Dónde se debe almacenar?

Comprobación previa al vuelo

Para este artículo, usaremos un VPS CentOS 7 administrado por núcleo, que viene con una instalación limpia de Apache 2.4. Las instrucciones serán similares para CentOS 6 y también para servidores CentOS 7 no administrados, con el mismo Apache versión. Estamos SSH’d a nuestro servidor como usuario raíz.

Paso 1: Configurar Apache

Apache se configurará para albergar varios sitios desde el principio, por lo que no hay mucho que hacer aquí. Históricamente (es decir, en Apache 2.2), NameVirtualHost era necesario decir Apache que queríamos usar bloques de Virtual Host para alojar varios sitios. Dado que esta es una opción frecuente, ahora está activada de forma predeterminada en Apache 2.4, por lo que no tenemos que hacer ninguna configuración adicional. Pero queremos asegurarnos de que Apache está habilitado y se iniciará en el arranque.

systemctl enable httpd
systemctl start httpd

Estos dos comandos no deberían tener salida. Si tienen salida, hubo una advertencia o un error, cuyos detalles puede ver ejecutando:

systemctl status httpd

Apache ¡ya está funcionando y listo para albergar sitios!

Paso 2: agregar raíces de documentos

Ahora necesitamos algunos dominios para agregar Apache. Configuremos dos nuevas carpetas raíz de documentos, una en /var/www/domain.com/ y otra en /var/www/domain.net.

mkdir -p /var/www/domain.net
mkdir -p /var/www/domain.com

Ahora, puede comenzar a agregar contenido único a cada carpeta. Agregar un archivo index.html básico que diga qué dominio está cargando, ya que esto nos ayudará a verificar nuestro trabajo más adelante.

mkdir -p /var/www/domain.net
mkdir -p /var/www/domain.com

Si ha asegurado Apache para ejecutarse con un usuario diferente, debe actualizar la propiedad y los permisos. De lo contrario, Apache se ejecutará como root con la propiedad del archivo raíz.

Paso 3: agregar archivos de host virtual

Ahora que tenemos sitios para hospedar, debemos decirles Apache a cerca de ellos. Haremos un nuevo archivo para cada dominio, de modo que podamos habilitar o deshabilitar (o agregar y eliminar) más adelante. Escriba lo siguiente en un archivo en /etc/httpd/conf.d/domain.com.conf:

Desglosemos estas líneas.

La primera línea abre nuestro bloque VirtualHost y define en qué dirección IP y puerto escucharemos esta directiva. El asterisco identifica todas las direcciones IP en el servidor y el puerto 80 como el puerto no SSL, ya que aún no tenemos un SSL.

Las únicas dos líneas que debe tener en un bloque VirtualHost son ServerName y DocumentRoot. Estos dicen Apache qué solicitudes de dominio entrante escuchar y qué carpeta atender esas solicitudes.

ServerAlias ​​puede describir otros dominios que deberían servir a la misma raíz del documento, lo que puede ser útil, por ejemplo, en una instalación multisitio de WordPress.

La línea ErrorLog dice Apache dónde almacenar los errores relacionados con la carga de este dominio. Un solo archivo único puede separar registros por dominio, como dominio.com.error.log.

CustomLog con la opción ‘combinada’ registrará todas las solicitudes de acceso para este dominio. Este registro también es especialmente útil para solucionar problemas que ocurren cuando se realiza una solicitud. Además, esto puede ser muy útil para realizar un seguimiento de las direcciones IP que acceden a su sitio.

Otras opciones de host virtual

Hay otras líneas útiles que podría agregar a su bloque VirtualHost:

  • ServerAdmin declara la dirección de correo electrónico del webmaster y se proporciona a los visitantes si se encuentra un error. Aquí también se pueden configurar otras opciones; Al igual que en un archivo .htaccess, podemos desactivar las páginas de índice o los enlaces simbólicos.
  • RewriteEngine se puede habilitar en un VirtualHost
  • Además, otras condiciones y reglas para reescrituras.

Casi cualquier cosa que pueda poner en un archivo .htaccess también puede ir en un archivo de configuración de VirtualHost. Ahora que tenemos un VirtualHost para dominio.com, cree otro para dominio.net de la misma manera.

Paso 4: probar y reiniciar Apache

Una vez que se escriben los archivos, podemos ejecutar una prueba de configuración:

httpd -t

Si no se ven problemas, tsu mando volverá la siguiente salida.

Syntax OK

ISi hay problemas, el comando httpd debe decirnos qué línea, así como qué archivo causó el problema. Ahora podemos recargar la configuración en Apache.

systemctl reload httpd

Nuevamente, si esa recarga es exitosa, este comando no tendrá salida. Podemos confirmar que cargamos los VirtualHosts ejecutando:

[email protected] [~]# httpd -S
 VirtualHost configuration:
 127.0.0.1:80  host.server.com (/etc/apache2/conf/httpd.conf:305)
 127.0.0.1:443 host.server.com (/etc/apache2/conf/httpd.conf:3726)
 67.227.197.126:80  is a NameVirtualHost 
default server host.server.com (/etc/apache2/conf/httpd.conf:327)
port 80 namevhost host.server.com (/etc/apache2/conf/httpd.conf:327)
port 80 namevhost domain.com (/etc/apache2/conf/httpd.conf:390)
            alias mail.domain.com
            alias www.domain.com

La salida de este comando mostrará ApacheLa configuración actual en ejecución, incluidos los bloques VirtualHost que están cargados.

Debería ver dos entradas que dicen ‘*:80’ al comienzo de la línea, que serán dominio.com y dominio.net. También verá el archivo de configuración desde el que se cargó VirtualHost, entre paréntesis.

Si configuró las entradas DNS para los dominios, ahora puede visitar los dominios en su navegador y verá los dos archivos index.html que escribimos anteriormente. Si aún no tiene DNS configurado, puede probar usando la modificación de archivos de hosts en su estación de trabajo.

¡Finalizado! Ahora que nuestros hosts virtuales están listos y funcionando, podemos continuar configurando nuestros sitios web, asegurando nuestro servidor o configurando SSL para los dominios recién instalados.

¡Estamos aquí para ayudar!

¿Tienes otros pensamientos o preocupaciones? Si es así, el equipo de soporte de Liquidweb puede ayudarlo. Simplemente abra un ticket con nosotros hoy en [email protected], llámenos al 1-800-580-4985 o escríbanos a través de un chat para hablar con uno de nuestros administradores de soporte de nivel 3 hoy!

Related Posts