Tutoriels Apache pour débutants
Qu’est-ce qu’Apache ?
Apache est un logiciel d’application remarquable. C’est l’application de serveur Web la plus utilisée au monde avec plus de 50% de part sur le marché des serveurs Web commerciaux. Apache est l’application de serveur Web la plus utilisée dans les systèmes d’exploitation de type Unix, mais peut être utilisée sur presque toutes les plates-formes telles que Windows, OS X, OS/2, etc. Le mot, Apache, a été tiré du nom de la tribu amérindienne « Apache », célèbre pour ses compétences en matière de guerre et de stratégie.
Il s’agit d’une application de serveur Web modulaire basée sur des processus qui crée un nouveau thread à chaque connexion simultanée. Il prend en charge un certain nombre de fonctionnalités; beaucoup d’entre elles sont compilées en tant que modules séparés et étendent ses fonctionnalités de base, et peuvent tout fournir, du support du langage de programmation côté serveur au mécanisme d’authentification. L’hébergement virtuel est l’une de ces fonctionnalités qui permet à un seul serveur Web Apache de servir un certain nombre de sites Web différents.
Comment installer Apache
Il existe de nombreuses façons d’installer le paquet ou l’application. Il y a enrôlé ci-dessous –
- L’une des caractéristiques de cette application Web open source est que tout le monde peut créer un installateur selon son propre environnement. Cela a permis à divers fournisseurs comme Debian, Red Hat, FreeBSD, Suse, etc. pour personnaliser l’emplacement du fichier et la configuration d’apache en tenant compte des autres applications installées et du système d’exploitation de base.
- En plus de l’installer à partir d’un installateur basé sur un fournisseur, il est toujours possible de le construire et de l’installer à partir du code source. L’installation d’Apache à partir du fichier source est indépendante de la plate-forme & fonctionne pour tous les systèmes d’exploitation.
Le serveur web apache est une application modulaire dans laquelle l’administrateur peut choisir la fonctionnalité requise et installer différents modules selon ses besoins.
Tous les modules peuvent être compilés en tant qu’objets partagés dynamiques (DSO est un fichier objet pouvant être partagé par plusieurs applications pendant leur exécution) qui existe séparément du fichier apache principal. L’approche DSO est fortement recommandée, elle rend la tâche d’ajouter / supprimer / mettre à jour des modules de la configuration des serveurs très simple.
Installez Apache:Linux Platform
Sur des systèmes basés sur Red Hat ou rpm
Si vous utilisez une distribution Linux basée sur rpm (le gestionnaire de paquets RedHat est un utilitaire pour installer une application sur des systèmes Linux), c’est-à-dire Red Hat, Fedora, CentOS, Suse, vous pouvez installer cette application soit par le gestionnaire de paquets spécifique au fournisseur, soit par la construction directe du fichier rpm à partir de l’archive tarball source disponible.
Vous pouvez installer Apache via le gestionnaire de paquets par défaut disponible sur toutes les distributions basées sur Red Hat comme CentOS, Red Hat et Fedora.
# yum install httpd
L’archive tarball source apache peut être convertie en fichier rpm à l’aide de la commande suivante.
# rpmbuild -tb httpd-2.4.x.tar.bz2
Il est obligatoire d’avoir le package -devel installé sur votre serveur pour la création.fichier rpm de la source.
Une fois que vous avez converti le fichier source en programme d’installation rpm, vous pouvez utiliser la commande suivante pour installer Apache.
# rpm –ivh httpd-2.4.4-3.1.x86_64.rpm
Après l’installation, le serveur ne démarre pas automatiquement, pour démarrer le service, vous devez utiliser l’une des commandes suivantes sur Fedora, CentOS ou Red Hat.
# /usr/sbin/apachectl start# service httpd start# /etc/init.d/httpd start
Installer Apache à partir de la source
Installer apache à partir de la source nécessite que le paquet –devel soit installé sur votre serveur. .Vous pouvez trouver la dernière version disponible d’Apache, vous pouvez la télécharger ici. Une fois le fichier source téléchargé, déplacez-le dans le dossier /usr/local/src.
cd /usr/local/src gzip -d httpd-2.2.26.tar.gz tar xvf httpd-2.2.26.tar httpd-2.2.26
Afin de voir toutes les options de configuration disponibles pour Apache, vous pouvez utiliser./ configurer – option d’aide. L’option de configuration la plus courante est –prefix={nom du répertoire d’installation}.
./configure --help./configure –prefix=/usr/local/apache –enable-so make make install
L’exemple ci-dessus montre la compilation d’Apache dans le répertoire /usr/local/apache avec la capacité DSO. L’option -enable-so peut charger les modules requis sur apache au moment de l’exécution via le mécanisme DSO plutôt que de nécessiter une recompilation.
Une fois l’installation terminée, vous pouvez parcourir la page par défaut des serveurs Web avec votre navigateur préféré. Si le pare-feu est activé sur votre serveur, vous devez faire une exception pour le port 80 sur le pare-feu de votre système d’exploitation. Vous pouvez utiliser la commande suivante pour ouvrir le port 80.
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
service iptables save
Vous pouvez voir l’écran d’accueil Apache2 par défaut en parcourant l’adresse IP de votre serveur.
Qu’est-ce qu’un hôte virtuel ?
Un serveur web Apache peut héberger plusieurs sites Web sur le MÊME serveur. Vous n’avez pas besoin d’une machine serveur et d’un logiciel Apache distincts pour chaque site Web. Cela peut être réalisé en utilisant le concept d’hôte virtuel ou d’hôte virtuel.
Tout domaine que vous souhaitez héberger sur votre serveur Web aura une entrée distincte dans le fichier de configuration apache.
Types d’hôte virtuel Apache
- Hôte virtuel basé sur le nom
- Hôte virtuel basé sur l’adresse ou l’IP et.
Hôte virtuel basé sur le nom
L’hébergement virtuel basé sur le nom est utilisé pour héberger plusieurs sites virtuels sur une seule adresse IP.
Afin de configurer l’hébergement virtuel basé sur le nom, vous devez définir l’adresse IP sur laquelle vous allez recevoir les requêtes Apache pour tous les sites Web souhaités. Vous pouvez le faire par la directive NameVirutalHost dans la configuration apache, c’est-à-dire httpd.conf/apache2.fichier conf.
Exemple d’hôte virtuel Apache:
NameVirtualHost *:80<VirtualHost 192.168.0.108:80>ServerAdmin This email address is being protected from spambots. You need JavaScript enabled to view it.DocumentRoot /var/www/html/example1.com ServerName www.example1.com</VirtualHost><VirtualHost 192.168.0.108:80>ServerAdmin This email address is being protected from spambots. You need JavaScript enabled to view it.DocumentRoot /var/www/html/example2.comServerName www.example2.com</VirtualHost>
Vous pouvez ajouter autant d’hôtes virtuels, selon vos besoins. Vous pouvez vérifier vos fichiers de configuration web avec :
#httpd –tSyntax OK
Si le fichier de configuration a une syntaxe incorrecte, une erreur sera générée
# httpd -tSyntax error on line 978 of /etc/httpd/conf/httpd.conf:Invalid command '*', perhaps misspelled or defined by a module not included in the server configuration
Hôte virtuel basé sur IP
Pour configurer l’hébergement virtuel basé sur IP, vous avez besoin de plus d’une adresse IP configurée sur votre serveur. Ainsi, le nombre de serveurs virtuels apache dépendra denombre d’adresse IP configurée sur votre serveur. Si votre serveur possède 10 adresses IP, vous pouvez créer 10 hôtes virtuels basés sur IP.
Dans le diagramme ci-dessus, deux sites Web example1.com et example2.com différentes adresses IP ont été attribuées et utilisent un hébergement virtuel basé sur IP.
Listen 192.168.0.100:80<VirtualHost 192.168.10.108:80>ServerAdmin This email address is being protected from spambots. You need JavaScript enabled to view it.DocumentRoot /var/www/html/example1.com ServerName www.example1.com</VirtualHost><VirtualHost 192.168.10.109:80>ServerAdmin This email address is being protected from spambots. You need JavaScript enabled to view it.DocumentRoot /var/www/html/example2.comServerName www.example2.com</VirtualHost>
De quoi Apache a-t-il besoin pour exécuter un fichier Php ?
L’exécution de fichiers Php sur Apache nécessite l’activation de mod_php sur votre serveur. Il permet à Apache d’interpréter.Fichiers Php. Il a des gestionnaires Php qui interprètent le code Php dans apache et envoient du HTML à votre serveur Web.
Si mod_php est activé sur votre serveur, vous aurez un fichier nommé php.dans /etc/httpd/conf.d/ répertoire. Vous pouvez également le vérifier avec:
httpd -M | grep "php5_module"
La sortie sera similaire à:
Gestionnaires Php dans Apache
- mod_php
- CGI
- FastCGI
- suPHP
mod_phpest le plus ancien gestionnaire PHP, il fait partie d’apache et n’appelle aucun processus PHP externe. Ce module est installé par défaut dans tous les dépôts de distribution Linux, il est donc très facile d’activer/désactiver ce module.
Si vous utilisez FastCGI comme gestionnaire PHP, vous pouvez définir plusieurs versions de PHP pour qu’elles soient utilisées par différents comptes sur votre serveur.
FastCGI c’est-à-dire mod_fastcgi est une extension de mod_fcgid, où as mod_fcgid est une alternative haute performance de CGI c’est-à-dire mod_cgi. Il démarre un nombre suffisant d’instances de CGI pour gérer les requêtes Web simultanées. Il utilise également suexec pour prendre en charge différents utilisateurs avec leurs propres instances de PHP et améliore la sécurité Web.
L’exécution de fichiers ruby sur Apache nécessite l’activation de mod_ruby. Apache peut également gérer les fichiers ruby via FastCGI. Il est possible d’utiliser plusieurs versions de ruby à l’aide de mod_fcgid, c’est-à-dire FastCGI.
Vous pouvez également installer apache passenger et configurer Apache pour l’utiliser pour servir des pages ruby.
(Phusion Passenger également connu sous le nom de « passenger” est un module de serveur web gratuit conçu pour s’intégrer à Apache et Nginx)
Étapes pour installer mod_ruby sur votre serveur –
cd /tmpwget http://www.modruby.net/archive/mod_ruby-1.2.6.tar.gztar zxvf mod_ruby-1.2.6.tar.gzcd mod_ruby-1.2.6/ ./configure.rb --with-apr-includes=/usr/include/apr-1makemake install
Comment exécuter Ruby avec Apache
Nous devons ajouter le module mod_ruby à la configuration Apache, c’est-à-dire /etc/httpd/conf.d/ ruby.conf et ajoutez la ligne suivante.
Module de charge ruby_module modules/mod_ruby.donc
Si vous souhaitez activer ou désactiver ces modules, vous devez modifier le fichier de configuration apache et commenter ou décommenter ces modules, si le serveur web est déjà compilé avec ces modules.
Comment sécuriser le serveur Web Apache
Sécuriser votre serveur Web est très important, cela signifie permettre aux autres de ne voir que les informations prévues&protéger vos données et restreindre l’accès.
Ce sont des choses courantes qui améliorent la sécurité de vos serveurs Web Apache.
1) Masquage des informations sur la version et le système d’exploitation d’Apache:
Apache affiche sa version et le nom du système d’exploitation en erreurs comme indiqué dans la capture d’écran ci-dessous.
Un pirate peut utiliser ces informations pour lancer une attaque en utilisant les vulnérabilités accessibles au public dans la version particulière du serveur ou du système d’exploitation.
Afin d’empêcher Apache webserver de diffuser ces informations, nous devons modifier
l’option « signature du serveur” disponible dans le fichier de configuration d’apache. Par défaut, il est « on », nous devons le définir ”off ».
vim /etc/httpd/conf/httpd.conf
ServerSignature OffServerTokens Prod
Nous avons également défini « ServerTokens Prod” qui indique au serveur web de ne renvoyer qu’apache et de supprimer la version majeure et mineure du système d’exploitation
Après avoir modifié le fichier de configuration, vous devez redémarrer/ recharger votre serveur web apache pour le rendre efficace.
service httpd restart
2)Désactiver la liste des répertoires
Si le répertoire racine de votre document ne contient pas de fichier d’index, par défaut, votre serveur web apache affichera tout le contenu du répertoire racine du document.
Cette fonctionnalité peut être désactivée pour un répertoire spécifique via la « directive options” disponible dans le fichier de configuration Apache.
<Directory /var/www/html> Options -Indexes</Directory>
3) Désactivation des modules inutiles
Il est recommandé de désactiver tous les modules inutiles qui ne sont pas utilisés. Vous pouvez voir la liste des modules activés disponibles dans votre fichier de configuration apache –
#httpd –Mperl_module (shared)php5_module (shared)proxy_ajp_module (shared)python_module (shared)ssl_module (shared)
De nombreux modules listés peuvent être désactivés comme mod_imap, mod_include, mod_info, mod_userdir, mod_autoindex, car ils ne sont guère utilisés par les serveurs Web de production.
vi /etc/httpd/conf/httpd.conf#LoadModule auth_digest_module modules/mod_auth_digest.so
Une fois que vous avez commenté le module, enregistrez le fichier.
Redémarrez les services Apache avec la commande suivante.
/etc/init.d/httpd restart
4) Restreindre l’accès aux fichiers en dehors du répertoire racine web
Si vous souhaitez vous assurer que les fichiers en dehors du répertoire racine Web ne sont pas accessibles, vous devez vous assurer que le répertoire est restreint avec « Autoriser” et « Refuser l’option” dans votre fichier de configuration de serveur Web.
<Directory/>Options NoneAllowOverride NoneOrder deny,allowDeny from all</Directory>
Une fois que vous limitez l’accès en dehors du directoy racine web, vous ne pourrez accéder à aucun fichier situé sur un autre dossier de votre serveur Web, vous obtiendrez le code de retour 404.
5)En utilisant mod_evasive pour réfuter l’attaque DoS
Si vous souhaitez protéger votre serveur Web contre le Dos (c’est-à-dire le déni de service), vous devez activer le module mod_evasive. C’est un module tiers qui détecte les attaques Dos et empêche l’attaque de faire autant de dégâts qu’elle le ferait si on la laissait suivre son cours. Il peut être téléchargé ici.
Télécharger le fichier ci-dessus
6)Utiliser mod_security pour améliorer la sécurité d’Apache
Ce module fonctionne comme un pare-feu pour Apache et vous permet de surveiller le trafic en temps réel. Il empêche également le serveur Web des attaques par force brute. Le module mod_security peut être installé avec le gestionnaire de paquets par défaut de votre distribution.
7)Limitation de la taille de la requête
Apache n’a aucune restriction sur la taille totale de la requête http qui pourrait conduire à une attaque DoS. Vous pouvez limiter la taille de la requête d’une directive Apache « LimitRequestBody” avec la balise directory. La valeur peut être définie de 0 à 2 Go (c’est-à-dire 2147483647 octets) selon vos besoins.
<Directory "/var/www/html/uploads"> LimitRequestBody 512000</Directory>
Format de journal Apache
Les journaux Apache fournissent des informations détaillées qui aident à détecter les problèmes courants avec le serveur.
Pour créer des journaux d’accès, mod_log_configmodule doit être activé.
Trois directives disponibles dans le fichier de configuration apache, c’est-à-dire
- TransferLog : Création d’un fichier journal.
- LogFormat : Spécification d’un format personnalisé.
- CustomLog : Création et formatage d’un fichier journal.
La directive TransferLog est disponible dans le fichier de configuration apache et elle fait pivoter les fichiers journaux de l’hôte virtuel selon les paramètres définis.
<VirtualHost www.example.com> ServerAdmin This email address is being protected from spambots. You need JavaScript enabled to view it. DocumentRoot /usr/www/example/httpd/htdocs/ ServerName www.example.com ServerAlias example.com www.example ErrorLog /usr/www/example/httpd/logs/error_log TransferLog/usr/www/example/httpd/logs/accesslog CustomLog /usr/www/example/httpd/logs/accesslog combined</VirtualHost>
Deux types de Format de journal Apache
- Format de Journal commun
- Format de journal combiné.
Vous pouvez les activer en éditant le fichier de configuration apache, c’est-à-dire apache2.conf (Debian/ubuntu) ou httpd.fichier conf (systèmes basés sur rpm)
Format de journal commun
LogFormat "%h %l %u %t \"%r\" %>s %b" commonCustomLog logs/access_log common
Journal commun généré par Apache
client denied by server configuration: /export/home/live/ap/htdocs/test
Format de journal combiné
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combinedCustomLog log/access_log combined
Ici,
- %h est l’hôte distant
- %l est l’identité de l’utilisateur déterminée par identd
- %u est le nom d’utilisateur déterminé par l’authentification HTTP
- %t est l’heure à laquelle le serveur a fini de traiter la demande.
- %r est la ligne de requête du client. (« GET/HTTP/1.0 »)
- %>s est le code d’état envoyé du serveur au client (500, 404 etc.)
- %b est la taille de la réponse au client (en octets)
- Referer est la page liée à cette URL.
- User-agent est la chaîne d’identification du navigateur.
Journal combiné généré par Apache :
199.187.122.91 - - "GET /robots.txt HTTP/1.1" 404 1228 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)"
Le journal personnalisé crée un fichier journal séparé pour chaque hôte virtuel sur votre serveur. Il doit être spécifié dans la section hôte virtuel du fichier de configuration.
Vous pouvez voir la configuration de l’hôte virtuel mentionnée ci-dessous, le journal généré sera personnalisé pour cet hôte virtuel et le format sera combiné.
Configurez votre tout premier serveur Web de production
1. Pour avoir un serveur web de production en cours d’exécution, vous avez besoin d’un nœud dédié (instance Physique/virtuelle ou cloud) exécutant Linux/Unix, Windows, macOS, etc.
2. Le serveur Web doit disposer d’une connexion réseau directe et d’une adresse statique configurée sur celui-ci.
3. Il doit avoir tous les modules nécessaires à l’exécution des pages Web. Si un serveur Web traite des pages PHP, le module PHP doit être activé.
- Il doit également disposer d’une bonne application Antivirus configurée et en cours d’exécution pour sécuriser le serveur Web contre les attaques de logiciels malveillants ou de virus. Vous avez également besoin d’un mécanisme pour mettre à jour régulièrement l’application antivirus / anti-malware configurée sans aucune intervention manuelle afin d’en tirer le meilleur parti.
- Si vous avez des centaines de domaines à héberger sur votre serveur Web, vous devez mettre en œuvre des limitations sur le quota du système de fichiers pour chaque domaine, le nombre de bases de données que chaque domaine peut créer, le nombre de comptes de messagerie par domaine, etc.
- Si votre serveur Web a été configuré pour des services d’hébergement partagé, les utilisateurs de votre serveur Web doivent être restreints. Un utilisateur d’hébergement partagé devrait avoir le moins de privilèges d’utilisateur pour ne pas endommager les fichiers importants & casser l’ensemble du serveur. Apache ne fournit pas de telles fonctionnalités et a besoin de différentes applications tierces, de la personnalisation du système d’exploitation pour y parvenir.
- Si vous ajoutez un nouveau domaine sur votre serveur Web, il doit modifier des centaines de fichiers de configuration pour activer toutes les fonctionnalités du domaine ajouté.
- Si l’un des domaines hébergés nécessite un paramètre PHP différent du reste des domaines, l’implémentation de ce paramètre dans le serveur Web Apache principal est très complexe et nécessite une personnalisation importante de votre serveur Web.
- Un serveur Web de production a besoin d’un pare-feu pour bloquer le trafic indésirable qui pourrait entraîner une charge élevée sur votre serveur. La mise en œuvre de règles IPTABLES avec la ligne de commande est très complexe. Il a besoin de l’expertise de l’environnement Linux / Unix de base pour écrire des règles de pare-feu efficaces pour bloquer le trafic indésirable. IPTABLE est basé sur le module netfilter; c’est un pare-feu au niveau du système d’exploitation qui permet à un administrateur de créer des règles pour le trafic entrant / sortant sur le serveur.
- Un serveur web de production nécessite plusieurs applications différentes comme le courrier électronique, le FTP pour le téléchargement de fichiers, le système de noms de domaine pour les domaines parqués. La gestion de toutes ces applications sur un système Linux/Unix de base nécessite une expertise sur les technologies respectives.
Ainsi, on peut dire que la gestion d’un serveur Web pour plusieurs domaines est une tâche très complexe et nécessite l’édition de centaines de fichiers de configuration, en personnalisant chaque application pour obtenir le résultat souhaité. Le dépannage de toute configuration manquante sera très difficile pour les débutants.
La solution utilisant Cpanel ou un logiciel similaire
Cpanel fournit un moyen graphique de gérer votre serveur Web. Il est destiné à fournir des services d’hébergement de masse faciles à utiliser et à configurer. cPanel a réduit les barrières techniques à l’entrée dans l’hébergement et la gestion des serveurs Web. Il facilite les tâches complexes, il fournit de nombreuses interfaces Web utiles et faciles à utiliser qui effectuent des tâches d’administration système courantes requises pour faire fonctionner un serveur Web.
cPanel compile sa propre version du logiciel.
Si vous devez recompiler votre serveur web, c’est-à-dire apache sur une plate-forme Linux normale, vous devez sélectionner / rechercher manuellement le module requis. cPanel fournit la fonctionnalité Easyapache qui est une méthode de compilation de serveur Web basée sur des scripts.
Il vous fournit non seulement des services Web, mais aussi du courrier, du DNS, du FTP et bien d’autres services requis pour votre application Web.
Une tâche qui nécessite une expertise sur l’hébergement Linux / Unix comme l’installation de SSLs, la recompilation d’Apache avec différents modules PHP, la mise à jour de la sécurité Web, la configuration de règles IPTABLES efficaces, l’ajout d’utilisateurs ftp, la création de comptes de messagerie pour chaque domaine, la numérisation de la racine de votre document avec un antivirus et la création de bases de données sont faciles à compléter avec cPanel.
Il fournit de nombreux scripts qui corrigent, installent et dépannent les tâches administratives courantes.
Il fournit une fonctionnalité de sauvegarde et de restauration éliminant le besoin de copier manuellement des fichiers dans le stockage de sauvegarde. Si vous sauvegardez votre domaine, cPanel créera un fichier tar qui contiendra le dossier racine du document, les comptes de messagerie et les courriers électroniques, les comptes ftp, les bases de données, les enregistrements DNS et d’autres applications.
Il fournit également une documentation robuste, et a une très grande communauté d’utilisateurs où vous pouvez discuter et obtenir une solution à vos problèmes.
Ainsi, on peut dire que cPanel est la meilleure application pour gérer votre serveur Web avec les fonctionnalités requises. Il vous fournit une interface facile à utiliser pour gérer votre domaine et un mécanisme pour éviter la complexité de la gestion du serveur Web principal.
Il existe de nombreux produits concurrents à cPanel comme Plesk, ISPConfig, Ajenti, Kloxo, Open Panel, Zpanel, etc.