Ingresar  \/ 
x
 Use Facebook account  Use Google account  Use Microsoft account  Use LinkedIn account
o
x

Configurar Hosts de Apache en CentOS 7

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:

host-en-centos-pantallazo-de-configuracion

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

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.

ImprimirCorreo electrónico


Comentar este artículo en los foros (1 respuestas).
Publicado: 6 años 4 meses ago por Fututel #376
Avatar de Fututel
Javier
quisiera saber como puedo compartir internet de maquina fisica a mi servidor virtual en centos 7
buenas tardes
16:44:40
Adesh Johnson
Pero están en máquinas físicas distintas?
No te entiendo muy bien la configuración.
16:47:10
Javier
jeje no soy muy bueno explicando pero ahi va: tengo una maquina fisica con centos 7 corriendo con intenet pero estoy utilizando un gestor de maquinas virtuales en el cual eh creado un servidor para backup y necesito tener internet en este servidor virtual
16:48:09
Adesh Johnson
Pero todo está dentro de un mismo equipo, verdad?
16:48:17
Javier
exacto
16:48:32
Adesh Johnson
Pero mira, necesito más info...
Qué gestor usas?
Qué tipo de máquina.
...máquina virtual.
System assistantVisitor has joined the chat!
16:49:20
Javier
estoy utilizando el virtual machine manager
1.4.1
16:50:04
Adesh Johnson
Éste?
virt-manager.org/
?
Es OpenVZ, virtualización completa.
???
O cuál?
16:50:37
Javier
si es ese
16:50:39
Adesh Johnson
Es que la manera de configurarlo dependerá del tipo de virtualización que hagas.
..que tengas lás máquinas virtuales.
El servidor virtual para backup qué tipo de servidor virtual es:
KVM?
Xen?
16:51:31
Javier
si es kvm
16:51:35
Adesh Johnson
LXC?
Ok.
16:51:44
Javier
y tengo un usuario en kvm
en fedora24
16:52:14
Adesh Johnson
Entonces básicamente debes configurar el servidor con KVM como si lo tuvieras conectado al internet directamente...
16:52:18
Javier
mi virtualizacion es en kvm
ehhh
16:52:43
Adesh Johnson
El servidor host (el principal, la máquina física) actúa como si fuera un switch (modo bridge).
Así que, configura tu servidor backup normalmente como si fuera una máquina completa
...una máquina física.
Qué sistema operativo?
16:53:54
Javier
ya lo ise ya lo tengo corriendo de esa manera
en centos 7
el servidor
como configuraria la red
16:54:32
Adesh Johnson
POr éso.
El host (el principal) es Centos 7.
Pero qué OS tiene el virtual?
16:55:04
Javier
lo mismo
es centos
16:55:12
Adesh Johnson
OK.
16:55:16
Javier
el virtual es centos 7
osea el servidorsito
16:55:42
Adesh Johnson
Entonces configuralo internamente como el otro, pero claro, con su IP correspondiente.
16:56:09
Javier
tendria que hacer un puente
16:56:22
Adesh Johnson
Debes asegurarte en el virtual manager que la interfaz bridge tenga asignado el puerto ethernet real.
Ningún puente.
Con tal que asegures que haya una interfaz bridge en el host ligado a la interfaz real, por ejemplo eth0.
Y le configuras la red a esa misma interfaz (p.e.: eth0) al servidor en KVM.
Javier.
16:58:45
Javier
esa es mi duda de como hacerlo
tengo dos interfaces
para una red externa
y una interna
16:59:24
Adesh Johnson
Hablemos de interfaz física o virtual.
Tienes 2 interfaces físicas?
16:59:37
Javier
virtual
17:01:55
Adesh Johnson
Mira. Básicamente...
lo que debes hacer para que funcione el asunto es:
1) Tienes una interfaz física, por ejemplo, eth0-
2) Conectas el host a este interfaz eth0.
3) Creas una interfaz virtual tipo bridge, por ejemplo br0, la cual ligas a la interfaz eth0. De esta manera, tu host actuará como si fuera un bridge para las máquinas virtuales dentro.
4) La máquina KVM le configuras la red en la eth0, como si lo estuvieras haciendo físicamente.
Debes asegurar que tu router físico te proveas las IPs.
Voy a documentar esta conversación en el foro.
Si necesitas más info, puedes postear allí SIN necesidad de registrarte.
:)
Espero te haya servido nuestra info.