Installez Apache sur Ubuntu 18.04 Bionic Beaver Linux

Installez Apache sur Ubuntu 18.04 Bionic Beaver Linux

Objectif

Découvrez comment installer Apache sur Ubuntu 18.04, comment configurer des hôtes virtuels, configurer le pare-feu et utiliser des certificats SSL pour une connexion sécurisée

Exigences

  • Autorisation

Conventions

  • # - nécessite que les commandes Linux soient exécutées avec des privilèges racine
    directement en tant qu'utilisateur racine ou en utilisant Sudo commande
  • $ - Exige que les commandes Linux soient exécutées en tant qu'utilisateur non privilégié régulier

Introduction

Le serveur Web Apache n'a pas besoin de grandes présentations: le logiciel open source, publié par l'Apache Foundation, est l'un des serveurs Web les plus utilisés au monde. Dans ce tutoriel, nous verrons comment l'installer, ajuster la configuration du pare-feu pour permettre le trafic HTTP et HTTPS et configurer des hôtes virtuels sur Ubuntu 18.04.

Installation

Installation du serveur Web Apache sur Ubuntu 18.04 Bionic Beaver est un processus vraiment simple:

$ sudo apt-get update && apt-get install apache2

Les scripts d'installation d'Ubuntu prendront soin de commencer et d'activer le apache2 service au démarrage.

Configuration du pare-feu

Pour accéder au contenu par défaut servi par Apache, sur la même machine sur laquelle le serveur s'exécute, nous devrons simplement tirer un navigateur Web et naviguer vers hôte local dans la barre d'adresse. Si tout est configuré correctement, une page devrait nous accueillir avec le «cela fonctionne!" message:

Page d'accueil Apache

Si un pare-feu est activé sur notre système (comme il le devrait), pour rendre le contenu accessible à l'extérieur de notre machine, nous devons autoriser le trafic entrant sur le port 80. La commande à exécuter dépend du gestionnaire de pare-feu utilisé. Par exemple, lors de l'utilisation ufw (Par défaut d'Ubuntu), nous devons courir:

$ sudo ufw autoriser http

De même, si vous utilisez pare-feu, Nous pouvons courir:

$ sudo Firewall-Cmd --permanent --add-Service = http && Firewall-Cmd - Reload

Remarquez que la commande ci-dessus aura son effet sur la zone de pare-feu par défaut. Si nous voulons opérer sur un autre, nous devons le spécifier avec le --zone option.



Configuration d'un hôte virtuel

Le serveur Web Apache a la possibilité d'exécuter plus d'un site Web sur la même machine. Chaque site (un hôte virtuel dans la terminologie Apache) qui doit être servi doit avoir sa propre configuration. Un hôte virtuel peut être IP ou nommé.

Dans ce tutoriel, nous nous concentrerons sur le deuxième type, car il est plus facile à configurer et ne nécessite pas plusieurs adresses IP (les hôtes virtuels basés sur le nom permettent à de nombreux sites Web de partager la même adresse).

L'hôte virtuel par défaut

Sur Ubuntu, l'hôte virtuel par défaut est défini dans le / etc / apache2 / sites disponible répertoire, à l'intérieur du 000 déficientes.confli déposer. Jetons un coup d'œil:

 [… .] Serveradmin webmaster @ localhost documentroot / var / www / html [… .] Errorlog $ apache_log_dir / erreur.log Customlog $ apache_log_dir / access.Journal combiné [… .]]  
Copie

Le La directive sur la ligne 1 est utilisée pour regrouper les paramètres utilisés par Apache pour un hôte virtuel spécifique. La première chose que nous avons vue définie dedans, c'est le *: 80 instruction. Cela indique l'adresse IP et le port utilisés par l'hôte virtuel.

Plusieurs hôtes virtuels peuvent être définis dans le même fichier ou en suivant le schéma «une définition de l'hôte virtuel par fichier». Dans les deux cas, la première définition est considérée comme la valeur par défaut, si aucun autre hôte virtuel n'est égalé par la demande du client.

