Tutoriels Apache pour les débutants

Qu'est-ce qu'Apache ?

Apache est un logiciel d'application remarquable. Il s'agit de l'application de serveur Web la plus utilisée au monde, avec plus de 50 % de part de marché 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 est tiré du nom de la tribu amérindienne « Apache », célèbre pour ses compétences en matière de guerre et d'élaboration de stratégies.

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 eux sont compilés en tant que modules séparés et étendent ses fonctionnalités de base, et peuvent tout fournir, de la prise en charge 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 desservir un certain nombre de sites Web différents.

Apache

Comment installer Apache

Il existe de nombreuses façons d’installer le package ou l’application. Il y a enrôlé ci-dessous –

  1. Une des caractéristiques de cet ouvert L'application Web source est que n'importe qui peut créer un programme d'installation selon son propre environnement. Cela a permis à divers fournisseurs comme Debian, Red Hat, FreeBSD, Suse, etc. de personnaliser l'emplacement des fichiers et la configuration d'Apache en tenant compte des autres applications installées et du système d'exploitation de base.
  2. Outre l'installation à partir d'un programme d'installation basé sur un fournisseur, il existe toujours la possibilité de le créer et de l'installer à partir du code source. L'installation d'Apache à partir du fichier source est indépendante de la plate-forme et fonctionne pour tous les systèmes d'exploitation.

Le serveur Web Apache est une application modulaire dans laquelle l'administrateur peut choisir les fonctionnalités requises et installer différents modules selon ses besoins.

