GNU/Linux >> Tutoriales Linux >  >> Linux

Conceptos básicos de host virtual

Este artículo es una introducción a los conceptos básicos de vhost y servidor web. Un servidor web ejecuta software para procesar páginas web. Una vez que el tráfico web ha llegado al servidor, sigue los pasos para llegar al sitio web correcto. Si un servidor sirve contenido web, debe instalar un servidor web.

Verificar el estado del servidor web

Los servidores web más comunes que se ejecutan en Linux® son Apache®(httpd o apache2 ) y NGINX®. También puede tener Plesk®. Puede usar Plesk para administrar sus sitios web con un estilo más de apuntar y hacer clic en Windows®. Si instala Plesk, use el resto de este artículo para obtener una descripción general de vhosts porque necesita usar Plesk en lugar de la línea de comandos de Linux para realizar las tareas descritas aquí.

De forma predeterminada, los servidores web permiten el tráfico HTTP a través del puerto 80 y tráfico HTTPS (seguro) a través del puerto 443 .

Para encontrar el servidor web que se ejecuta en los puertos 80 y 443 , ingrese el siguiente comando:

# netstat -plnt | awk '$4 ~ /:(80|443)$/'
tcp6       0      0 :::80                   :::*                    LISTEN      2549/httpd
tcp6       0      0 :::443                  :::*                    LISTEN      2549/httpd

Para verificar el estado de un servidor web, ejecute uno de los comandos que se muestran en la siguiente tabla:

Tipo de servidor web Comando
httpd service httpd status
o
systemctl status httpd
apache2 service apache2 status
o
systemctl status apache2
nginx service nginx status
o
systemctl status nginx
Plask service psa status
o
systemctl status psa

Para verificar Plesk y ver qué servidor web se está ejecutando, ingrese el siguiente comando:

# service psa status; netstat -plnt | awk '$4 ~ /:(80|443)$/'

Verifique la configuración de los vhosts

Un servidor web (o un conjunto de servidores web) puede alojar varios sitios web mediante el uso de hosts virtuales (vhosts). Los host virtuales permiten que varios sitios web compartan recursos desde un servidor físico.

Los hosts virtuales pueden estar basados ​​en direcciones IP o en nombres. Los host virtuales basados ​​en direcciones IP asignan una dirección IP diferente a un sitio web y los host virtuales basados ​​en nombres asignan varios nombres de host a una única dirección IP. Vhosts realiza un seguimiento de los sitios web en un servidor web, especificando la configuración de cada sitio web.

Para verificar la configuración de vhosts en Apache, ingrese uno de los siguientes comandos:

# httpd -S

o

# apache2ctl -S
*:80                   example.com (/etc/httpd/vhost.d/example.com.conf:1)

Para leer el contenido de un archivo de configuración de vhost, ingrese el siguiente comando:

# cat /etc/httpd/vhost.d/example.com.conf 

Las entradas en el archivo de configuración de vhosts incluyen:

  • :80 o :443 :estas entradas especifican si el sitio web utiliza HTTP (80 ) o HTTPS (443 ).
  • Raíz del documento :La ruta del directorio de los archivos del sitio web. Esta suele ser la ubicación donde los desarrolladores necesitan acceso para cargar archivos.
  • Nombre del servidor :El nombre de dominio del sitio web.
  • Alias ​​del servidor :cualquier otro nombre de dominio de sitio web que desee redirigir a ServerName dominio. Usualmente usas dominios del tipo www.dominio , pero también puede utilizar otros dominios o subdominios.
  • Registro de errores :la ruta del directorio y el nombre de los registros de errores.
  • Puerto 443 :La configuración SSL. Comenta esta sección si el sitio web no tiene un certificado SSL válido.
  • Sitio HTTPS seguro :Las tres rutas de archivo SSL necesarias para el cifrado completo para convertirlo en un sitio HTTPS más seguro.

