Dans ce chapitre, vous apprendrez comment installer et configurer Serveur Web Apache httpd. Un serveur Web est le logiciel qui répond et envoie des pages HTML à votre navigateur lorsque vous visitez un site Web. Comme de plus en plus de services sont diffusés sur Internet, il s’agit d’un élément important dont un administrateur doit être conscient.

Apache existe depuis plus de 20 ans, et s’il a perdu des parts de marché ces dernières années, il reste le serveur Web le plus utilisé au monde: il est les Astuce pour savoir. Son principal concurrent est aujourd’hui un autre logiciel libre appelé Nginx et que vous découvrirez plus tard dans ce cours.

Commencez à installer Apache avec la commande suivante:

$ sudo apt-get install apache2

Je vais vous donner un aperçu des fichiers de configuration 🙂

Explorez la configuration d’Apache

Sous Ubuntu, vous trouverez la configuration Apache dans le répertoire /etc/apache2/ . La configuration est ensuite décomposée en un grand nombre de fichiers. Le fichier principal s’appelle apache2.conf . Comme c’est souvent le cas avec les fichiers de configuration, les lignes commencent par un # sont des commentaires et il y a de nombreux commentaires sur ce fichier. Il existe de nombreux paramètres, notamment:

User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}

qui définissent l’utilisateur et le groupe sous lesquels Apache s’exécutera. Vous pouvez voir que les valeurs sont des variables. La valeur réelle est configurée séparément dans le fichier envvars Vous pouvez les modifier dans ce fichier.

En fait, le processus Apache principal commence comme racine Cependant, le seul rôle de ce processus est de démarrer les processus enfants de l’utilisateur spécifié ci-dessus. Ces processus subordonnés se chargent ensuite de répondre aux demandes des clients. Ces processus enfants ont des droits limités aux fonctions qu’ils doivent exécuter (accès réseau, accès aux fichiers du serveur Web, etc.). Si vous souhaitez modifier l’utilisateur et le groupe par défaut, il est important de conserver un utilisateur dédié pour Apache pour des raisons de sécurité.

Vous trouverez alors la configuration des protocoles:

ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
LogFormat "%v:%p %h %l %u %t "%r" %>s %O "%{Referer}i" "%{User-Agent}i"" vhost_combined
LogFormat "%h %l %u %t "%r" %>s %O "%{Referer}i" "%{User-Agent}i"" combined
LogFormat "%h %l %u %t "%r" %>s %O" common

Vous pouvez définir le fichier journal qui sera utilisé pour stocker les journaux d’erreurs Apache (directive) ErrorLog ), le degré de verbosité des logs ( LogLevel ) et divers formats de journaux définis par la directive LogFormat . Différents formats sont préconfigurés pour ce dernier, dont le nom est dans le deuxième paramètre en fin de ligne. Si nécessaire, vous pouvez définir vos propres formats de journal à partir de clés commençant par % et lequel Vous pouvez trouver la liste dans la documentation Apache.

Ce fichier de configuration contient le fichier ports.conf qui contient la fameuse ligne directrice:

Listen 80

Il dit à Apache d’écouter sur toutes les interfaces sur le port 80 (le port standard pour HTTP). Par exemple, si vous souhaitez limiter votre service à une interface spécifique, vous pouvez écrire:

Listen 127.0.0.1:8080

Écoutez uniquement l’interface locale sur le port 8080. Il peut y avoir plusieurs déclarations Listen .

Enfin, ce fichier contient également tous les fichiers de configuration dans:

  • conf-enabled/

  • mods-enabled/

  • sites-enabled/

Le principe de fonctionnement est ce que vous trouverez dans:

  • conf-available/ fichiers de configuration supplémentaires installés sur le système

  • mods-available/ modules installés et leur configuration

  • sites-available/ les configurations des différents emplacements

Pour chacun de ces fichiers et afin d’activer la fonction correspondante, vous devez créer un lien symbolique de type XXXX-enabled/YYYY.conf -> XXXX-available/YYYY.conf . Pour activer / désactiver une fonction, il suffit de créer / supprimer des liens symboliques. De plus, vous verrez plus tard qu’Ubuntu vous donne des commandes pour créer automatiquement ces liens.

La conception d’Apache est modulaire et permet d’ajouter ou de supprimer les fonctions requises à la volée. Ce principe s’applique même aux fonctions qui forment le cœur du logiciel. Comment trouver dans mods-available trois modules du type mpm_*.load . Celles-ci Modules MultiProcessing Définissez comment Apache doit gérer les connexions HTTP. Pour fonctionner, Apache a besoinle seul et unique ce module est chargé. Voici le détail de ces modules:

  • Défaut : Avec ce module, Apache crée un processus enfant pour chaque nouvelle connexion. C’est le plus sûr, mais pas toujours le plus efficace, car il est long et gourmand en mémoire pour gérer autant de processus.

  • Travailleurs : Avec ce module, chaque processus Apache subordonné peut avoir plusieurs connexions dans « Fils». C’est généralement meilleur en termes de performances, mais cela peut poser des problèmes avec les applications Web qui traitent mal ces threads.

  • un événement : Il s’agit du module le plus récent sélectionné par défaut dans Ubuntu. C’est un développement ultérieur de l’employé qui permet de mieux gérer les connexions «keepalive». Ces connexions vous permettent d’effectuer plusieurs requêtes HTTP sur la même connexion réseau.