Tous les modules peuvent être compilés sous forme de Objets partagés dynamiques (DSO est un fichier objet qui peut ê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 très simple la tâche d'ajout/suppression/mise à jour de modules de la configuration des serveurs.

Installer Apache : plateforme Linux

Sur les systèmes basés sur Red Hat ou RPM

Si vous utilisez une distribution Linux basée sur RPM (RedHat Package Manager est un utilitaire permettant d'installer des applications sur les systèmes Linux), c'est-à-dire Red Hat, Fedora, CentOs, Suse, vous pouvez installer cette application soit à l'aide du gestionnaire de packages spécifique au fournisseur, soit en créant directement le fichier RPM. à partir de l’archive tar source disponible.

Vous pouvez installer Apache via le gestionnaire de packages par défaut disponible sur toutes les distributions basées sur Red Hat comme CentOs, Red Hat et Fedora.

[root@amsterdam ~]# yum install httpd

L'archive tar source d'Apache peut être convertie en fichier RPM à l'aide de la commande suivante.

[root@amsterdam ~]# rpmbuild -tb httpd-2.4.x.tar.bz2

Il est obligatoire d'avoir le package -devel installé sur votre serveur pour créer un fichier .rpm à partir des sources.

Une fois que vous avez converti le fichier source en un programme d'installation RPM, vous pouvez utiliser la commande suivante pour installer Apache.

[root@amsterdam ~]# 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.

[root@amsterdam ~]# /usr/sbin/apachectl start

[root@amsterdam ~]# service httpd start

[root@amsterdam ~]# /etc/init.d/httpd start

Installer Apache à partir des sources

L'installation d'Apache à partir de la source nécessite que le package –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 que vous avez téléchargé le fichier source, déplacez-le vers le dossier /usr/local/src.

[root@amserversterdam ~] cd /usr/local/src

[root@amserversterdam ~] gzip -d httpd-2.2.26.tar.gz

[root@amserversterdam ~] tar xvf httpd-2.2.26.tar

[root@amserversterdam ~] httpd-2.2.26

Afin de voir toutes les options de configuration disponibles pour Apache, vous pouvez utiliser l'option ./configure –help. L'option de configuration la plus courante est –prefix={nom du répertoire d'installation}.

[root@amserversterdam ~]./configure --help

[root@amserversterdam ~]./configure –prefix=/usr/local/apache –enable-so

[root@amserversterdam ~] make

[root@amserversterdam ~] make install

L'exemple ci-dessus montre la compilation d'Apache dans le répertoire /usr/local/apache avec la fonctionnalité 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 enregistrer

Vous pouvez voir la valeur par défaut Écran de bienvenue Apache2 en parcourant l'adresse IP de votre serveur.

Installer Apache à partir des sources

Qu'est-ce que l'hôte virtuel ?

Un serveur Web Apache peut héberger plusieurs sites Web sur le MÊME serveur. Vous n’avez pas besoin d’un serveur et d’un logiciel Apache distincts pour chaque site Web. Ceci peut être réalisé en utilisant le concept de hôte virtuel or VHôte.

Tout domaine que vous souhaitez héberger sur votre serveur Web aura une entrée distincte dans le fichier de configuration Apache.

hôte virtuel

Types d'hôte virtuel Apache

  1. Hôte virtuel basé sur le nom
  2. Hôte virtuel basé sur l'adresse ou basé sur 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.

Hôte virtuel basé sur le nom

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 via la directive NameVirutalHost dans la configuration Apache, c'est-à-dire Fichier httpd.conf/apache2.conf.

Hôte virtuel Apache Exemple :

NameVirtualHost *:80

<VirtualHost 192.168.0.108:80>

ServerAdmin webmaster@example1.com

DocumentRoot /var/www/html/example1.com      

ServerName www.example1.com

</VirtualHost>

<VirtualHost 192.168.0.108:80>

ServerAdmin admin@example2.com

DocumentRoot /var/www/html/example2.com

ServerName 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 :

[root@amsterdam ~]#httpd –t
Syntax OK

Si le fichier de configuration a une syntaxe incorrecte, il générera une erreur

[root@115 conf.d]# httpd -t

Syntax 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

Afin de configurer un hébergement virtuel basé sur IP, vous avez besoin de plusieurs adresses IP configurées sur votre serveur. Ainsi, le nombre de vhost apache dépendra du nombre d'adresses IP configurées sur votre serveur. Si votre serveur dispose de 10 adresses IP, vous pouvez créer 10 hôtes virtuels basés sur IP.

Hôte virtuel basé sur IP

Dans le diagramme ci-dessus, deux sites Web, example1.com et example2.com, se sont vu attribuer des adresses IP différentes et utilisent un hébergement virtuel basé sur IP.

Listen 192.168.0.100:80

<VirtualHost 192.168.10.108:80>

ServerAdmin webmaster@example1.com

DocumentRoot /var/www/html/example1.com      

ServerName www.example1.com

</VirtualHost>

<VirtualHost 192.168.10.109:80>

ServerAdmin admin@example2.com

DocumentRoot /var/www/html/example2.com

ServerName www.example2.com

</VirtualHost>

De quoi Apache a-t-il besoin pour exécuter un fichier PHP ?

Exécuter des fichiers PHP sur les besoins d'Apache mod_php activé sur votre serveur. Il permet à Apache d'interpréter les fichiers .Php. Il dispose de 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.conf dans le répertoire /etc/httpd/conf.d/. Vous pouvez également le vérifier avec :

httpd -M | grep "php5_module"

La sortie sera similaire à :

Ce dont Apache a besoin pour exécuter un fichier PHP

Gestionnaires PHP dans Apache

  • mod_php
  • CGI
  • FastCGI
  • supPHP

mod_phpest le plus ancien gestionnaire PHP, il intègre PHP à Apache et n'appelle aucun processus PHP externe. Ce module est installé par défaut dans chaque référentiel de distribution Linux, donc activer/désactiver ce module est très simple.

Si vous utilisez FastCGI en tant que gestionnaire PHP, vous pouvez définir plusieurs versions de PHP à utiliser par différents comptes sur votre serveur.

FastCGI, c'est-à-dire mod_fastcgi est une extension de mod_fcgid, tandis que mod_fcgid est une alternative haute performance au 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 que mod_ruby soit activé. 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 les pages Ruby.

(Phusion Passager également connu sous le nom de «passager" 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 /tmp

wget http://www.modruby.net/archive/mod_ruby-1.2.6.tar.gz

tar zxvf mod_ruby-1.2.6.tar.gz

cd mod_ruby-1.2.6/                    

./configure.rb --with-apr-includes=/usr/include/apr-1

make

make 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 ajouter la ligne suivante.

LoadModule ruby_module modules/mod_ruby.so

Si vous souhaitez activer ou désactiver ces modules, vous devez éditer le fichier de configuration Apache et commenter ou décommenter ces modules, si le serveur web est déjà compilé avec ces modules.

Exécutez Ruby avec Apache

Comment sécuriser le serveur Web Apache

Sécuriser votre serveur Web est très important, cela signifie permettre aux autres de voir uniquement les informations prévues, protéger vos données et restreindre l'accès.

Ce sont des éléments courants qui améliorent la sécurité de vos serveurs Web Apache.

1) Masquage des informations sur la version d'Apache et le système d'exploitation :

Apache affiche sa version et le nom du système d'exploitation dans les erreurs, comme indiqué dans la capture d'écran ci-dessous.

Masquage de la version d'Apache et des informations sur le système d'exploitation

Un pirate informatique 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 le serveur Web Apache d'afficher ces informations, nous devons modifier

Option « signature du serveur » disponible dans le fichier de configuration Apache. Par défaut, il est « activé », nous devons le désactiver.

vim /etc/httpd/conf/httpd.conf
ServerSignature Off

ServerTokens Prod

Nous avons également défini « ServerTokens Prod » qui indique au serveur Web de renvoyer uniquement 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

Masquage de la version d'Apache et des informations sur le système d'exploitation

2) Désactiver la liste des répertoires

Si le répertoire racine de votre document ne possède pas de fichier d'index, votre serveur Web Apache affichera par défaut tout le contenu du répertoire racine du document.

Désactiver la liste des répertoires

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>

Désactiver la liste des répertoires

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 –

[root@amsterdam ~]#httpd –M

perl_module (shared)

php5_module (shared)

proxy_ajp_module (shared)

python_module (shared)

ssl_module (shared)

La plupart des modules répertoriés peuvent être désactivés comme mod_imap, mod_include, mod_info, mod_userdir, mod_autoindex, car ils ne sont pratiquement pas 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 situés en dehors du répertoire racine Web ne sont pas accessibles, vous devez vous assurer que le répertoire est restreint avec « Autoriser » et « Option Refuser » dans le fichier de configuration de votre serveur Web.

<Directory/>

Options None

AllowOverride None

Order deny,allow

Deny from all

</Directory>

Une fois que vous avez restreint l'accès en dehors du répertoire racine Web, vous ne pourrez accéder à aucun fichier situé sur un autre dossier de votre serveur Web, vous obtiendrez un code retour 404.

Restreindre l'accès aux fichiers en dehors du répertoire racine Web

5) Utiliser mod_evasive pour réfuter l'attaque DoS

Si vous souhaitez protéger votre serveur Web contre les Dos (c'est-à-dire le déni de service), vous devez activer le module mod_evasive. Il s'agit d'un module tiers qui détecte les attaques Dos et empêche l'attaque de causer 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échargez 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 packages par défaut de votre distribution.

Utiliser mod_security pour améliorer la sécurité Apache

7) Limiter la taille des requêtes

Apache n'a aucune restriction sur la taille totale de la requête http pouvant 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 entre 0 et 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 fait pivoter les fichiers journaux de l'hôte virtuel selon les paramètres définis.

<VirtualHost www.example.com>

  ServerAdmin webmaster@example.com

  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 modifiant le fichier de configuration Apache, c'est-à-dire le fichier apache2.conf (Debian/ubuntu) ou httpd.conf (systèmes basés sur RPM).

Format de journal commun

LogFormat "%h %l %u %t \"%r\" %>s %b" common

CustomLog logs/access_log common

Journal commun généré par Apache

[Wed Oct 11 14:32:52 2000] [error] [client 127.0.0.1] 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\"" combined

CustomLog 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 requête.
  • %r est la ligne de demande du client. (« OBTENIR / 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)
  • Le référent 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 - - [06/Mar/2014:04:22:58 +0100] "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 distinct 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é.

Journal combiné généré par Apache

Configurez votre tout premier serveur Web de production

1. Pour disposer d'un serveur Web de production en cours d'exécution, vous avez besoin d'un serveur Web dédié. nœud (Instance physique/virtuelle ou cloud) exécutant Linux/Unix, Windows, MacOS etc.

2. Le serveur Web doit avoir un connexion réseau directe et Adresse IP statique configuré dessus.

3. Il doit avoir tous les modules requis pour exécuter des pages Web. Si un serveur Web traite des pages PHP, le module PHP doit être activé.

Configurer le serveur Web de production

  1. Il doit également avoir un bon antivirus application configurée et exécutée pour sécuriser le serveur Web contre les attaques de logiciels malveillants ou de virus. Vous avez également besoin d'un mécanisme pour Mise à jour régulièrement l'application antivirus/anti-malware configurée sans aucune intervention manuelle afin d'en tirer le meilleur parti.
  2. Si vous avez des centaines de domaines à héberger sur votre serveur web, vous devez implémenter 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.
  3. Si votre serveur Web a été configuré pour services d'hébergement partagé, les utilisateurs de votre serveur Web doivent être restreints. Un utilisateur d'hébergement partagé doit avoir le moins de privilèges utilisateur afin de ne pas endommager les fichiers importants et de ne pas casser l'ensemble du serveur. Apache ne fournit aucune fonctionnalité de ce type et nécessite différentes applications tierces et une personnalisation du système d'exploitation pour y parvenir.
  4. Si vous ajoutez un nouveau domaine sur votre serveur Web, il faut modifier des centaines de fichiers de configuration pour activer toutes les fonctionnalités du domaine ajouté.
  5. Si l'un des domaines hébergés nécessite paramètre PHP différent que le reste des domaines, la mise en œuvre de cela dans le serveur Web Apache principal est très complexe et nécessite une personnalisation dans une large mesure de votre serveur Web.
  6. 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. Exécution IPTABLE les règles avec ligne de commande sont très complexes. Il a besoin d'une expertise de l'environnement Linux/Unix de base pour écrire des règles de pare-feu efficaces afin de bloquer le trafic indésirable. IPTABLE est basé sur le module netfilter ; il s'agit d'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.
  7. Un serveur Web de production nécessite plusieurs applications différentes comme Email, Ftp pour le téléchargement de fichiers, Domain Name System 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, la personnalisation de chaque application pour obtenir le résultat souhaité. Dépanner toute configuration manquée sera très difficile pour les débutants.

La solution utilisant Cpanel ou un logiciel similaire

CPanel fournit une manière 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 de serveurs Web. Il facilite les tâches complexes et fournit de nombreuses interfaces Web utiles et faciles à utiliser qui effectuent les tâches d'administration système courantes nécessaires au fonctionnement d'un serveur Web.

La solution utilisant CPanel ou un logiciel similaire

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 un script.

La solution utilisant CPanel ou un logiciel similaire

Il vous fournit non seulement des services Web, mais également Mail, DNS, FTP et bien d'autres services requis pour votre application Web.

Une tâche qui nécessite une expertise sur l'hébergement basé sur Linux/Unix, comme l'installation de SSL, la recompilation d'Apache avec différents modules PHP, la mise à jour de la sécurité Web, la configuration de règles IPTABLE efficaces, l'ajout d'utilisateurs FTP, la création de comptes de messagerie pour chaque domaine, l'analyse de la racine de votre document avec un antivirus et la création de bases de données est facile à réaliser 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 les fichiers vers 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 e-mails, les comptes ftp, les bases de données, les enregistrements DNS et d'autres applications.

Il fournit également une documentation solide et dispose d'une très grande communauté d'utilisateurs où vous pouvez discuter et obtenir une solution à vos problèmes.

Alors on peut dire que cPanel est une application idéale pour gérer votre serveur Web avec les fonctionnalités requises. Elle 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 de cPanel comme Plesk, ISPConfig, Ajenti, Kloxo, Open Panel, Zpanel etc.