Tutorial

Comment installer le serveur web Apache sur Ubuntu 20.04

Published on May 15, 2020
Default avatar

By Erin Glass

Senior Manager, DevEd

Français
Comment installer le serveur web Apache sur Ubuntu 20.04

Introduction

Le serveur HTTP Apache est le serveur web le plus utilisé au monde. Il offre de nombreuses fonctionnalités puissantes, notamment des modules à chargement dynamique, une prise en charge robuste des médias et une intégration poussée avec d’autres logiciels populaires.

Dans ce guide, nous vous expliquerons comment installer un serveur web Apache sur votre serveur Ubuntu 20.04.

Conditions préalables

Avant de commencer ce guide, vous devez avoir un utilisateur non root ordinaire avec des privilèges sudo configurés sur votre serveur. En outre, vous devrez activer un pare-feu de base pour bloquer les ports non essentiels. Vous pouvez apprendre comment configurer un compte utilisateur ordinaire et mettre en place un pare-feu pour votre serveur en suivant notre Guide de configuration initiale du serveur pour Ubuntu 20.04.

Lorsque vous avez un compte disponible, 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 de Ubuntu, ce qui permet de l’installer à l’aide d’outils classiques de gestion des packages.

Commençons par mettre à jour l’index local des packages pour refléter tout nouveau changement en amont :

  1. sudo apt update

Ensuite, installez le package apache2 :

  1. 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 permettre à l’extérieur d’accéder aux ports web par défaut. En supposant que vous ayez suivi les instructions des conditions préalables, vous devriez avoir un pare-feu UFW configuré pour restreindre l’accès à votre serveur.

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

Listez les profils d’application ufw en tapant :

  1. sudo ufw app list

Vous recevrez une liste des profils d’application :

Output
Available applications: Apache Apache Full Apache Secure OpenSSH

Comme le montre la sortie, il existe trois profils pour Apache :

  • Apache : ce profil n’ouvre que le port 80 (trafic web normal, non crypté).
  • Apache Full​​​ : ce profil ouvre à la fois le port 80 (trafic web normal, non crypté) et le port 443 (trafic crypté TLS/SSL).
  • Apache Secure : ce profil n’ouvre que le port 443 (trafic crypté TLS/SSL).

Nous vous recommandons d’activer le profil le plus restrictif qui autorisera tout de même le trafic que vous avez configuré. Comme nous n’avons pas encore configuré le SSL pour notre serveur dans ce guide, nous devrons seulement autoriser le trafic sur le port 80 :

  1. sudo ufw allow 'Apache'

Vous pouvez vérifier le changement en saisissant :

  1. sudo ufw status

La sortie fournira une liste du trafic HTTP autorisé :

Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Apache ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Apache (v6) ALLOW Anywhere (v6)

Comme l’indique la sortie, le profil a été activé pour permettre l’accès au serveur web Apache.

Étape 3 - Vérification de votre serveur Web

À la fin du processus d’installation, Ubuntu 20.04 lance Apache. Le serveur Web devrait déjà être opérationnel.

Vérifiez avec le système systemd init pour vous assurer que le service fonctionne en tapant :

  1. sudo systemctl status apache2
Output
● apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2020-04-23 22:36:30 UTC; 20h ago Docs: https://httpd.apache.org/docs/2.4/ Main PID: 29435 (apache2) Tasks: 55 (limit: 1137) Memory: 8.0M CGroup: /system.slice/apache2.service ├─29435 /usr/sbin/apache2 -k start ├─29437 /usr/sbin/apache2 -k start └─29438 /usr/sbin/apache2 -k start

Comme cette sortie le confirme, le service a démarré avec succès. Cependant, la meilleure façon de le tester consiste à demander une page à Apache.

Vous pouvez accéder à la page d’accueil par défaut d’Apache pour confirmer que le logiciel fonctionne correctement grâce à votre adresse IP : Si vous ne connaissez pas l’adresse IP de votre serveur, vous pouvez l’obtenir de plusieurs façons différentes à partir de la ligne de commande.

Essayez de taper ceci à l’invite de commande de votre serveur :

  1. hostname -I

Vous obtiendrez quelques adresses séparées par des espaces. Vous pouvez essayer chacune d’elles dans votre navigateur web pour déterminer s’ils fonctionnent.

Utiliser l’outil Icanhazip, qui devrait vous donner votre adresse IP publique telle qu’elle est lue depuis un autre endroit sur Internet, constitue une autre option :

  1. curl -4 icanhazip.com

Une fois que vous avez l’adresse IP de votre serveur, saisissez-la dans la barre d’adresse de votre navigateur :

http://your_server_ip

Vous devriez voir la page web par défaut d’Apache Ubuntu 20.04 :

Page par défaut d'Apache

Cette page indique qu’Apache fonctionne correctement. Elle contient également des informations de base sur les fichiers Apache et les emplacements de répertoires importants.

Étape 4 — Gestion du processus Apache

Maintenant que votre serveur web est opérationnel, passons en revue quelques commandes de gestion de base en utilisant systemctl.

Pour arrêter votre serveur Web, tapez :

  1. sudo systemctl stop apache2

Pour démarrer le serveur web lorsqu’il est arrêté, tapez :

  1. sudo systemctl start apache2

Pour arrêter puis redémarrer le service, tapez :

  1. sudo systemctl restart apache2

Si vous procédez uniquement à des modifications de configuration, il se peut qu’Apache recharge souvent sans interrompre les connexions. Pour ce faire, utilisez cette commande :

  1. sudo systemctl reload apache2

