Configurar Hosts de Apache en CentOS 7
Introducción
El servidor web Apache es la forma más popular del contenido web en Internet. Sirve más de la mitad de todos los sitios web activos de Internet, y es extremadamente potente y flexible.
Apache analiza su funcionalidad y componentes en unidades individuales que pueden personalizarse y configurarse independientemente. La unidad básica que describe un sitio o dominio individual se denomina host . Los Hosts permiten que un servidor hospede múltiples dominios o interfaces utilizando un sistema de coincidencia. Esto es relevante para cualquier persona que busque alojar más de un sitio fuera de un solo servidor.
Cada dominio que esté configurado dirigirá al visitante a un directorio específico que contenga la información de ese sitio, sin indicar que el mismo servidor también es responsable de otros sitios. Este esquema es ampliable sin ningún límite de software, siempre y cuando su servidor puede manejar el tráfico que atraen a todos los sitios.
En este tutorial, vamos a visualizar a través de la configuración de los Hosts de Apache en CentOS 7. Durante este proceso, aprenderá a servir diferentes contenidos a diferentes visitantes según los dominios que estén solicitando.
Prerrequisistos
Antes de comenzar con este tutorial, hay algunos pasos que deben completarse primero.
Necesitará tener acceso a un servidor CentOS 7 con un usuario no root que tenga privilegios de sudo
. Si aún no lo ha configurado, puede ejecutar la configuración del servidor inicial de CentOS 7 para crear esta cuenta.
También necesitará instalar Apache para configurar Hosts para él. Si aún no lo ha hecho, puede utilizar yum
para instalar Apache a través de los repositorios de software predeterminados de CentOS:
sudo yum -y install httpd
A continuación, habilite Apache como un servicio CentOS para que se inicie automáticamente después de un reinicio:
sudo systemctl enable httpd.service
Una vez completados estos pasos, inicie sesión como su cuenta de usuario no root a través de SSH y continúe con el tutorial.
Nota: La configuración de ejemplo de este tutorial hará que un host sea example.com
y otro example2.com
. Estos se harán referencia a lo largo del tutorial.
Si no tiene ningún dominio real para agilizar, le mostraremos cómo probar su configuración de host con valores ficticios al final del tutorial.
Paso 1. Crear la Estructura de Directorios
Primero, necesitamos hacer una estructura de directorio que contenga los datos del sitio para servir a los visitantes.
Nuestra raíz de documento (el directorio de nivel superior que Apache busca para encontrar contenido para servir) se establecerá en directorios individuales en el directorio /var/www
. Crearemos un directorio aquí para cada uno de los hosts virtuales que planeamos hacer.
Dentro de cada uno de estos directorios, crearemos un directorio public_html
que contendrá nuestros archivos reales. Esto nos da cierta flexibilidad en nuestro hosting.
Podemos hacer estos directorios usando el comando mkdir
(con un indicador -p
que nos permite crear una carpeta con una carpeta anidada dentro de ella):
sudo mkdir -p /var/www/example.com/public_html
sudo mkdir -p /var/www/example2.com/public_html
Recuerde que las porciones en rojo representan los nombres de dominio que queremos servir en nuestro servidor.
Paso 2. Permisos de Subvención
Ahora tenemos la estructura de directorios para nuestros archivos, pero son propiedad de nuestro usuario root
. Si queremos que nuestro usuario regular pueda modificar archivos en nuestros directorios web, podemos cambiar la propiedad con chown
:
sudo chown -R $USER:$USER /var/www/example.com/public_html
sudo chown -R $USER:$USER /var/www/example2.com/public_html
La variable $USER
tomará el valor del usuario que ha iniciado la sesión como cuando envía el comando. Al hacer esto, nuestro usuario regular ahora posee los subdirectorios public_html
donde almacenaremos nuestro contenido.
También debemos modificar un poco nuestros permisos para garantizar que se permita el acceso de lectura al directorio web en general para todos los archivos y carpetas que se encuentran dentro, y así las páginas se pueden publicar correctamente:
sudo chmod -R 755 /var/www
Su servidor web debe tener los permisos que necesita para servir el contenido, y su usuario debe ser capaz de crear contenido dentro de las carpetas apropiadas.
Paso 3. Crear Páginas de Demostración para Cada Host
Ahora que tenemos nuestra estructura de directorios en su lugar, vamos a crear algunos contenidos para servir.
Porque esto es solo para demostración y pruebas, nuestras páginas serán muy simples. Simplemente vamos a crear una página index.html
para cada sitio que identifique ese dominio específico.
Comencemos con example.com
. Podemos abrir un archivo index.html
en nuestro editor escribiendo:
nano /var/www/example.com/public_html/index.html
En este archivo, cree un documento HTML simple que indique el sitio al que está conectada la página. Para este tutorial, el archivo para nuestro primer dominio tendrá este aspecto:
<html>
<head>
<title>Welcome to Example.com!</title>
</head>
<body>
<h1>Success! The example.com virtual host is working!</h1>
</body>
</html>
Ahora, guarde y cierre el archivo cuando haya terminado.
Podemos copiar este archivo para usarlo como plantilla para index.html
nuestro segundo sitio escribiendo:
cp /var/www/example.com/public_html/index.html /var/www/example2.com/public_html/index.html
Ahora vamos a abrir ese archivo y modificar las partes relevantes de la información:
nano /var/www/example2.com/public_html/index.html
<html>
<head>
<title>Welcome to Example2.com!</title>
</head>
<body>
<h1>Success! The example2.com virtual host is working!</h1>
</body>
</html>
Guarde y cierre este archivo también. Luego tiene las páginas necesarias para probar la configuración del host.
Paso 4. Crear Nuevos archivos de Host
Los archivos de host son los que especifican la configuración de nuestros sitios independientes y dictan cómo el servidor web Apache responderá a varias peticiones de dominio.
Para empezar, tendremos que configurar el directorio en el que nuestros hosts serán almacenados, así como el directorio que le dice a Apache que un host está listo para servir a los visitantes. El directorio sites-available
guardará todos nuestros archivos de host, mientras que el directorio sites-enabled
llevará a cabo enlaces simbólicos a los hosts que queremos publicar. Podremos hacer ambos directorios escribiendo:
sudo mkdir /etc/httpd/sites-available
sudo mkdir /etc/httpd/sites-enabled
Nota: Este diseño de directorio fue introducido por los colaboradores de Debian, pero aquí lo incluimos para mayor flexibilidad con la administración de nuestros hosts (ya que es más fácil activar y desactivar temporalmente los hosts de esta manera).
A continuación, debemos decirle a Apache que busque hosts en el directorio sites-enabled
. Para lograr esto, editaremos el archivo de configuración principal de Apache y agregamos una línea que declara un directorio opcional para archivos de configuración adicionales:
sudo nano /etc/httpd/conf/httpd.conf
Add this line to the end of the file:
IncludeOptional sites-enabled/*.conf
Guarde y cierre el archivo cuando haya terminado de agregar esa línea. Ahora estamos listos para crear nuestro primer archivo de host.
Crear el Primer Archivo de Host
Comience abriendo el nuevo archivo en su editor con privilegios de root:
sudo nano /etc/httpd/sites-available/example.com.conf
Nota: Debido a las configuraciones que hemos descrito, todos los archivos de host deben terminar en .conf
.
En primer lugar, comience por hacer un par de etiquetas que designan el contenido como un host que escucha en el puerto 80 (el puerto HTTP predeterminado):
<VirtualHost *:80>
</VirtualHost>
A continuación, haremos un alias de servidor para señalar a example.com , de modo que las solicitudes de www.example.com y example.com entreguen el mismo contenido:
<VirtualHost *:80>
ServerName www.example.com
ServerAlias example.com
</VirtualHost>
Nota: Para que la versión "www"
del dominio funcione correctamente, la configuración DNS del dominio necesitará un registro A o CNAME que señale las peticiones "www"
a la dirección IP del servidor. También funcionará un registro comodín ( *
).
Finalmente, terminaremos señalando el directorio root de nuestros documentos web accesibles al público. También le diremos a Apache dónde almacenar los registros de error y de solicitud para este sitio en particular:
<VirtualHost *:80>
ServerName www.example.com
ServerAlias example.com
DocumentRoot /var/www/example.com/public_html
ErrorLog /var/www/example.com/error.log
CustomLog /var/www/example.com/requests.log combined
</VirtualHost>
Cuando haya terminado de escribir estos elementos, puede guardar y cerrar el archivo.
Copiar el Primer Host y Personalizarlo para Dominios Adicionales
Ahora que tenemos nuestro primer archivo de host establecido, podemos crear nuestro segundo copiando ese archivo y ajustándolo según sea necesario.
Comience por copiarlo con cp
:
sudo cp /etc/httpd/sites-available/example.com.conf /etc/httpd/sites-available/example2.com.conf
Abra el nuevo archivo con privilegios de root en su editor de texto:
sudo nano /etc/httpd/sites-available/example2.com.conf
Ahora debe modificar todas las piezas de información para hacer referencia a su segundo dominio. Cuando haya terminado, su segundo archivo de host puede ser algo como esto:
<VirtualHost *:80>
ServerName www.example2.com
DocumentRoot /var/www/example2.com/public_html
ServerAlias example2.com
ErrorLog /var/www/example2.com/error.log
CustomLog /var/www/example2.com/requests.log combined
</VirtualHost>
Cuando haya terminado de realizar estos cambios, puede guardar y cerrar el archivo.
Paso 5. Habilite los Nuevos Archivos de Host
Ahora que hemos creado nuestros archivos de host, debemos habilitarlos para que Apache sepa que los puede servir a los visitantes. Para ello, podemos crear un enlace simbólico para cada host en el directorio sites-enabled
:
sudo ln -s /etc/httpd/sites-available/example.com.conf /etc/httpd/sites-enabled/example.com.conf
sudo ln -s /etc/httpd/sites-available/example2.com.conf /etc/httpd/sites-enabled/example2.com.conf
Cuando haya terminado, reinicie Apache para que estos cambios surtan efecto:
sudo apachectl restart
Paso 6. Configurar el Archivo de Hosts Locales (opcional)
Si ha estado utilizando dominios de ejemplo en lugar de dominios reales para probar este procedimiento, puede probar la funcionalidad de sus hosts modificando temporalmente el archivo de hosts
en su equipo local. Esto interceptará cualquier solicitud de los dominios que haya configurado y los señale a su servidor, tal como lo haría el sistema DNS si estuviera utilizando dominios registrados. Esto sólo funcionará desde su computadora, sin embargo, y es simplemente útil para propósitos de prueba.
Nota: Asegúrese de que está operando en su computadora local para estos pasos y no en su servidor. Necesitará tener acceso a las credenciales administrativas para ese equipo.
Si está en una computadora Mac o Linux, edite el archivo hosts
local con privilegios administrativos escribiendo:
sudo nano /etc/hosts
Si está en un sistema operativo Windows, puede encontrar instrucciones sobre cómo modificar el archivo de hosts aquí .
Los detalles que necesita agregar son la dirección IP pública de su servidor seguido por el dominio que desea utilizar para llegar a ese servidor:
127.0.0.1 localhost
127.0.1.1 guest-desktop
server_ip_address example.com
server_ip_address example2.com
This will direct any requests for example.com
and example2.com
on our local computer and send them to our server at server_ip_address
.
Paso 7. Prueba tus Resultados
Ahora que tiene sus hosts configurados, puede probar su configuración fácilmente visitando los dominios que configuró en su navegador web:
http://example.com
Debería ver una página similar a esta:
Del mismo modo, si visita sus otros dominios, verá los archivos que creó para ellos.
Si todos los sitios que ha configurado funcionan correctamente, entonces ha configurado correctamente sus nuevos hosts Apache en el mismo servidor CentOS.
Si ha ajustado el archivo "hosts"
su equipo doméstico, puede que desee eliminar las líneas que agregó ahora que haya verificado que su configuración funciona. Esto evitará que el archivo de hosts se llene con entradas que no son realmente necesarias.
Conclusión
Ahora debe tener un solo servidor CentOS 7 que maneje múltiples sitios con dominios separados. Puede expandir este proceso siguiendo los pasos descritos anteriormente para crear hosts adicionales. No hay límite de software en el número de nombres de dominio que Apache puede manejar, así que siéntete libre de hacer tantos como tu servidor sea capaz de manejar.
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