Comment installer le serveur Web Apache sur Debian 9

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, un support multimédia robuste et une intégration poussée à d’autres logiciels populaires.

Dans ce guide, nous expliquerons comment installer un serveur Web Apache sur votre serveur Debian 9.

Conditions préalables

Avant de commencer ce guide, vous devez avoir un utilisateur régulier, non root, doté des privilèges sudo et configuré 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 utilisateur normal et un pare-feu pour votre serveur en suivant notre configuration du serveur initial guide pour Debian 9.

Lorsque vous avez un compte disponible, connectez-vous en tant qu’utilisateur non root pour commencer.

Étape 1 - Installer Apache

Apache est disponible dans les référentiels de logiciels par défaut de Debian, ce qui permet de l’installer à l’aide d’outils de gestion de paquets classiques.

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

sudo apt update

Ensuite, installez le paquet + apache2 +:

sudo apt install apache2

Après confirmation de 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 afin de permettre un accès externe 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 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 tapant:

sudo ufw app list

Vous verrez une liste des profils d’application:

OutputAvailable applications:
 AIM
 Bonjour
 CIFS
. . .
WWW
WWW Cache
WWW Full
WWW Secure
. . .

Les profils Apache commencent par WWW:

  • * WWW *: Ce profil n’ouvre que le port 80 (trafic Web normal, non chiffré)

  • * Cache WWW *: Ce profil ouvre uniquement le port 8080 (parfois utilisé pour la mise en cache et les proxies Web)

  • * WWW Full *: ce profil ouvre le port 80 (trafic Web normal non crypté) et le port 443 (trafic crypté TLS / SSL)

  • * WWW Secure *: Ce profil n’ouvre que le port 443 (trafic crypté TLS / SSL)

Il est recommandé d’activer le profil le plus restrictif qui autorisera le trafic que vous avez configuré. Comme nous n’avons pas encore configuré SSL pour notre serveur dans ce guide, nous n’aurons besoin que d’autoriser le trafic sur le port 80:

sudo ufw allow 'WWW'

Vous pouvez vérifier le changement en tapant:

sudo ufw status

Vous devriez voir le trafic HTTP autorisé dans la sortie affichée:

OutputStatus: active

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

Comme vous pouvez le constater, le profil a été activé pour permettre l’accès au serveur Web.

Étape 3 - Vérification de votre serveur Web

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

Vérifiez auprès du système init + systemd + pour vous assurer que le service est en cours d’exécution en tapant:

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 Wed 2018-09-05 19:21:48 UTC; 13min ago
Main PID: 12849 (apache2)
  CGroup: /system.slice/apache2.service
          ├─12849 /usr/sbin/apache2 -k start
          ├─12850 /usr/sbin/apache2 -k start
          └─12852 /usr/sbin/apache2 -k start

Sep 05 19:21:48 apache systemd[1]: Starting The Apache HTTP Server...
Sep 05 19:21:48 apache systemd[1]: Started The Apache HTTP Server.

Comme vous pouvez le constater à partir de cette sortie, le service semble avoir démarré correctement. Cependant, le meilleur moyen de tester cela consiste à demander une page à Apache.

Vous pouvez accéder à la page de destination Apache par défaut pour vérifier 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.

Essayez de taper ceci à 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 voir s’ils fonctionnent.

Une alternative consiste à utiliser l’outil + curl +, qui devrait vous donner votre adresse IP publique telle que vue depuis un autre emplacement sur Internet.

Premièrement, installez + curl + en utilisant + apt +:

sudo apt install curl

Ensuite, utilisez + curl + pour récupérer icanhazip.com en utilisant IPv4:

curl -4 icanhazip.com

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

http://

Vous devriez voir la page Web par défaut de Debian 9 Apache:

image: http: //assets.digitalocean.com/how-to-install-lamp-debian-9/small_apache_default_debian9.png [page par défaut d’Apache]

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

Étape 4 - Gestion du processus Apache

Maintenant que votre serveur Web est opérationnel, examinons quelques commandes de gestion de base.

Pour arrêter votre serveur Web, tapez:

sudo systemctl stop apache2

Pour démarrer le serveur Web quand il est arrêté, tapez:

sudo systemctl start apache2

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

sudo systemctl restart apache2

Si vous effectuez simplement des modifications de configuration, Apache peut souvent recharger sans perdre de connexions. Pour ce faire, utilisez cette commande:

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, désactivez ce comportement en tapant:

sudo systemctl disable apache2

Pour réactiver le service pour qu’il démarre au démarrage, tapez:

sudo systemctl enable apache2

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

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

Lorsque vous utilisez le serveur Web Apache, vous pouvez utiliser virtual hosts (similaire aux blocs de serveur 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é * exemple.com *, 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, consultez notre Introduction to DigitalOcean DNS.

Apache sur Debian 9 possède un bloc de serveur activé par défaut, configuré pour servir les documents du répertoire + / var / www / html +. Bien que cela fonctionne bien pour un seul site, cela peut devenir lourd si vous hébergez plusieurs sites. Au lieu de modifier + / var / www / html +, créons une structure de répertoires dans + / var / www + pour notre site * example.com *, en laissant + / var / www / html + par défaut répertoire à servir si une demande du client ne correspond à aucun autre site.

Créez le répertoire pour * exemple.com * comme suit, en utilisant l’indicateur + -p + pour créer les répertoires parents nécessaires:

sudo mkdir -p /var/www//html

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

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

Les permissions de vos racines web doivent être correctes si vous n’avez pas modifié votre valeur + unmask +, mais vous pouvez vous en assurer en tapant:

sudo chmod -R 755 /var/www/

Ensuite, créez un exemple de page + index.html en utilisant` + nano + `ou votre éditeur favori:

nano /var/www//html/index.html

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

/var/www/example.com/html/index.html

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

Enregistrez et fermez le fichier lorsque vous avez terminé.

Pour qu’Apache puisse diffuser ce contenu, il est nécessaire de créer un fichier hôte virtuel avec les directives appropriées. 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 / .conf +:

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

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

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

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

Notez que nous avons mis à jour les éléments + DocumentRoot + dans notre nouveau répertoire et + ServerAdmin + dans un courrier électronique auquel l’administrateur du site * example.com * peut accéder. Nous avons également ajouté deux directives: + NomServeur +, qui définit le domaine de base devant correspondre pour cette définition d’hôte virtuel, et + ServerAlias ​​+, qui définit les noms supplémentaires devant correspondre comme s’il s’agissait du nom de base.

Enregistrez et fermez le fichier lorsque vous avez terminé.

Actionnons le fichier avec l’outil + a2ensite +:

sudo a2ensite .conf

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

sudo a2dissite 000-default.conf

Ensuite, testons les erreurs de configuration:

sudo apache2ctl configtest

Vous devriez voir la sortie suivante:

OutputSyntax OK

Redémarrez Apache pour implémenter vos modifications:

sudo systemctl restart apache2

Apache devrait maintenant servir votre nom de domaine. Vous pouvez tester cela en naviguant dans + http: // +, où vous devriez voir quelque chose comme ceci:

image: https: //assets.digitalocean.com/articles/apache_virt_hosts_1404/example.png [Exemple d’hôte virtuel Apache]

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

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

Contenu

  • + / var / www / html: le contenu Web réel, qui ne comprend par défaut que la page Apache par défaut que vous avez vue précédemment, est diffusé dans le répertoire` + / var / www / html`. Cela peut être changé en modifiant les fichiers de configuration Apache.

Configuration du serveur

  • + / etc / apache2 +: Le répertoire de configuration 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 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 lorsqu’un module fournissant des fonctionnalités SSL est activé.

  • + / etc / apache2 / sites-available / +: Le répertoire où les hôtes virtuels par site peuvent être stockés. Apache n’utilisera pas les fichiers de configuration présents dans ce répertoire, à moins qu’ils ne soient liés au répertoire + sites-enabled +. En règle générale, toutes les configurations de bloc de serveur sont effectuées dans ce répertoire, puis activées en se connectant à l’autre répertoire à l’aide de la commande + a2ensite +.

  • + / etc / apache2 / sites-enabled / +: répertoire dans lequel les hôtes virtuels activés par site sont stockés. Généralement, ceux-ci sont créés en liant des 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 au démarrage 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 les modules disponibles et activés, respectivement. Les fichiers se terminant par + .load + contiennent des fragments permettant de charger des modules spécifiques, tandis que ceux 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, à moins qu’Apache ne soit configuré pour agir 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 le niveau de détail que contiendront les journaux d’erreur.

Conclusion

Maintenant que votre serveur Web 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 consulter cet article à l’adresse https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mariadb-php-lamp. -stack-debian9 [comment configurer une pile LAMP sous Debian 9].