Par défaut, Apache est configuré pour un lancement automatique au démarrage du serveur. Si ce n’est pas ce que vous souhaitez, désactivez ce comportement en tapant :

  1. sudo systemctl disable apache2

Pour réactiver le service de lancement automatique au démarrage, tapez :

  1. sudo systemctl enable apache2

Désormais, Apache devrait démarrer automatiquement au redémarrage du serveur.

É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 serveurs dans Nginx) pour encapsuler les détails de la configuration et héberger plusieurs domaines à partir d’un seul serveur. Nous allons configurer un domaine appelé your_domain, mais vous devez le remplacer par le nom de votre domaine. Si vous configurez un nom de domaine avec DigitalOcean, veuillez consulter notre Documentation de mise en réseau.

Apache sur Ubuntu 20.04 a un bloc serveur activé par défaut qui est configuré pour servir des documents à partir du répertoire /var/www/html. Même si cela fonctionne bien pour un seul site, cela peut devenir ingérable si vous hébergez plusieurs sites. Au lieu de modifier /var/www/html, créons une structure de répertoire au sein de /var/www pour un your_domain, en laissant /var/www/html en place comme répertoire par défaut qui sera utilisé si une demande du client ne correspond à aucun autre site.

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

  1. sudo mkdir /var/www/your_domain

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

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

Les autorisations de la racine de votre site Internet devraient être correctes si vous n’avez pas modifié votre valeur umask, qui définit les autorisations de fichier par défaut. Pour vous assurer que vos autorisations sont correctes et permettre au propriétaire de lire, écrire et exécuter les fichiers tout en accordant uniquement des autorisations de lecture et d’exécution aux groupes et aux autres, vous pouvez saisir la commande suivante :

  1. sudo chmod -R 755 /var/www/your_domain

Ensuite, créez une page index.html à l’aide de nano ou de votre éditeur favori :

  1. sudo nano /var/www/your_domain/index.html

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

/var/www/your_domain/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é.

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

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

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

/etc/apache2/sites-available/your_domain.conf
<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    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 dans notre nouveau répertoire et le ServerAdmin dans un e-mail auquel l’administrateur du site your_domain 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 le nom de base.

Enregistrez et fermez le fichier lorsque vous avez terminé.

Activons le fichier avec l’outil a2ensite :

  1. sudo a2ensite your_domain.conf

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

  1. sudo a2dissite 000-default.conf

Ensuite, effectuons un test à la recherche d’éventuelles erreurs de configuration :

  1. sudo apache2ctl configtest

Vous devriez voir la sortie suivante :

Output
Syntax OK

Redémarrez Apache pour implémenter vos modifications :

  1. sudo systemctl restart apache2

Apache devrait maintenant vous présenter votre nom de domaine. Vous pouvez le vérifer en allant sur http://your_domain où vous devriez voir quelque chose similaire à ceci :

Exemple d'hôte virtuel Apache

Étape 6 – Familiarisation avec les fichiers et répertoires Apache importants

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

Contenu

  • /var/www/html : le contenu web réel (qui par défaut ne consiste qu’en la page Apache par défaut que vous avez vue précédemment), est présenté à partir du répertoire /var/www/html. Cela peut être modifié en changeant les fichiers de configuration Apache.

Configuration du serveur

  • /etc/apache2: le répertoire de configuration Apache. Tous les fichiers de configuration Apache se trouvent ici.
  • /etc/apache2/apache2.conf : le fichier de configuration principal d’Apache. Celui-ci peut être modifié pour apporter des changements à la configuration globale de 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 sur le port 443 en plus lorsqu’un module fournissant des capacité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, la configuration de tous les blocs du serveur se fait dans ce répertoire, puis s’active en établissant une liaison avec l’autre répertoire grâce à la commande a2ensite.
  • /etc/apache2/sites-enabled/ : le répertoire dans lequel les hôtes virtuels par site sont stockés. En règle générale, ils sont créés en reliant les fichiers de configuration trouvés dans le répertoire sites-available avec 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 dans le 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 envoyée à votre serveur web est enregistrée dans ce fichier de journal à moins qu’Apache ne soit 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 Apache précise le nombre de détails que les journaux d’erreur contiendront.

Conclusion

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

Si vous souhaitez construire une pile d’applications plus complète, vous pouvez consulter cet article sur Comment configurer une pile LAMP sur Ubuntu 20.04.

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Learn more about us


About the authors
Default avatar

Senior Manager, DevEd

Open source advocate and lover of education, culture, and community.

Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
1 Comments


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Hello,

I installed a site under prestashop with DigitalOcean and everything works very well. I recently needed to perform an action under prestashop that takes more than 30 seconds to complete. Suddenly, to pass the 30secs I have an error message telling me that it is necessary to increase the time limit of execution. So I changed max_execution_time from 30 to 300, in the right file which is in /etc/php/7.4/cli

Nothing changed after that. I think that it would be necessary to restart / reload Apache after this modification of config?

  • Is the sudo systemctl reload apache2 command is the one I should use from the terminal on DigitalOcean and the only one?
  • Should I expect the site to be down for a few min/sec?

Thanks a lot, Jeff.

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Join the Tech Talk
Success! Thank you! Please check your email for further details.

Please complete your information!

Get our biweekly newsletter

Sign up for Infrastructure as a Newsletter.

Hollie's Hub for Good

Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.

Become a contributor

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

Welcome to the developer cloud

DigitalOcean makes it simple to launch in the cloud and scale up as you grow — whether you're running one virtual machine or ten thousand.

Learn more
DigitalOcean Cloud Control Panel