El siguiente ejemplo muestra un archivo de configuración de vhosts:

<VirtualHost *:80>
    DocumentRoot "/var/www/vhosts/example.com/httpdocs"
    ServerName "example.com"
    ServerAlias "www.example.com"
    <Directory /var/www/vhosts/example.com/httpdocs>
        AllowOverride All
        Options +FollowSymlinks
    </Directory>
 
    DirectoryIndex index.html index.php index.htm
 
    # Logging
    CustomLog /var/log/httpd/example.com-access_log combined
    ErrorLog /var/log/httpd/example.com-error_log
</VirtualHost>
 
#<VirtualHost *:443>
#    DocumentRoot "/var/www/vhosts/example.com/httpdocs"
#    ServerName "example.com"
#    ServerAlias "www.example.com"
#    <Directory /var/www/vhosts/example.com/httpdocs>
#        AllowOverride All
#        Options +FollowSymlinks
#    </Directory>
 
#    DirectoryIndex index.html index.php index.htm
 
#    # SSL Configuration
#    SSLEngine On
#    SSLCertificateFile /etc/httpd/conf/ssl.crt/2021-example.com.crt
#    SSLCACertificateFile /etc/httpd/conf/ssl.crt/2021-example.com.ca
#    SSLCertificateKeyFile /etc/httpd/conf/ssl.key/2021-example.com.key
#
#    # Logging
#    CustomLog /var/log/httpd/example.com-ssl_access_log combined
#    ErrorLog /var/log/httpd/example.com-ssl_error_log
#</VirtualHost>

Para copiar el archivo de configuración de un host virtual existente para crear uno nuevo, ingrese el siguiente comando:

# cat /OLD_DOMAIN.conf | sed 's/OLD_DOMAIN/NEW_DOMAIN/ig' >> /NEW_DOMAIN.conf

Edite el nuevo archivo de configuración de vhost según sea necesario. Por ejemplo, es posible que deba comentar la configuración que hace que el puerto 443 activo.

Para encontrar la ubicación de DocumentRoot en un archivo de configuración de vhost, ingrese el siguiente comando:

# grep Doc /etc/httpd/vhost.d/example.com.conf

DocumentRoot /var/www/vhosts/example.com

Crear un nuevo host virtual

Utilice las siguientes instrucciones para crear un nuevo host virtual:

  1. Si es posible, copie un host virtual existente para mantener una configuración coherente. Use un editor de texto, como vim , nano , sed , o awk , si necesita editarlo.

       # cat /OLD_DOMAIN.conf | sed 's/OLD_DOMAIN/NEW_DOMAIN/ig' >> /NEW_DOMAIN.conf
    
  2. Hacer un nuevo DocumentRoot directorio. El sistema realiza los logs de errores y personalizados automáticamente. Ejecute el siguiente comando:

    # mkdir -p /docroot
    
  3. Verifique que el servidor web no envíe ningún error:

    # httpd -t
    
  4. Realice un reinicio correcto en el servidor web para incorporar los cambios con una interrupción mínima en su entorno en vivo:

    # service httpd graceful
    
  5. El cambio más pequeño en un host virtual puede interrumpir todo su servidor web e impedir que brinde servicio a todos sus sitios web. Por ese motivo, utilice uno de los siguientes comandos para volver a comprobar el servidor web:

    Tipo de servidor web Comando
    httpd # httpd -t; service httpd status
    apache2 # apache2ctl -t; service apache2 status
    nginx # nginx -t; service nginx status

Comprobar y solucionar los cambios en la configuración de vhost

Para verificar errores en Apache, use cualquiera de los siguientes comandos:

# httpd -t

o

# apache2ctl -t

AH00558: httpd: Could not reliably determine the server's fully qualified
domain name, using 127.0.0.1. Set the 'ServerName' directive globally to
suppress this message
Syntax OK

Para verificar errores en NGINX, use el siguiente comando:

# nginx -t

AH00558: httpd: Could not reliably determine the server's fully qualified
domain name, using 127.0.0.1. Set the 'ServerName' directive globally to
suppress this message
Syntax OK

Nota :La cláusula No se pudo determinar de forma fiable es común, y no significa un error. Por lo general, puedes ignorarlo.

El siguiente ejemplo muestra un ejemplo de error:

# httpd -t
AH00112: Warning: DocumentRoot [/var/www/vhosts/example.com] does not exist
AH00558: httpd: Could not reliably determine the server's fully qualified
domain name, using 127.0.0.1. Set the 'ServerName' directive globally to
suppress this message
Syntax OK

Solucione este error creando un DocumentRoot directorio:

# mkdir -p /var/www/vhosts/example.com

Otro ejemplo de error:

# httpd -t
AH00526: Syntax error on line 5 of /etc/httpd/vhost.d/example.com.conf:
Invalid command 'oops', perhaps misspelled or defined by a module not
included in the server configuration

La palabra ups está en el archivo vhost y Apache no sabe cómo interpretarlo. Puede usar vim , nano , u otro editor de texto para corregir el error.

Reiniciar un servidor web

El servidor web reconoce los cambios realizados en la configuración de vhosts después de un reinicio. Los subprocesos actuales pueden finalizar antes de que ocurra el reinicio con elegante opción.

Para hacer un reinicio correcto en Apache, ingrese uno de los siguientes comandos:

# service httpd graceful

o

# service apache2 graceful

A veces, el cambio más pequeño en un host virtual puede interrumpir todo su servidor web e impedir que sirva todos sus sitios web. Así que haga una copia de seguridad de su trabajo y, después de hacer un reinicio correcto para reconocer los cambios, asegúrese de que su servidor web siga funcionando sin errores.

Las siguientes son las mejores prácticas para evitar interrupciones del servicio después de cambiar la configuración de vhosts:

  • Hacer una copia de seguridad del servidor web.
  • Realice los cambios.
  • Haz un reinicio correcto.
  • Asegúrese de que el servidor web se ejecute sin errores.

En un entorno en vivo, la clave es evitar tanto tiempo de inactividad como sea posible, lo que significa que debe reiniciar correctamente el servidor web y ejecutar sus comprobaciones lo más rápido posible para poder deshacer los cambios si es necesario. Para hacer esto, puede agrupar todos los comandos en una sola línea.

Para hacer un reinicio correcto en Apache y buscar errores, ingrese cualquiera de los siguientes comandos:

# service httpd graceful; httpd -t; service httpd status | grep running

o

# service apache2 graceful; apache2ctl -t; service apache2 status | grep running

AH00558: httpd: Could not reliably determine the server's fully qualified domain
name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK
Redirecting to /bin/systemctl status httpd.service
Active: active (running) (Result: exit-code) since Mon 2021-01-18 12:53:06 GMT; 2 months 19 days ago

Para reiniciar NGINX y verificar que se está ejecutando, ingrese los siguientes comandos:

# nginx -s reload; nginx -t; service nginx status

Use la pestaña Comentarios para hacer cualquier comentario o hacer preguntas. También puede iniciar una conversación con nosotros.


Linux
  1. Cómo configurar un servidor web Apache

  2. Ajuste del Keepalive del servidor web Apache

  3. ¿Configurando el servidor web de Ubuntu?

  4. Vhosts y conceptos básicos de bloques de servidor

  5. ¿Es seguro deshabilitar IPv6 en mi servidor Debian?

Cómo instalar el servidor web Nginx en Alpine Linux

Proteja su servidor web Apache Mejores prácticas

¿Servidor web en Ubuntu 16.04?

Cómo instalar el servidor web Lighttpd en Ubuntu 18.04

Cómo configurar un servidor doméstico

Conceptos básicos de alojamiento web y elección de un proveedor