Comment installer le serveur Web Apache sur Ubuntu 18.04

De Get Docs
Aller à :navigation, rechercher

Introduction

Le serveur HTTP Apache est le serveur Web le plus utilisé au monde. Il fournit de nombreuses fonctionnalités puissantes, notamment des modules chargeables dynamiquement, une prise en charge multimédia robuste et une intégration étendue avec d'autres logiciels populaires.

Dans ce guide, vous apprendrez à installer un serveur Web Apache sur votre serveur Ubuntu 18.04. Ce guide contient également des informations sur les fichiers et répertoires Apache importants.

Conditions préalables

Avant de commencer ce guide, vous devez avoir un utilisateur régulier non root avec des privilèges sudo configurés sur votre serveur. De plus, vous devrez activer un pare-feu de base pour bloquer les ports non essentiels. Vous pouvez apprendre à configurer un compte d'utilisateur standard et à configurer un pare-feu pour votre serveur en suivant notre guide de configuration initiale du serveur pour Ubuntu 18.04.

Lorsque vous avez créé un compte, connectez-vous en tant qu'utilisateur non root pour commencer.

Étape 1 - Installation d'Apache

Apache est disponible dans les référentiels de logiciels par défaut d'Ubuntu, ce qui permet de l'installer à l'aide d'outils de gestion de packages conventionnels.

Commençons par mettre à jour l'index de package local pour refléter les dernières modifications en amont :

sudo apt update

Ensuite, installez le package apache2 :

sudo apt install apache2

Après avoir confirmé l'installation, apt installera Apache et toutes les dépendances requises.

Étape 2 - Réglage du pare-feu

Avant de tester Apache, il est nécessaire de modifier les paramètres du pare-feu pour autoriser l'accès extérieur aux ports Web par défaut. Si vous avez suivi les instructions des conditions préalables, vous devez avoir un pare-feu UFW configuré pour restreindre l'accès à votre serveur.

Lors de l'installation, Apache s'enregistre auprès d'UFW pour fournir quelques profils d'application pouvant être utilisés pour activer ou désactiver l'accès à Apache via le pare-feu.

Répertoriez les profils d'application ufw en exécutant la commande suivante :

sudo ufw app list

Cela renverra une liste des profils d'application :

OutputAvailable applications:
  Apache
  Apache Full
  Apache Secure
  OpenSSH

Cette liste indique qu'il existe trois profils disponibles pour Apache :

  • Apache : ce profil ouvre uniquement le port 80 (trafic Web normal non chiffré)
  • Apache Full : ce profil ouvre à la fois le port 80 (trafic Web normal non chiffré) et le port 443 (trafic chiffré TLS/SSL)
  • Apache Secure : ce profil ouvre uniquement le port 443 (trafic chiffré TLS/SSL)

Il est recommandé d'activer le profil le plus restrictif qui autorisera toujours le trafic que vous avez configuré. Comme vous n'avez pas encore configuré SSL pour votre serveur dans ce guide, vous n'aurez qu'à autoriser le trafic sur le port 80 :

sudo ufw allow 'Apache'

Vérifiez ce changement en vérifiant l'état :

sudo ufw status

Maintenant, le trafic HTTP autorisé sera affiché dans la sortie :

OutputStatus: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
Apache                     ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
Apache (v6)                ALLOW       Anywhere (v6)

Le profil Apache est maintenant activé pour permettre l'accès au serveur Web.

Étape 3 - Vérification de votre serveur Web

À la fin du processus d'installation, Ubuntu 18.04 démarre Apache. Le serveur Web devrait déjà être opérationnel.

Vérifiez auprès du système d'initialisation systemd pour vous assurer que le service est en cours d'exécution :

sudo systemctl status apache2
Output● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset:
  Drop-In: /lib/systemd/system/apache2.service.d
           └─apache2-systemd.conf
   Active: active (running) since Tue 2021-09-28 16:52:56 UTC; 1min 14s ago
 Main PID: 9409 (apache2)
    Tasks: 55 (limit: 4915)
   CGroup: /system.slice/apache2.service
           ├─9409 /usr/sbin/apache2 -k start
           ├─9410 /usr/sbin/apache2 -k start
           └─9411 /usr/sbin/apache2 -k start

Cette sortie montre que le service a démarré avec succès. Cependant, la meilleure façon de vérifier cela est de demander une page à Apache.

Vous pouvez accéder à la page d'accueil Apache par défaut pour confirmer que le logiciel fonctionne correctement via votre adresse IP. Si vous ne connaissez pas l'adresse IP de votre serveur, vous pouvez l'obtenir de différentes manières à partir de la ligne de commande.

Exécutez ce qui suit à l'invite de commande de votre serveur :

hostname -I

