Comment déplacer une racine Web Apache vers un nouvel emplacement sur Ubuntu 18.04

introduction

Sur Ubuntu, leApache web server stocke ses documents dans/var/www/html, qui est généralement situé sur le système de fichiers racine avec le reste du système d'exploitation. Cependant, il peut parfois être 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, le fait de placer la racine du document de chaque site sur son propre volume vous permet de faire évoluer votre système en fonction des besoins d’un site ou d’un client spécifique.

Dans ce guide, vous allez déplacer une racine de document Apache vers un nouvel emplacement.

Conditions préalables

Pour compléter ce guide, vous aurez besoin de:

  • Un serveur Ubuntu 18.04 et un utilisateur non root avec des privilèges sudo. Vous pouvez en savoir plus sur la façon de configurer un utilisateur avec ces privilèges dans notre guideInitial Server Setup with Ubuntu 18.04.

  • Apache installé, aprèsHow To Install the Apache Web Server on Ubuntu 18.04.

  • SSL configuré pour votre domaine aprèsHow To Secure Apache with Let’s Encrypt on Ubuntu 18.04. Nous utiliserons le nom de domaineexample.com dans ce tutoriel, mais vous devez le remplacer par votre propre nom de domaine.

  • Un nouvel emplacement pour votre racine de document. Dans ce tutoriel, nous utiliserons le répertoire/mnt/volume-nyc3-01 pour notre nouvel emplacement. Si vous utilisez Block Storage sur DigitalOcean,this guide vous montrera comment créer et attacher votre volume. Votre nouvel emplacement racine de document est configurable en fonction de vos besoins, cependant. Si vous déplacez la racine de votre document vers un autre périphérique de stockage, vous devez sélectionner un emplacement situé sous le point de montage du périphérique.

[[step-1 -—- copying-files-to-the-new-location]] == Étape 1 - Copie de fichiers vers le nouvel emplacement

Sur une nouvelle installation d'Apache, la racine du document se trouve à/var/www/html. Cependant, en suivant les guides de prérequis, vous avez créé une nouvelle racine de document,/var/www/example.com/html. Vous pouvez également avoir des racines de document supplémentaires dans les directivesVirtualHost correspondantes. Au cours de cette étape, nous établirons l’emplacement de nos racines de document et copierons les fichiers pertinents dans leur nouvel emplacement.

Vous pouvez rechercher l'emplacement des racines de vos documents en utilisantgrep. Faisons une recherche dans le répertoire/etc/apache2/sites-enabled pour limiter notre attention aux sites actifs. L'indicateur-R garantit quegrep affichera à la fois leDocumentRoot et le nom de fichier complet dans sa sortie:

grep -R "DocumentRoot" /etc/apache2/sites-enabled

Si vous avez suivi les didacticiels prérequis sur un nouveau serveur, le résultat sera le suivant:

Output/etc/apache2/sites-enabled/example.com-le-ssl.conf:  DocumentRoot /var/www/example.com/html
/etc/apache2/sites-enabled/example.com.conf:         DocumentRoot /var/www/example.com/html

Si vous avez des configurations préexistantes, vos résultats peuvent différer de ceux présentés ici. Dans les deux cas, vous pouvez utiliser les commentaires degrep pour vous assurer que vous déplacez les fichiers souhaités et que vous mettez à jour les fichiers de configuration appropriés.

Maintenant que vous avez confirmé l'emplacement de la racine de votre document, vous pouvez copier les fichiers vers leur nouvel emplacement avecrsync. L'utilisation de l'indicateur-a préserve les autorisations et les autres propriétés du répertoire, tandis que-v fournit une sortie détaillée afin que vous puissiez suivre la progression de la synchronisation:

[.note] #Note: Assurez-vous qu'il n'y a pas de barre oblique à la fin du répertoire, qui peut être ajoutée si vous utilisez l'achèvement par tabulation. Lorsqu'il y a une barre oblique à la fin,rsync videra le contenu du répertoire dans le point de montage au lieu de le transférer dans un répertoire contenanthtml.
#

sudo rsync -av /var/www/example.com/html /mnt/volume-nyc3-01

Vous verrez une sortie comme celle-ci:

Outputsending incremental file list
html/
html/index.html

sent 318 bytes  received 39 bytes  714.00 bytes/sec
total size is 176  speedup is 0.49