Je vous recommande de conserver l ‘ »événement » MPM sauf si vous utilisez une application non thread-safe. Dans ce cas, utilisez « Prefork ». Vous configurez maintenant votre premier site statique et l’événement MPM fonctionne correctement.

Configurez votre premier site Web sur Apache

Apache peut gérer plusieurs sites Web sur le même ordinateur. Ceci est connu sous le nom d ‘ »Apache » hôtes virtuels ou alors hôtes virtuels. Dans la requête effectuée par le client sur l’ordinateur, un en-tête HTTP indique si le client souhaite plutôt consulter toto.com ou tata.org, tous deux hébergés sur l’ordinateur. Chaque hôte virtuel est configuré dans un fichier *.conf dans le /etc/apache2/sites-available/ . Alors créez le fichier /etc/apache2/sites-available/01-www.example.com.conf avec les paramètres suivants:

<VirtualHost *:80>
    ServerName www.example.com
    ServerAlias example.com
    ServerAdmin [email protected]
    DocumentRoot /var/www/html/www.example.com

    CustomLog ${APACHE_LOG_DIR}/www.example.com-access.log combined
    ErrorLog ${APACHE_LOG_DIR}/www.example.com-error.log

    <Directory /var/www/html/www.example.com>
        Options All
        AllowOverride None
    </Directory>
</VirtualHost>    

Tout d’abord, notez que la configuration d’un hôte virtuel est contenue dans des balises HTML <VirtualHost *:80></VirtualHost> . le *:80 de la balise d’ouverture indique que l’hôte virtuel sur le port 80 peut être utilisé sur toutes les interfaces. Voici les détails des directives utilisées:

  • ServerName : Spécifie l’hôte pour lequel cette configuration est utilisée. Il ne peut y en avoir qu’un ServerName Paire de VirtualHost

  • ServerAlias : Il ne peut y avoir qu’un seul nom de serveur, par contre vous pouvez compléter autant d’alias de serveur que vous souhaitez séparer avec des espaces

  • ServerAdmin : Spécifie une adresse e-mail de contact qui peut apparaître dans certains messages d’erreur

  • DocumentRoot : C’est le répertoire racine de l’arborescence de votre site web où vous placez tous vos fichiers

Une configuration minimale pourrait s’arrêter là, les autres instructions sont des options supplémentaires.

  • CustomLog : Demande d’enregistrement des fichiers journaux au format combined dans un fichier séparé au lieu de dans le fichier journal général

  • ErrorLog : vous invite à enregistrer également les journaux d’erreurs dans un fichier séparé, mais le format est fixe

  • <Directory /> : Dans la balise de répertoire, vous pouvez définir des règles qui ne s’appliquent qu’au contenu d’un répertoire. Activez toutes les options ici. Voici quelques-unes des options activées:

    • ExecCGI : L’exécution de script avec le module CGI est autorisée

    • FollowSymlinks : Le serveur suit des liens symboliques. Par défaut, cette option est la seule qui est active.

    • Includes : inclusions côté serveur avec le module mod_include sont autorisés

    • Indexes : sinon un type de fichier standard index.html n’existe pas, le module mod_autoindexes affiche une liste de fichiers et de répertoires formatés par Apache

  • AllowOverride None : cette directive a placé dans <Directory /> Indique qu’aucune option ne peut être remplacée par des options qui seraient contenues dans un fichier appelé .htaccess placé dans cet arbre. Vous auriez pu spécifier tour à tour les options qui pourraient être surchargées ou utilisées All Pour autoriser la surcharge de toutes les options: dans ce cas, les options du fichier .htaccess a priorité sur ceux de l’hôte virtuel.

Pour tester votre site Web, il vous suffit de:

$ sudo mkdir /var/www/html/www.example.com/
$ sudo cp /var/www/html/index.html /var/www/html/www.example.com
$ sudo a2ensite 01-www.example.com

Cette commande crée automatiquement le lien symbolique vers le répertoire sites-enabled dans l’annuaire sites-available .

$ sudo systemctl reload apache2

Votre serveur est prêt. Eh bien, si vous ajoutez www.example.com comme alias de votre serveur dans le fichier /etc/hosts Vous pouvez admirer la page d’accueil de votre client dans votre navigateur.

Capture d'écran d'un navigateur sur le client montrant la page d'accueil d'Apache à l'adresse http://www.example.com
La page d’accueil d’Apache, indiquant que votre site Web est actif.

Dans le chapitre suivant, vous apprendrez comment sécuriser votre serveur Web Apache.

résumer

  • Apache httpd est le serveur Web le plus utilisé au monde

  • La configuration Apache est divisée en plusieurs fichiers, tous situés dans /etc/apache2

  • La manière dont Apache gère les connexions est définie par le Module MPM. Un seul MPM peut être actif à la fois.

  • Les modules MPM les plus courants sous Linux sont appelés « un événement » (Par défaut), « Travailleurs« Et »Défaut».

  • Apache peut héberger plusieurs sites Web en tant qu’hôtes virtuels derrière une seule adresse IP (Hôtes virtuels)



Source link

Recent Posts