Vous recevrez quelques adresses séparées par des espaces. Vous pouvez essayer chacun dans votre navigateur Web pour vérifier s'ils fonctionnent.

Une alternative consiste à exécuter la commande suivante, qui devrait vous donner votre adresse IP publique car elle est identifiée à partir d'un autre emplacement sur Internet :

curl -4 icanhazip.com

Lorsque vous avez l'adresse IP de votre serveur, saisissez-la dans la barre d'adresse de votre navigateur :

http://your_server_ip

Vous devriez recevoir la page Web Apache Ubuntu 18.04 par défaut :

Cette page Web indique qu'Apache fonctionne correctement. Il comprend également des informations de base sur les fichiers Apache importants et les emplacements des répertoires.

Étape 4 - Gestion du processus Apache

Maintenant que votre serveur Web est opérationnel, passons en revue certaines commandes de gestion de base.

Vous pouvez arrêter votre serveur Web avec la commande suivante ::

sudo systemctl stop apache2

Pour démarrer le serveur Web lorsqu'il est arrêté, exécutez cette commande :

sudo systemctl start apache2

Vous pouvez arrêter puis redémarrer le service en exécutant la commande suivante :

sudo systemctl restart apache2

Si vous ne modifiez que la configuration, Apache peut souvent recharger sans interrompre les connexions. Pour ce faire, exécutez la commande suivante :

sudo systemctl reload apache2

Par défaut, Apache est configuré pour démarrer automatiquement au démarrage du serveur. Si ce n'est pas ce que vous voulez, vous pouvez désactiver ce comportement avec ce qui suit :

sudo systemctl disable apache2

Sinon, pour activer ou réactiver le service afin qu'il démarre au démarrage, exécutez cette commande :

sudo systemctl enable apache2

Apache devrait maintenant démarrer automatiquement lorsque le serveur redémarre.

Étape 5 - Configuration des hôtes virtuels (recommandé)

Lorsque vous utilisez le serveur Web Apache, vous pouvez utiliser des hôtes virtuels (similaires aux blocs de serveur dans Nginx) pour encapsuler les détails de configuration et héberger plusieurs domaines à partir d'un seul serveur. Pour notre exemple, nous allons configurer un domaine appelé votre_domaine, mais vous devez le remplacer par votre propre nom de domaine. Pour en savoir plus sur la configuration d'un nom de domaine avec DigitalOcean, lisez notre Introduction au DNS DigitalOcean.

Apache sur Ubuntu 18.04 a un bloc de serveur activé par défaut qui est configuré pour servir les documents du répertoire /var/www/html. Bien que cela fonctionne bien pour un seul site, cela peut devenir compliqué si vous hébergez plusieurs sites. Au lieu de modifier /var/www/html, créez une structure de répertoires dans /var/www pour un site votre_domaine, en laissant /var/www/html en place comme répertoire par défaut à servir si un la demande du client ne correspond à aucun autre site.

Créez le répertoire pour votre_domaine comme suit :

sudo mkdir /var/www/your_domain

Ensuite, attribuez la propriété du répertoire avec la variable d'environnement $USER :

sudo chown -R $USER:$USER /var/www/your_domain

Les autorisations de vos racines Web doivent être correctes si vous n'avez pas modifié votre valeur unmask, mais vous pouvez vous en assurer en saisissant ce qui suit :

sudo chmod -R 755 /var/www/your_domain

Ensuite, créez un exemple de page index.html en utilisant nano ou votre éditeur préféré :

nano /var/www/your_domain/index.html

À l'intérieur, ajoutez l'exemple de code HTML suivant :

/var/www/votre_domaine/index.html

<html>
    <head>
        <title>Welcome to Your_domain!</title>
    </head>
    <body>
        <h1>Success!  The your_domain virtual host is working!</h1>
    </body>
</html>

Enregistrez et fermez le fichier lorsque vous avez terminé. Si vous avez utilisé nano, vous pouvez quitter en appuyant sur CTRL + X, puis Y et ENTER.

Pour qu'Apache serve ce contenu, il est nécessaire de créer un fichier d'hôte virtuel avec les bonnes directives. Au lieu de modifier directement le fichier de configuration par défaut situé dans /etc/apache2/sites-available/000-default.conf, créez-en un nouveau dans /etc/apache2/sites-available/your_domain.conf :

sudo nano /etc/apache2/sites-available/your_domain.conf

Ajoutez le bloc de configuration suivant, qui est similaire au bloc par défaut, mais mis à jour pour votre nouveau répertoire et nom de domaine :

