GNU/Linux >> Tutoriales Linux >  >> Linux

Vhosts y conceptos básicos de bloques de servidor

Este artículo es una introducción a los conceptos básicos de vhost y server block.

Verificar el estado del servidor web

Los servidores web más comunes que se ejecutan en Linux® son Apache®(httpd o apache2 ) y NGINX®. Plesk® es una plataforma GUI para administrar sitios web. Si tiene instalado Plesk, utilice este artículo como guía para entender los vhosts.

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

En Plesk, para comprobar el estado e identificar qué servidor web está en uso, introduzca 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 IP o en nombres. Los vhosts basados ​​en IP asignan una dirección IP diferente a un sitio web y basados ​​en nombres vhosts asigna múltiples nombres de host a una sola 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.
  • 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.
  • Archivos SSL :Las tres rutas de archivo SSL necesarias para un servidor HTTPS 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 o una herramienta como vim , nano , sed, or awk`.

  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. Vuelva a comprobar el servidor web:

    # httpd -t; service httpd 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 :

# 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 graciado opción.

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

# service httpd graceful

o

# service apache2 graceful

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 ejecuta sin errores.

Es importante evitar tanto tiempo de inactividad como sea posible en un entorno en vivo, lo que significa que después de reiniciar el servidor web, debe realizar las comprobaciones lo más rápido posible. Para hacer esto, agrupe todos los comandos en una 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. Comunicación entre procesos en Linux:sockets y señales

  2. ¿Qué es un servidor web y cómo funciona un servidor web?

  3. Estado del sistema y del servidor

  4. Cómo configurar bloques de servidor Nginx en Ubuntu y CentOS

  5. Instalar IIS y configurar un sitio web

Instalación de Nginx en Ubuntu 14.04 y 16.04

Tunelización y proxy SSH

Cliente y servidor NIS

Fundamentos de virtualización de VMware:VMware Server y VMware ESXi

Problemas comunes del servidor y soluciones

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