Comment déplacer une racine Web Apache vers un nouvel emplacement sur Ubuntu 20.04
Introduction
Sur Ubuntu, le serveur Web Apache sert les documents stockés dans le répertoire var/www/html
par défaut. Ce répertoire est appelé racine du document. Lorsqu'un administrateur ou un utilisateur fait une demande au serveur, il répond avec les fichiers appropriés à partir de la racine du document.
Ce répertoire est généralement situé sur le système de fichiers racine avec le reste du système d'exploitation. Parfois, cependant, il est utile de déplacer la racine du document vers un autre emplacement, tel qu'un système de fichiers monté séparé. Par exemple, si vous servez plusieurs sites Web à partir de la même instance Apache, placer la racine du document de chaque site sur son propre volume vous permet d'évoluer en réponse aux besoins d'un site ou d'un client spécifique.
Dans ce guide, vous allez déplacer une racine de document Apache de son emplacement par défaut de var/www/html
vers un nouvel emplacement.
Conditions préalables
Pour compléter ce guide, vous aurez besoin de :
- Un serveur Ubuntu 20.04 et un utilisateur non root avec des privilèges sudo. Vous pouvez en savoir plus sur la configuration d'un utilisateur avec ces privilèges dans notre guide Configuration initiale du serveur avec Ubuntu 20.04.
- Apache installé sur votre serveur. Apprenez à le configurer en suivant notre guide Comment installer le serveur Web Apache sur Ubuntu 20.04.
- SSL configuré pour votre domaine. Configurez ceci en suivant notre guide Comment sécuriser Apache avec Let's Encrypt sur Ubuntu 20.04.
- Un nouvel emplacement pour la racine de votre document. Dans ce didacticiel,
/mnt/volume_nyc3_01
est utilisé comme répertoire pour ce nouvel emplacement. Bien que les instructions de ce guide utilisent l'exemple d'un périphérique de stockage de blocs monté, vous pouvez utiliser n'importe quel emplacement de répertoire sur votre système comme nouvelle racine de document pour servir votre contenu Web.
Si vous utilisez un volume de stockage en bloc de DigitalOcean, ce guide vous montrera comment créer et attacher votre volume. Votre nouvel emplacement racine de document est configurable en fonction de vos besoins. Si vous déplacez la racine de votre document vers un autre périphérique de stockage, vous devrez sélectionner un emplacement sous le point de montage du périphérique.
Étape 1 - Copie de fichiers vers le nouvel emplacement
Si vous avez suivi les didacticiels préalables, vous aurez créé une nouvelle racine de document sur /var/www/your_domain
. Vous pouvez également avoir des racines de document supplémentaires dans les directives VirtualHost
correspondantes. Il est important d'établir l'emplacement de la racine de votre document actuel avant de copier les fichiers pertinents vers leur nouvel emplacement.
Recherchez l'emplacement des racines de votre document à l'aide de la commande grep
pour effectuer une recherche dans le répertoire /etc/apache2/sites-enabled
. Cela limite l'attention aux sites actifs. Le drapeau -R
garantit que grep
imprimera à la fois le DocumentRoot
et le nom de fichier complet dans la sortie :
grep -R "DocumentRoot" /etc/apache2/sites-enabled
La sortie suivante révèle l'emplacement de votre DocumentRoot
actuel :
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 vous avez des configurations préexistantes, vos résultats peuvent différer de ce qui est affiché ici. Dans les deux cas, vous pouvez utiliser la sortie de grep
pour vous assurer que vous déplacez les fichiers souhaités et mettez à jour les fichiers de configuration appropriés.
Maintenant que vous avez confirmé l'emplacement de la racine de votre document, copiez les fichiers à leur nouvel emplacement avec rsync
:
Remarque : Lorsque vous utilisez la commande rsync
, gardez à l'esprit deux choses :
- Notez qu'il y a ' une barre oblique finale après
your_domain
. Si vous n'incluez pas la barre oblique finale ici, vous copiez ce répertoire dans la nouvelle racine du document en tant que sous-répertoire. Par exemple, votre nouvelle racine de document aura cette structure :/var/www/mnt/volume_nyc3_01/your_domain
. Cela entraînera un problème lors de la tentative de diffusion de votre fichierindex.html
à partir de votre nouvelle racine de document. - Deuxièmement, il n'y a pas de barre oblique à la fin du nouveau répertoire racine du document
/mnt/volume_nyc3_01
.
sudo rsync -av /var/www/your_domain/ /mnt/volume_nyc3_01
L'indicateur -a
préserve les autorisations et les autres propriétés du répertoire, tandis que l'indicateur -v
fournit une sortie détaillée afin que vous puissiez suivre la progression de la synchronisation.
Votre sortie doit inclure les éléments suivants :
Outputsending incremental file list ./ index.html sent 265 bytes received 38 bytes 606.00 bytes/sec total size is 134 speedup is 0.44
Avec vos fichiers en place, vous pouvez passer à la modification de votre configuration Apache pour refléter ces changements.
Étape 2 - Mise à jour des fichiers de configuration
Après avoir localisé et copié les fichiers dans la nouvelle racine du document, vous pouvez configurer les fichiers de l'hôte virtuel pour qu'ils pointent vers ce nouvel emplacement.
Commencez par ouvrir /etc/apache2/sites-enabled/your_domain.conf
avec votre éditeur préféré. Cet exemple utilise nano
:
sudo nano /etc/apache2/sites-enabled/your_domain.conf
Trouvez la ligne qui commence par DocumentRoot
et remplacez-la par le nouvel emplacement racine. Dans cet exemple, le nouvel emplacement racine est /mnt/volume_nyc3_01
:
/etc/apache2/sites-enabled/votre_domaine.conf
<VirtualHost *:80> ServerAdmin [email protected]_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 RewriteEngine on RewriteCond %{SERVER_NAME} =www.your_domain [OR] RewriteCond %{SERVER_NAME} =your_domain RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent] </VirtualHost>
Après cette directive <VirtualHost>
, ajoutez ces lignes en surbrillance pour vous assurer que le serveur suivra les liens symboliques dans le répertoire :
/etc/apache2/sites-enabled/votre_domaine.conf
. . . </VirtualHost> <Directory /mnt/volume_nyc3_01> Options FollowSymLinks AllowOverride None Require all granted </Directory>
Au total, votre fichier /etc/apache2/sites-enabled/your_domain.conf
doit inclure toutes les lignes suivantes spécifiques à votre nouvel emplacement DocumentRoot
:
/etc/apache2/sites-enabled/votre_domaine.conf
<VirtualHost *:80> ServerAdmin [email protected]_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 RewriteEngine on RewriteCond %{SERVER_NAME} =www.your_domain [OR] RewriteCond %{SERVER_NAME} =your_domain RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent] </VirtualHost> <Directory /mnt/volume_nyc3_01> Options FollowSymLinks AllowOverride None Require all granted </Directory>
Enregistrez et quittez votre éditeur. Vous pouvez quitter nano
en appuyant sur CTRL + X
, puis sur Y
, puis sur ENTER
.
Après avoir effectué ces modifications, vous pouvez porter votre attention sur la configuration SSL. Ouvrez le fichier /etc/apache2/sites-enabled/your_domain-le-ssl.conf
:
sudo nano /etc/apache2/sites-enabled/your_domain-le-ssl.conf
Comme le fichier de configuration précédent, modifiez le DocumentRoot
pour refléter le nouvel emplacement :
/etc/apache2/sites-enabled/votre_domaine-le-ssl.conf
<IfModule mod_ssl.c> <VirtualHost *:443> ServerAdmin [email protected]_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>
Enregistrez et fermez ce fichier.
Vous avez maintenant apporté les modifications de configuration nécessaires pour refléter le nouvel emplacement de la racine de votre document.
Étape 3 - Redémarrer Apache
Une fois que vous avez terminé d'apporter les modifications, vous pouvez redémarrer Apache et tester les résultats.
Tout d'abord, assurez-vous que la syntaxe de vos nouvelles configurations est correcte avec configtest
:
sudo apachectl configtest
Si votre syntaxe est correcte, votre sortie devrait révéler ce qui suit :
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 message Syntax OK
Remarque : Si vous souhaitez supprimer la première ligne de cette sortie, ajoutez une directive ServerName
à votre fichier de configuration Apache global dans /etc/apache2/apache2.conf
. Le ServerName
peut être le domaine ou l'adresse IP de votre serveur.
Ouvrez le fichier avec votre éditeur :
sudo nano /etc/apache2/apache2.conf
Placez la directive ServerName
en bas du fichier de configuration avec your_domain
ou l'adresse IP de votre serveur :
/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
Enregistrez et quittez votre éditeur.
Ceci n'est cependant qu'un message et n'affecte pas la fonctionnalité de votre site. Tant que la sortie contient Syntax OK
, vous êtes prêt à continuer.
Utilisez la commande suivante pour redémarrer Apache :
sudo systemctl reload apache2
Une fois le serveur redémarré, visitez vos sites concernés pour vous assurer qu'ils fonctionnent comme prévu. Une fois que vous êtes sûr que tout est en ordre, n'oubliez pas de supprimer les copies originales des données :
sudo rm -Rf /var/www/your_domain
Vous avez maintenant déplacé avec succès la racine de votre document Apache vers un nouvel emplacement.
Conclusion
Dans ce didacticiel, vous avez appris à modifier la racine du document Apache vers un nouvel emplacement. Cela peut vous aider avec l'administration de base du serveur Web, comme l'hébergement efficace de plusieurs sites sur un seul serveur. Il vous permet également de tirer parti de périphériques de stockage alternatifs tels que le stockage en bloc réseau, qui peuvent être utiles pour faire évoluer un site Web à mesure que ses besoins changent.