/etc/apache2/sites-available/votre_domaine.conf

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName your_domain
    ServerAlias www.your_domain
    DocumentRoot /var/www/your_domain
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Notez que nous avons mis à jour le DocumentRoot vers notre nouveau répertoire et le ServerAdmin vers un e-mail auquel l'administrateur du site votre_domaine peut accéder. Nous avons également ajouté deux directives : ServerName, qui établit le domaine de base qui doit correspondre à cette définition d'hôte virtuel, et ServerAlias, qui définit d'autres noms qui doivent correspondre comme s'ils étaient la base Nom.

Enregistrez et fermez le fichier lorsque vous avez terminé.

Ensuite, activez le fichier avec l'outil a2ensite :

sudo a2ensite your_domain.conf

Désactivez le site par défaut défini dans 000-default.conf :

sudo a2dissite 000-default.conf

Testez maintenant les erreurs de configuration :

sudo apache2ctl configtest

Vous devriez recevoir la sortie suivante :

OutputSyntax OK

Redémarrez Apache pour mettre en œuvre vos modifications :

sudo systemctl restart apache2

Apache devrait maintenant servir votre nom de domaine. Vous pouvez le tester en accédant à http://your_domain, où vous devriez recevoir quelque chose comme ceci :

Étape 6 - Se familiariser avec les fichiers et répertoires Apache importants

Maintenant que vous savez comment gérer le service Apache lui-même, vous devriez prendre quelques minutes pour vous familiariser avec quelques répertoires et fichiers importants.

Teneur

  • /var/www/html : le contenu Web réel, qui par défaut se compose uniquement de la page Apache par défaut que vous avez vue précédemment, est servi à partir du répertoire /var/www/html. Cela peut être modifié en modifiant les fichiers de configuration d'Apache.

Configuration du serveur

  • /etc/apache2 : Le répertoire de configuration d'Apache. Tous les fichiers de configuration Apache résident ici.
  • /etc/apache2/apache2.conf : Le fichier de configuration principal d'Apache. Cela peut être modifié pour apporter des modifications à la configuration globale d'Apache. Ce fichier est responsable du chargement de nombreux autres fichiers dans le répertoire de configuration.
  • /etc/apache2/ports.conf : ce fichier spécifie les ports sur lesquels Apache écoutera. Par défaut, Apache écoute sur le port 80 et écoute également sur le port 443 lorsqu'un module fournissant des fonctionnalités SSL est activé.
  • /etc/apache2/sites-available/ : le répertoire dans lequel les hôtes virtuels par site peuvent être stockés. Apache n'utilisera pas les fichiers de configuration trouvés dans ce répertoire à moins qu'ils ne soient liés au répertoire sites-enabled. En règle générale, toute la configuration du bloc de serveur est effectuée dans ce répertoire, puis activée en se connectant à l'autre répertoire avec la commande a2ensite.
  • /etc/apache2/sites-enabled/ : répertoire dans lequel les hôtes virtuels par site activés sont stockés. Généralement, ceux-ci sont créés en liant les fichiers de configuration trouvés dans le répertoire sites-available avec le a2ensite. Apache lit les fichiers de configuration et les liens trouvés dans ce répertoire lorsqu'il démarre ou se recharge pour compiler une configuration complète.
  • /etc/apache2/conf-available/, /etc/apache2/conf-enabled/ : Ces répertoires ont la même relation que les répertoires sites-available et sites-enabled, mais sont utilisés pour stocker des fragments de configuration qui n'appartiennent pas à un hôte virtuel. Les fichiers du répertoire conf-available peuvent être activés avec la commande a2enconf et désactivés avec la commande a2disconf.
  • /etc/apache2/mods-available/, /etc/apache2/mods-enabled/ : Ces répertoires contiennent respectivement les modules disponibles et activés. Les fichiers se terminant par .load contiennent des fragments pour charger des modules spécifiques, tandis que les fichiers se terminant par .conf contiennent la configuration de ces modules. Les modules peuvent être activés et désactivés à l'aide des commandes a2enmod et a2dismod.

Journaux du serveur

  • /var/log/apache2/access.log : par défaut, chaque demande adressée à votre serveur Web est enregistrée dans ce fichier journal, sauf si Apache est configuré pour faire autrement.
  • /var/log/apache2/error.log : Par défaut, toutes les erreurs sont enregistrées dans ce fichier. La directive LogLevel dans la configuration d'Apache spécifie la quantité de détails que contiendront les journaux d'erreurs.

Conclusion

Maintenant que votre serveur Web Apache est installé, vous disposez de nombreuses options pour le type de contenu que vous pouvez servir et les technologies que vous pouvez utiliser pour créer une expérience plus riche.

Si vous souhaitez créer une pile d'applications plus complète, vous pouvez lire cet article sur comment configurer une pile LAMP sur Ubuntu 18.04. Vous pouvez également apprendre à obtenir et à installer un certificat TLS/SSL gratuit avec ce tutoriel sur Comment sécuriser Apache avec Let's Encrypt sur Ubutnu 18.04.