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.