Cómo mover una raíz web Apache a una nueva ubicación en Ubuntu 20.04

Introducción
En Ubuntu, el servidor web Apache sirve los documentos almacenados en el var/www/html
directorio de forma predeterminada. Este directorio se denomina raíz de documentos . Cuando un administrador o un usuario realiza una solicitud al servidor, este responderá con los archivos correspondientes desde la raíz de documentos.
Este directorio se encuentra normalmente en el sistema de archivos raíz junto con el resto del sistema operativo. Sin embargo, a veces resulta útil mover la raíz de documentos a otra ubicación, como un sistema de archivos montado por separado. Por ejemplo, si ofrece servicios a varios sitios web desde la misma instancia de Apache, colocar la raíz de documentos de cada sitio en su propio volumen le permite escalar en respuesta a las necesidades de un sitio o cliente específico.
En esta guía, moverá una raíz de documento Apache desde su ubicación predeterminada var/www/html
a una nueva ubicación.
Prerrequisitos
Para completar esta guía, necesitarás:
- Un servidor Ubuntu 20.04 y un usuario no root con privilegios sudo. Puede obtener más información sobre cómo configurar un usuario con estos privilegios en nuestra guía Configuración inicial del servidor con Ubuntu 20.04 .
- Apache instalado en su servidor. Aprenda a configurarlo siguiendo nuestra guía Cómo instalar el servidor web Apache en Ubuntu 20.04 .
- SSL configurado para su dominio. Configúrelo siguiendo nuestra guía Cómo proteger Apache con Let’s Encrypt en Ubuntu 20.04 .
- Una nueva ubicación para la raíz de documentos. En este tutorial,
/mnt/volume_nyc3_01
se utiliza como directorio para esta nueva ubicación. Aunque las instrucciones de esta guía utilizan el ejemplo de un dispositivo de almacenamiento en bloque montado, puede utilizar cualquier ubicación de directorio de su sistema como nueva raíz de documentos para servir su contenido web.
Si está utilizando un volumen de almacenamiento en bloque de DigitalOcean, esta guía le mostrará cómo crear y adjuntar su volumen. La nueva ubicación de la raíz de documentos se puede configurar según sus necesidades. Si está moviendo la raíz de documentos a un dispositivo de almacenamiento diferente, deberá seleccionar una ubicación debajo del punto de montaje del dispositivo.
Paso 1: Copiar archivos a la nueva ubicación
Si siguió los tutoriales de requisitos previos, habrá creado una nueva raíz de documento en . También puede tener raíces de documento adicionales en las directivas correspondientes. Es importante establecer la ubicación de la raíz de documento actual antes de copiar los archivos relevantes a su nueva ubicación./var/www/your_domain
VirtualHost
Busque la ubicación de las raíces de sus documentos utilizando el grep
comando para buscar en el /etc/apache2/sites-enabled
directorio. Esto limita el enfoque a los sitios activos. La -R
bandera asegura que grep
se imprimirán tanto el DocumentRoot
nombre de archivo como el nombre de archivo completo en la salida:
- grep -R "DocumentRoot" /etc/apache2/sites-enabled
La siguiente salida revela la ubicación de su actual DocumentRoot
:
Output/etc/apache2/sites-enabled/your_domain-le-ssl.conf: DocumentRoot /var/www/your_domain/etc/apache2/sites-enabled/your_domain.conf: DocumentRoot /var/www/your_domain
Si ya tiene configuraciones existentes, los resultados pueden diferir de los que se muestran aquí. En cualquier caso, puede utilizar el resultado de grep
para asegurarse de mover los archivos deseados y actualizar los archivos de configuración adecuados.
Ahora que ha confirmado la ubicación de la raíz de su documento, copie los archivos a su nueva ubicación con rsync
:
Nota: Al utilizar el rsync
comando, tenga en cuenta dos cosas:
- Tenga en cuenta que hay una barra diagonal al final de
your_domain
. Si no incluye la barra diagonal aquí, estará copiando este directorio a la nueva raíz de documentos como un subdirectorio. Por ejemplo, su nueva raíz de documentos tendrá esta estructura:/var/www/mnt/volume_nyc3_01/your_domain
. Esto provocará un problema al intentar servir suindex.html
archivo desde su nueva raíz de documentos. - En segundo lugar, no hay ninguna barra diagonal final en el nuevo directorio raíz del documento
/mnt/volume_nyc3_01
.
- sudo rsync -av /var/www/your_domain/ /mnt/volume_nyc3_01
La -a
bandera conserva los permisos y otras propiedades del directorio, mientras que la -v
bandera proporciona una salida detallada para que pueda seguir el progreso de la sincronización.
Su salida debe incluir lo siguiente:
Outputsending incremental file list./index.htmlsent 265 bytes received 38 bytes 606.00 bytes/sectotal size is 134 speedup is 0.44
Con los archivos en su lugar, puede continuar modificando su configuración de Apache para reflejar estos cambios.
Paso 2: Actualización de los archivos de configuración
Después de ubicar y copiar archivos a la nueva raíz del documento, puede configurar los archivos del host virtual para que apunten a esta nueva ubicación.
Empiece por abrirlo con su editor preferido. En este ejemplo se utiliza :/etc/apache2/sites-enabled/your_domain.conf
nano
- sudo nano /etc/apache2/sites-enabled/your_domain.conf
Busque la línea que comienza con DocumentRoot
y reemplácela con la nueva ubicación de la raíz. En este ejemplo, la nueva ubicación de la raíz es /mnt/volume_nyc3_01
:
/etc/apache2/sites-enabled/su_dominio.conf
VirtualHost *:80 ServerAdmin sammy@your_domain ServerName your_domain ServerAlias www.your_domain DocumentRoot /mnt/volume_nyc3_01 ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combinedRewriteEngine onRewriteCond %{SERVER_NAME} =www.your_domain [OR]RewriteCond %{SERVER_NAME} =your_domainRewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]/VirtualHost
Después de esta VirtualHost
directiva, agregue estas líneas resaltadas para garantizar que el servidor seguirá los enlaces simbólicos en el directorio:
/etc/apache2/sites-enabled/su_dominio.conf
. . ./VirtualHostDirectory /mnt/volume_nyc3_01 Options FollowSymLinks AllowOverride None Require all granted/Directory
En total, su archivo debe incluir todas las siguientes líneas específicas de su nueva ubicación:/etc/apache2/sites-enabled/your_domain.conf
DocumentRoot
/etc/apache2/sites-enabled/su_dominio.conf
VirtualHost *:80 ServerAdmin sammy@your_domain ServerName your_domain ServerAlias www.your_domain DocumentRoot /mnt/volume_nyc3_01 ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combinedRewriteEngine onRewriteCond %{SERVER_NAME} =www.your_domain [OR]RewriteCond %{SERVER_NAME} =your_domainRewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]/VirtualHostDirectory /mnt/volume_nyc3_01 Options FollowSymLinks AllowOverride None Require all granted/Directory
Guarda y sal del editor. Puedes salir nano
presionando CTRL + X
, luego Y
, y luego ENTER
.
Después de realizar estos cambios, puede centrarse en la configuración de SSL. Abra el archivo:/etc/apache2/sites-enabled/your_domain-le-ssl.conf
- sudo nano /etc/apache2/sites-enabled/your_domain-le-ssl.conf
Al igual que el archivo de configuración anterior, modifíquelo DocumentRoot
para reflejar la nueva ubicación:
/etc/apache2/sites-enabled/su_dominio-le-ssl.conf
IfModule mod_ssl.cVirtualHost *:443 ServerAdmin sammy@your_domain ServerName your_domain ServerAlias www.your_domain DocumentRoot /mnt/volume_nyc3_01 ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined. . ./VirtualHost/IfModule
Guarde y cierre este archivo.
Ahora ha realizado los cambios de configuración necesarios para reflejar la nueva ubicación de la raíz de su documento.
Paso 3: Reiniciar Apache
Una vez que haya terminado de realizar los cambios, puede reiniciar Apache y probar los resultados.
Primero, asegúrese de que la sintaxis de sus nuevas configuraciones sea correcta con configtest
:
- sudo apachectl configtest
Si su sintaxis es correcta, su salida debería revelar lo siguiente:
OutputAH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this messageSyntax OK
Nota: Si desea suprimir la línea superior en esta salida, agregue una ServerName
directiva a su archivo de configuración global de Apache en /etc/apache2/apache2.conf
. ServerName
Puede ser el dominio o la dirección IP de su servidor.
Abra el archivo con su editor:
- sudo nano /etc/apache2/apache2.conf
Coloque la ServerName
directiva en la parte inferior del archivo de configuración con your_domain
la dirección IP de su servidor:
/etc/apache2/apache2.conf
# This is the main Apache server configuration file. It contains the# configuration directives that give the server its instructions.# See http://httpd.apache.org/docs/2.4/ for detailed information about# the directives and /usr/share/doc/apache2/README.Debian about Debian specific# hints....ServerName your_domain
Guarde y salga de su editor.
Sin embargo, esto es solo un mensaje y no afecta la funcionalidad de su sitio. Mientras el resultado contenga Syntax OK
, estará listo para continuar.
Utilice el siguiente comando para reiniciar Apache:
- sudo systemctl reload apache2
Cuando el servidor se haya reiniciado, visita los sitios afectados para asegurarte de que funcionan como se espera. Una vez que estés seguro de que todo está en orden, no olvides eliminar las copias originales de los datos:
- sudo rm -Rf /var/www/your_domain
Ahora ha movido con éxito la raíz del documento Apache a una nueva ubicación.
Conclusión
En este tutorial, aprendió a cambiar la raíz de documentos de Apache a una nueva ubicación. Esto puede ayudarlo con la administración básica del servidor web, como alojar de manera eficaz varios sitios en un solo servidor. También le permite aprovechar dispositivos de almacenamiento alternativos, como el almacenamiento en bloque de red, que puede ser útil para escalar un sitio web a medida que cambian sus necesidades.
Deja una respuesta