Avec nos fichiers en place, passons à la modification de notre configuration Apache pour refléter ces changements.

[[step-2 -—- update-the-configuration-files]] == Étape 2 - Mise à jour des fichiers de configuration

Apache utilise des fichiers de configuration globaux et spécifiques à un site. Pour en savoir plus sur la hiérarchie des fichiers de configuration, jetez un œil àHow To Configure the Apache Web Server on an Ubuntu or Debian VPS. Nous allons modifierthe virtual host files for our example.com project:/etc/apache2/sites-enabled/example.com.conf et/etc/apache2/sites-enabled/example.com-le-ssl.conf, qui a été créé lorsque nousconfigured SSL certificates for example.com.

[.note] #Note: N'oubliez pas que dans votre cas,example.com serayour_domain_name, et que vous allez modifier les fichiers d'hôte virtuel qui ont été générés lorsque vous avez exécuté lesgrep commande à l'étape 1.
#

Commencez par ouvrir/etc/apache2/sites-enabled/example.com.conf:

sudo nano /etc/apache2/sites-enabled/example.com.conf

Trouvez la ligne qui commence parDocumentRoot et mettez-la à jour avec le nouvel emplacement racine. Dans notre cas, ce sera/mnt/volume-nyc3-01/html:

/etc/apache2/sites-enabled/example.com.conf


    ServerAdmin [email protected]
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /mnt/volume-nyc3-01/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =www.example.com [OR]
RewriteCond %{SERVER_NAME} =example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

Ajoutons également des directives pour que le serveur suive les liens symboliques dans le répertoire:

/etc/apache2/sites-enabled/example.com.conf

. . .

    Options FollowSymLinks
    AllowOverride None
    Require all granted

Gardez un œil sur lesDocumentRoot quegrep sortis à l'étape 1, y compris dans les alias ou les réécritures. Vous voudrez également les mettre à jour pour refléter le nouvel emplacement racine du document.

Après avoir enregistré ces modifications, tournons notre attention vers la configuration SSL. Ouvrir/etc/apache2/sites-enabled/example.com-le-ssl.conf:

sudo nano /etc/apache2/sites-enabled/example.com-le-ssl.conf

Modifiez lesDocumentRoot pour refléter le nouvel emplacement,/mnt/volume-nyc3-01/html:

/etc/apache2/sites-enabled/example.com-le-ssl.conf



    ServerAdmin [email protected]
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /mnt/volume-nyc3-01/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
. . .

Vous avez maintenant apporté les modifications de configuration nécessaires pour refléter le nouvel emplacement de votre racine de document.

[[step-3 -—- restarting-apache]] == Étape 3 - Redémarrage d'Apache

Une fois les modifications de configuration terminées, vous pouvez redémarrer Apache et tester les résultats.

Tout d'abord, assurez-vous que la syntaxe est correcte avecconfigtest:

sudo apachectl configtest

Sur une nouvelle installation, vous obtiendrez des commentaires qui ressemblent à ceci:

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

Si vous voulez supprimer la ligne du haut, ajoutez simplement une directiveServerName à votre fichier de configuration Apache principal (global) à/etc/apache2/apache2.conf. LesServerName peuvent être le domaine ou l'adresse IP de votre serveur. Ceci n’est cependant qu’un message et n’affecte pas les fonctionnalités de votre site. Tant que la sortie contientSyntax 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 les sites concernés et assurez-vous 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/example.com/html

Vous avez maintenant déplacé avec succès la racine de votre document Apache vers un nouvel emplacement.

Conclusion

Dans ce tutoriel, nous avons expliqué comment changer la racine du document Apache vers un nouvel emplacement. Cela peut vous aider à administrer les serveurs Web de base, comme héberger efficacement plusieurs sites sur un seul serveur. Il vous permet également de tirer parti d'autres périphériques de stockage, tels que le stockage en bloc sur le réseau, ce qui peut s'avérer utile pour adapter un site Web à l'évolution de ses besoins.

Si vous gérez un site Web chargé ou en croissance, vous voudrez peut-être apprendre àhow to load test your web server pour identifier les goulots d'étranglement des performances avant de les rencontrer en production. Vous pouvez également en savoir plus sur l'amélioration de l'expérience de production dans cette comparaison defive ways to improve your production web application server setup.