Le Serveradmin Directive On Line 3I facultatif, et elle est utilisée pour spécifier l'adresse de contact que le serveur Web affichera en cas de messages d'erreur. Normalement, nous voulons fournir une adresse e-mail valide comme argument de cette directive, car le serveur Web utilisera mailto: là-dessus, pour faciliter la contaction de l'administrateur.

Document de document sur la ligne 4is obligatoire et il est essentiel pour la configuration de l'hôte virtuel. L'argument de cette instruction doit être un chemin de système de fichiers valide. Le répertoire fourni sera considéré comme le répertoire racine de l'hôte virtuel et ne doit pas contenir un «/» de fuite «/». Dans ce cas, le répertoire racine du document c'est / var / www / html. Si nous jetons un œil à son contenu, nous voyons qu'il contient indice.html Page utilisée comme page de bienvenue du serveur que nous avons vu avant.

Les deux dernières instructions sur la ligne 8 - 9 fournies dans ce VirtualHost sont Verrure et Coutumelog. En utilisant le premier, nous définissons le fichier dans lequel le serveur enregistrera les erreurs qui se produisent. La seconde, à la place, est utilisée pour enregistrer les demandes envoyées au serveur au format spécifié (vous pouvez l'utiliser comme référence pour une connaissance approfondie des formats de journal).



Créer un nouvel hôte virtuel

Nous avons vu comment le VirtualHost par défaut est défini; Supposons maintenant que nous voulons servir un autre site Web en utilisant notre serveur Web: nous devons définir un nouvel hôte virtuel pour pouvoir atteindre notre objectif.

Comme indiqué ci-dessus, les fichiers d'hôtes virtuels doivent être définis à l'intérieur du / etc / apache2 / sites disponible Répertoire (au moins dans les distributions basées sur Debian): Par conséquent, nous y créerons notre fichier. Avant de faire cela, nous voulons créer le répertoire à utiliser comme notre documenter la racine, et créer une page de base à afficher lorsque nous atteignons le site:

$ sudo mkdir / var / www / exemple && echo "Bienvenue à l'exemple!"> / var / www / exemple / index.html 

Nous pouvons maintenant continuer à configurer notre hôte virtuel:

 DocumentRoot / var / www / Exemple ServerName www.exemple.local 

Il s'agit de la configuration minimale nécessaire pour exécuter un hôte virtuel. Ici, nous pouvons voir une nouvelle directive, Nom du serveur: C'est ce qui définit notre hôte virtuel. Enregistrons ce fichier en tant que exemple.confli. Pour activer notre VirtualHost, nous utilisons le a2ensite Commande: Tout ce que fait cette commande est de créer un lien symbolique du fichier dans le / etc / apache2 / sites compatible annuaire:

$ sudo a2ensite Exemple.confli

Après cela, nous devons recharger la configuration du serveur:

$ sudo systemctl reload apache2.service

Nous avons défini notre VirtualHost, cependant, car il s'agit d'un test et nous n'avons pas de Entrée DNS associé à lui, pour vérifier que la configuration fonctionne, nous devons ajouter une entrée dans le / etc / hôtes fichier de la machine, nous essayons d'atteindre le site à partir de.

$ sudo echo "192.168.122.241 www.exemple.local ">> / etc / hôtes

Sans cette ligne (et sans entrée DNS) serait impossible d'associer l'adresse du serveur au nom de notre VirtualHost, et l'utilisation directement de l'IP du serveur, «déclencherait» à la place l'hôte virtuel par défaut.

De la machine client, si nous naviguons maintenant vers «www.exemple.local », nous devrions voir la page minimale que nous configurons ci-dessus:

Exemple d'index VirtualHost

Configuration de SSL

SSL, court pour Calque de sockets sécurisé C'est la technologie qui nous permet de crypter les données impliquées dans la connexion entre le client et le serveur. Lorsque les certificats SSL sont utilisés, https (Hyper Text Transfer Protocol Secure) Remplace HTTP dans l'URL.

Les certificats SSL sont délivrés par une autorité de certificat qui, en tant que tiers de confiance, garantit que quelqu'un est vraiment qui prétend être sur Internet. Les certificats SSL peuvent être très chers, mais il existe deux alternatives principales pour obtenir un certificat: créer un certificat auto-signé ou en obtenir un Escryptons.

Générer un certificat SSL auto-signé

Bien que la génération d'un certificat auto-signé ne soit pas une tâche difficile et peut être utile lorsque vous voulez simplement atteindre le cryptage, il n'est pas utilisable dans des contextes où le certificat lui-même doit être signé par un tiers de confiance. Nous pouvons générer un certificat auto-signé en utilisant le OpenSSL utilitaire:

$ sudo openssl req -x509 \ -days 365 \ -sha256 \ -newkey rsa: 2048 \ -Nodes \ -Keyout Exemple.Key \ -out Exemple-cerred.pem 

Voyons ce que fait cette commande. La première option que nous rencontrons, -x509, modifie le comportement de la commande afin qu'il génère un certificat auto-signé au lieu d'une demande de certificat.

Avec -jours, Nous définissons la validité, en quelques jours, pour le certificat. L'option fournie suivante est -newcy: avec lui, nous créons une nouvelle clé, dans ce cas RSA clé, avec la taille de 2048 bits. Pour notre cas de test, nous ne voulons pas crypter le fichier de clé privée, nous avons donc utilisé -nœuds. Si cette option est omise, le fichier dans lequel la clé est stockée sera protégé par un mot de passe, que nous serons invités à insérer chaque fois que le serveur Web est redémarré.

Avec -clé et -dehors Nous spécifions le fichier pour écrire la clé générée et le certificat, respectivement. Lors du lancement de la commande, nous serons invités à répondre à certaines questions, puis la clé et le certificat seront générés.

Vous êtes sur le point d'être invité à saisir des informations qui seront intégrées à votre demande de certificat. Ce que vous êtes sur le point d'entrer, c'est ce qu'on appelle un nom distingué ou un DN. Il y a pas mal de champs mais vous pouvez laisser un peu de blanc pour certains champs, il y aura une valeur par défaut, si vous entrez '.', Le champ sera laissé vide. ----- Nom du pays (code de 2 lettres) [AU]: Nom de l'état ou de la province (nom complet) [Some-State]: Nom de la localité (par exemple, ville) []: Nom de l'organisation Milan (par exemple, société) [Internet Widgits Pty Ltd] : Damage Inc. Nom de l'unité organisationnelle (par exemple, section) []: nom commun (e.g. serveur fqdn ou votre nom) []: www.exemple.Adresse e-mail locale []: 

La prochaine étape consiste à copier notre clé et notre certificat générés dans / etc / ssl / privé et / etc / ssl / ssl-certs Répertoires respectivement:

$ sudo mv example-cerret.PEM / ETC / SSL / CERTS

Le certificat est public, donc n'a pas besoin d'autorisation spéciale. Maintenant, la clé:

Exemple $ sudo mv.clé / etc / ssl / privé

Il est important que nous ajustions les autorisations de fichier clé. Si nous examinons le / etc / ssl / privé dossier, nous pouvons voir qu'il appartient au racine l'utilisateur et le SSL-cerf groupe, et il a 710 En tant qu'autorisations, ce qui signifie que si le propriétaire a des privilèges complets, le propriétaire du groupe ne peut y accéder et répertorier son contenu, et aucune autorisation n'est autorisée pour les autres:

$ ls -ld / etc / ssl / private drwx - x --- 2 root ssl-cert 4096 mars 16 11:57 / etc / ssl / privé 

Changeons nos autorisations de fichiers clés en conséquence, en donnant au propriétaire des autorisations de lecture et d'écriture et de privilèges en lecture seule pour le groupe:

$ sudo chown Root: SSL-CERT / ETC / SSL / PRIVÉ / EXEMPLE.Key $ sudo chmod 640 / etc / ssl / private / exemple.clé 

Pour utiliser notre certificat, nous devons maintenant activer le module SSL Apache. Nous le faisons en utilisant le a2enmod commande:

$ sudo a2enmod ssl

Nous y sommes presque. Il est maintenant temps de modifier notre hôte virtuel et de le définir de cette façon:

 DocumentRoot / var / www / Exemple ServerName www.exemple.# local Activer le moteur SSL SSLENENINE sur SSLCertificateFile / etc / SSL / CERTS / Exemple-certe.pem sslcertificatekeyfile / etc / ssl / private / exemple.clé 
Copie

Le port 443 sur la ligne 1 est le port utilisé pour HTTPS (à la place du port 80 utilisé pour HTTP). Nous avons également ajouté le Sslengine sur instruction sur la ligne 6, qui est assez explicite.

Enfin sur la ligne 8 à 9, nous avons spécifié les chemins pour notre certificat et nos fichiers clés, en utilisant le Sslcertificatefile et Sslcertificatekeyfile instructions.

Maintenant, suivez les instructions pour ouvrir les ports de pare-feu utilisés au début du tutoriel, mais cette fois pour permettre le https service:

$ sudo ufw autoriser les https

Enfin, recharger la configuration Apache:

$ sudo systemctl reload apache2

Terminé. Maintenant, si auprès du client, nous naviguons vers https: // www.exemple.local Adresse, nous devrions voir le serveur Web nous alerter que le certificat utilisé n'est pas sécurisé (car il est de confiance). Ceci est cependant le signe que notre configuration fonctionne et le trafic entre le client et le serveur sera crypté (vous devrez ajouter une exception au certificat pour l'utiliser).

Alerte du navigateur SSL

Configuration de la crypte

L'alternative aux certificats commerciaux et auto-signés, il est représenté par «Let's Encrypt». Let's Encrypt est une autorité de certificat gratuite, automatisée et ouverte; Son objectif est de permettre d'obtenir automatiquement un certificat de confiance par le navigateur sans aucune intervention humaine.

Cela peut être réalisé par l'utilisation du ACMÉ protocole et un agent de gestion des certificats qui s'exécute sur le serveur.

Pour obtenir un certificat, nous devons démontrer que nous avons un contrôle sur le domaine pour lequel nous voulons utiliser le certificat pour. Si nous n'avons pas d'accès à la coquille sur le serveur, nous devons contacter notre fournisseur de services pour activer Let's Encrypt en notre nom, mais il y a probablement une section dédiée dans le panneau de configuration du service.

Si, au lieu de cela, nous avons un accès shell au serveur en question, tout d'abord, nous devons installer le Certbot Client ACME. Installation de Certbot sur Ubuntu 18.04 C'est juste une question de course:

$ sudo apt-get update && apt-get install certbot python-certbot-apache

Le package de certificat est livré avec un Timer SystemD unité qui exécutera certebot deux fois par jour pour maintenir le certificat à jour. L'obtention d'un certificat est assez simple:

$ sudo certbot --apache -m -d 

De toute évidence, pour que cela fonctionne, le domaine doit pointer correctement vers notre IP de serveur accessible au public. CERTBOT vous invitera à certaines questions pour modifier la configuration, et si tout se passe bien, le certificat et la clé devraient enregistrer dans le / etc / lesencrypt / live / annuaire. Ajustez simplement votre fichier hôte virtuel pour les pointer et vous avez terminé!

Tutoriels Linux connexes:

  • Choses à installer sur Ubuntu 20.04
  • Choses à faire après l'installation d'Ubuntu 20.04 Focal Fossa Linux
  • Installez Arch Linux dans VMware Workstation
  • Ubuntu 20.04: WordPress avec l'installation de Nginx
  • Choses à installer sur Ubuntu 22.04
  • Activer / désactiver le pare-feu sur Manjaro Linux
  • Choses à faire après l'installation d'Ubuntu 22.04 Jammy Jellyfish…
  • Ubuntu 20.04 WordPress avec installation Apache
  • Configuration du serveur FTP sur Linux
  • Comment configurer vsftpd sur Debian