Apache est le serveur Web le plus couramment utilisé sur les systèmes Linux. Les serveurs Web sont utilisés pour délivrer les pages Web demandées par les ordinateurs clients. Les clients demandent et affichent les pages Web en utilisant des logiciels de navigation sur le Web, tel que Firefox, Opera ou Mozilla.
Les utilisateurs saisissent un URL (Uniform Resource Locator) qui pointe vers un serveur Web identifié par un nom de domaine pleinement qualifié (FQDN), et chemin d'accès vers le document demandé. Par exemple, pour lire la page d'accueil du site web d'Ubuntu l'utilisateur va simplement saisir le nom de domaine (FQDN). Pour accéder à une information plus précise sur le support payant, l'utilisateur va saisir le FQDN suivi du chemin d'accès au document.
La méthode la plus communément utilisée pour le transfert de pages web est le protocole de transfert d'hyper texte (dont l'acronyme anglais est HTTP). Le protocole de tansfert d'hyper texte sur sockets sécurisées (HTTPS) et le protocole de transfert de fichiers (FTP), qui permet d'envoyer et de télécharger des fichiers, sont également supportés.
Les serveurs Web Apache sont fréquemment utilisés en combinaison avec le moteur de base de données MySQL, le langage de script de pré-traitement hyper texte (PHP), et d'autres langages de scripts prisPython et Perl. Cette configuration, d
Le serveur Web Apache2 est disponible sous Ubuntu. Pour l'installer :
Dans un terminal, saisissez cette commande :
sudo apt-get install apache2
Apache est configuré par le biais de directives dans des fichiers texte de configuration. Le fichier principal est appelapache2.conf. De plus, d'autres fichiers de configuration peuvent Include et les caract
Le serveur lit également un fichier contenant les types MIME des documents ; le nom de ce fichier est donné par la directive TypesConfig dont la valeur par défaut est mime.types
.
Le fichier de configuration par défaut d'Apache2 est /etc/apache2/apache2.conf
. Vous pouvez modifier ce fichier afin de configurer le serveur Apache2. Vous pouvez configurer le numéro de port, le répertoire racine des documents, les modules, les fichiers journaux, les hôtes virtuels, etc.
Cette section donne les paramètres essentiels de la configuration du serveur Apache2. Pour de plus amples détails, référez vous à la documentation Apache2.
Apache2 contient par défaut une configuration des hôtes virtuels couvrant les besoins classiques. C'est à dire qu'il est configuré avec un seul hôte virtuel (utlisant la directive VirtualHost) qui peut être modifié, utilisé tel quel si vous ne disposez que d'un seul site, ou encore utilisé comme modèle pour d'autres hôtes virtuels si vous disposez de plusieurs sites. Utilisé comme tel, l'hôte virtuel par défaut sera votre site par défaut ou le site que les utilisateurs verront si l'URL entrée ne correspond à aucun de vos sites définis par des directives ServerName. Pour modifier l'hôte virtuel par défaut, éditez le fichier /etc/apache2/sites-available/default
. Si vous souhaitez configurer un nouvel hôte virtuel ou un site, copiez ce fichier dans le même répertoire avec un nom de votre choix. Par exemple, sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/mynewsite Éditez le nouveau fichier pour configurer le nouveau site en utilisant les directives décrites ci-dessus.
La directive ServerAdmin spécifie l'adresse mail qui figurera comme adresse de l'administrateur du serveur. La valeur par défaut est webmaster@localhost. Cette valeur devrait être remplacée par une adresse dont vous êtes destinataire (dans le cas où vous êtes l'administrateur du serveur). Si votre site rencontre un problème, Apache2 affichera un message d'erreur contenant cette adresse mail afin de lui rapporter le problème. Cette directive est à placer dans les fichiers de configuration de vos sites situés dans /etc/apache2/sites-available.
La directive Listen précise le port, et de manière optionelle l'adresse IP, sur lesquel Apache2 écoute. Si l'adresse IP n'est pas spécifiée, Apache écoutera sur toutes les adresses IP assignées à la machine. La valeur par défaut de la directive Listen est 80. Modifiez la en 127.0.0.1:80 afin qu'Apache2 n'écoute que sur l'interface locale et ne soit pas accessible depuis internet, en 81 (par exemple) afin de modifier le port sur lequel Apache2 écoute, ou laissez la valeur par défaut dans la majorité des cas. Cette directive se situe dans son propre fichier /etc/apache2/ports.conf
La directive ServerName est optionnelle et prend pour valeur le FQDN auquel devrait répondre votre site. L'hôte virtuel par défaut ne dispose pas de directive ServerName : il répond alors à toutes les requêtes pour lesquelles aucune correspondance avec la directive ServerName des autres hôtes virtuels n'a été trouvée. Si vous avez acheté le domaine ubunturocks.com et que vous souhaitez l'héberger sur votre serveur Ubuntu, la valeur par défaut de la directive ServerName dans l'hôte virtuel correspondant devrait être ubunturocks.com. Ajoutez cette directive au nouvel hôte virtuel créé précédemment (/etc/apache2/sites-available/mynewsite
).
![]() |
|
Comme beaucoup de personnes pensent que le préfixe www est d'usage, vous pouvez désirer que votre site réponde également à l'adresse www.ubunturocks.com. Utilisez la directive ServerAlias dans ce but. Vous pouvez également utiliser les caractères jocker au sein de la directive ServerAlias. Par exemple,*.ubunturocks.com permettra |
La directive DocumentRoot précise l'emplacement où Apache doit chercher les fichiers du site. La valeur par défaut est /var/www. Aucun site n'est configuré à cet emplacement, mais si vous décommentez la directive RedirectMatch dans le fichier de configuration /etc/apache2/apache2.conf
les requêtes seront alors redirigées vers /var/www/apache2-default où se trouve le site par défaut d'Apache2. Modifiez cette valeur dans le fichier de configuration de votre hôte virtuel, et n'oubliez pas de créer le répertoire si nécessaire.
![]() |
|
Le contenu du répertoire /etc/apache2/sites-available n'est pas utilisé par Apache2. Des liens symboliques dans /etc/apache2/sites-enabled pointent vers les configurations de sites disponibles situés dans le répertoire "available". Pour créer ces liens symboliques, il faut utiliser la commande a2ensite (activation d'un site Apache2 en anglais) comme suit : sudo a2ensite mynewsite où le fichier de configuration de votre site est |
Cette section explique la configuration par défaut du serveur Apache2. Par exemple, si vous ajoutez un hôte virtuel, les paramètres définis à l'intérieur de l'hôte virtuel sont utilisées dans cet hôte virtuel. Pour une directive qui n'est pas définie à l'intérieur de l'hôte virtuel, la valeur par défaut est utilisée.
La directive DirectoryIndex stipule la page par défaut qui doit être servie lorsqu'un utilisateur demande l'index d'un répertoire en spécifiant un slash final (/) à la fin du nom d'un répertoire.
Par exemple, lorsqu'un utilisateur demande la page http://www.example.com/this_directory/, il ou elle obtiendra ou bien la page spécifiée par la directive DirectoryIndex si elle existe, ou bien un listing du répertoire généré par le serveur si l'option Indexes est spécifiée, ou bien une permission non accordée si aucun des deux cas précédents ne se vérifie. Le serveur essaiera de trouver l'une des pages données dans la directive DirectoryIndex et renverra la première trouvée. S'il ne trouve pas une de ces pages et si l'option Indexes est activée pour ce répertoire, le serveur génèrera et renverra une liste au format HTML des sous-répertoires et fichiers présents dans ce répertoire. La valeur par défaut se trouvant dans le fichier /etc/apache2/apache2.conf
est " index.html index.cgi index.pl index.php index.xhtml". Si Apache2 trouve un fichier dans le répertoire demandé qui correspond à l'un de ces noms, le premier d'entre eux sera affiché.
La directive ErrorDocument vous permet de spécifier le fichier qu'Apache utilise pour des erreurs spécifiques. Par exemple, si un utilisateur fait une requête sur une ressource qui n'existe pas, une erreur 404 sera générée, et avec la configuration par défaut Apache2, le fichier /usr/share/apache2/error/HTTP_NOT_FOUND.html.var
sera affiché. Ce fichier n'est pas dans le répertoire racine du serveur (DocumentRoot), mais il y a une directive Alias dans /etc/apache2/apache2.conf
qui redirige les requêtes erronées vers /usr/share/apache2/error/. Pour voir une liste des directives ErrorDocument par défaut, utilisez la commande : grep ErrorDocument /etc/apache2/apache2.conf
Par défaut, le serveur écrit le journal des transferts dans le fichier /var/log/apache2/access.log. Vous pouvez modifier cela sur la base d'un journal par site dans vos fichiers de configuration de l'hôte virtuel avec la directive CustomLog, ou de l'omettre en acceptant la configuration par défaut spécifiée dans /etc/apache2/apache2.conf
. Vous pouvez également spécifier le fichier dans lequel le journal des erreurs sera enregistré, via la directive ErrorLog, qui a pour valeur par défaut /var/log/apache2/error.log
. Celui-ci est séparé du journal des transferts afin de faciliter la résolution des dysfonctionnements de votre serveur Apache2. Vous pouvez également spécifier le LogLevel ( NdT : la verbosité des journaux ) dont la valeur par défaut est « warn » et LogFormat ( NdT : le format des journaux ), voyez le fichier /etc/apache2/apache2.conf
pour la valeur par défaut de celui-ci.
Certaines options sont spécifiés pour un répertoire plutôt que pour un serveur. Une section pour un répertoire est imbriqué dans des balises de type XML, ressamblant à ceci :
<Directory /var/www/mynewsite>
...
</Directory>
Les options au sein d'une section de répertoire acceptent une ou plusieurs des valeurs suivantes (parmi d'autres), séparées par des espaces :
ExecCGI - Autorise l'exécution des scripts CGI. Les scripts CGI ne sont pas exécutés si cette option n'est pas choisie.
![]() |
|
La plupart des fichiers ne doivent pas être exécutés en tant que scripts CGI. Cela pourrait être très dangereux. Les scripts CGI doivent être placés dans un répertoire séparé et extérieur à votre DocumentRoot, et seul ce répertoire devrait avoir l'option ExecCGI activée. L'emplacement par défaut des scripts CGI est /usr/lib/cgi-bin. |
Includes - Autorise les inclusions côté serveur (server-side includes). Les inclusions côté serveur (server-side includes) permettent à un fichier HTML d'inclure d'autres fichiers. Ce n'est pas une option courante. Pour plus d'informations voyez le Howto Apache2 SSI.
IncludesNOEXEC - Autorise les inclusions côté serveur (SSI), mais désactive les commandes #exec et #include dans les scripts CGI.
Indexes - Affiche une liste formatée du contenu du répertoire, si aucun index de répertoire ( DirectoryIndex ), comme le fichier index.html, n'existe dans le dossier sollicité.
![]() |
|
Pour des raisons de sécurité, ceci ne devrait habituellement pas être activé, et cela ne devrait certainement pas être activé dans votre répertoire racine de documents (DocumentRoot). Si vous êtes certain de vouloir que les utilisateurs voient le contenu complet d'un répertoire, activez cette option avec prudence dans une section pour ce répertoire. |
Multiviews - Support de la négociation de contenu multiviews ; cette option est désactivée par défaut pour des raisons de sécurité. Voyez la documentation Apache2 sur la négociation de contenu
SymLinksIfOwnerMatch - Ne suit les liens symboliques que si le fichier ou répertoire cible a le même propriétaire que le lien.
Les hôtes virtuels vous permettent de faire fonctionner différents serveurs sur la même machine, pour différentes adresses IP, différents noms d'hôtes, ou des ports différents. Par exemple, vous pouvez faire fonctionner le site web http://www.example.com et le site web http://www.anotherexample.com sur le même serveur web en utilisant des hôtes virtuels. Cette option correspond à la directive <VirtualHost> pour l'hôte virtuel par défaut et pour des hôtes virtuels basés sur l'adresse IP. Elle correspond à la directive <NameVirtualHost> pour des hôtes virtuels basés sur leur nom.
Le jeu de directives pour un hôte virtuel ne s'applique que à cet hôte virtuel en particulier. Si une directive est définie globalement pour le serveur et n'est pas définie dans les paramètres de l'hôte virtuel, les paramètres par défaut s'appliquent. Par exemple, vous pouvez définir l'adresse de courriel du webmaster globalement, et ne pas définir d'adresses individuelles pour chaque hôte virtuel.
La valeur de la directive DocumentRoot doit être le répertoire racine (qui contient index.html par exemple) pour l'hôte virtuel. Le répertoire racine par défaut est /var/www
.
La directive ServerAdmin dans la section VirtualHost est l'adresse du courriel utilisée dans le pied de page des pages d'erreurs si vous choisissez d'afficher un pied de page avec une adresse de courriel dans les pages d'erreurs.
Cette section explique comment effectuer les réglages de base du serveur.
LockFile - La directive LockFile définit le chemin vers le fichier lockfile utilisé lorsque le serveur est compilé soit avec USE_FCNTL_SERIALIZED_ACCEPT, soit USE_FLOCK_SERIALIZED_ACCEPT. Ce fichier doit être enregistré sur le disque local. On doit laisser la valeur par défaut à moins que le répertoire des journaux se situe sur un partage NFS. Dans ce cas, la valeur par défaut doit être modifiée pour un emplacement, sur le disque local, lisible uniquement par le super-utilisateur (root).
PidFile - La directive PidFile définit le fichier dans lequel le serveur enregistre son ID de processus (pid : process ID). Ce fichier ne doit être accessible en lecture que par le super-utilisateur (root). Dans la plupart des cas, la valeur par défaut peut être conservée.
User - La directive User définit le numéro d'utilisateur (userid) utilisé par le serveur pour répondre aux requêtes. Ce paramétrage détermine les accès au serveur. Un fichier inaccessible à cet utilisateur sera également inaccessible aux visiteur de votre site web. La valeur par défaut pour la directive User est www-data.
![]() |
|
A moins que vous ne sachiez exactement ce que vous faites, ne définissez jamais la directive User à root. Utiliser root (super-utilisateur) comme valeur pour User créera d'énormes trous de sécurité dans votre serveur web. |
La directive Group est similaire à la directive User. Elle définit le groupe sous lequel le serveur web répondra aux requêtes. Le groupe par défaut est également www-data.
Apache est un serveur modulaire. Ceci implique que seules les fonctionnalités de base sont présentes dans le cœur du serveur. Les fonctionnalités étendues sont disponibles au travers de modules qui peuvent être chargés par Apache. Par défaut, un groupe de modules de base est inclut dans le serveur au moment de la compilation. Si le serveur est compilé pour utiliser des modules chargés dynamiquement, alors les modules peuvent être compilés séparément, et ajoutés à tout moment en utilisant la directive LoadModule. Autrement, Apache doit être recompilé pour ajouter ou supprimer des modules. La compilation Ubuntu d'Apache autorise le chargement dynamique des modules. Les directives de configuration peuvent être conditionnée à la présence d'un module en utilisant un élément <IfModule>. Vous pouvez installer des modules Apache supplémentaires et les utiliser avec votre serveur web. Vous pouvez installer les modules Apache en utilisant la commande apt-get. Par exemple, pour installer le module Apache2 pour l'authentification MySQL, vous pouvez exécuter la commande suivante dans une console :
sudo apt-get install libapache2-mod-auth-mysql
Une fois votre module installé, il sera disponible dans le répertoire /etc/apache2/mods-available
. Vous pouvez utiliser la commande a2enmod pour activer le module. Vous pouvez utiliser la commande a2dismod pour désactiver le module. Une fois le module activé, il sera disponible dans le répertoire /etc/apache2/mods-enabled
.
Le module mod_ssl ajoute une fonctionnalité importante au serveur Apache2 : la capacité de crypter les communications. Ainsi, lorsque votre navigateur communique en utilisant le cryptage SSL, le préfixe https:// est utilisé en début d'url dans la barre d'adresse.
Le module mod_ssl est disponible dans le paquet apache2-common. Si vous avez installé ce paquet, vous pouvez exécuter la commande suivante dans une console pour activer le module mod_ssl :
sudo a2enmod ssl
Pour configurer votre serveur sécurisé, utilisez le cryptage de clé publique pour créer une paire de clés privée/publique. Dans la plupart des cas, vous envoyez une requête de certification (incluant votre clé publique), prouvant l'identité de votre compagnie et le paiement d'une autorité de certification (CA : Certficate Authorty). L'autorité de certification vérifie votre requête de certification et votre identité, et vous renvoie un certificat pour votre serveur sécurisé.
Alternativement, vous pouvez créer votre propre certificat auto-signé. Remarquez cependant, que les certificats auto-signés ne devraient pas être utilisés dans un environnement de production. Les certificats auto-signés ne sont pas acceptés automatiquement par le navigateur de l'utilisateur. Les utilisateurs reçoivent un avertissement du navigateur leur demandant s'ils acceptent le certificat pour créer une connexion sécurisée.
Une fois que vous avez un certificat auto-signé ou un certificat signé par l'autorité de certification (CA) de votre choix, vous devez l'installer sur votre serveur sécurisé.
Vous avez besoin d'une clé et d'un certificat pour faire fonctionner votre serveur sécurisé, ceci signifie que vous pouvez soit générer un certificat auto-signé, soit acheter un certificat signé par une autorité de certification (CA). Un certificat signé par CA fournit deux fonctionnalités importantes pour votre serveur :
Les navigateurs reconnaissent (généralement) automatiquement le certificat et permettent l'établissement d'une connexion sécurisée sans intervention de l'utilisateur.
Lorsqu'une autorité de certification (CA) émet un certificat, cela garanti l'identité de l'organisation qui fournit les pages web au navigateur.
La plupart des navigateurs internet prenant en charge le SSL ont une liste de CA dont les certificats sont automatiquement acceptés. Si le navigateur rencontre un certificat émis par une autorité de certification qui n'est pas dans la liste, le navigateur demandera à l'utilisateur s'il accepte ou non la connexion.
Vous pouvez générer un certificat auto-signé pour votre serveur sécurisé, mais soyez conscient qu'un certificat auto-signé ne fournit pas les mêmes fonctionnalités qu'un certificat signé par un CA. Un certificat auto-signé n'est pas automatiquement reconnu par la plupart des navigateurs internet, et un certificat auto-signé n'offre aucune garantie concernant l'identité de l'organisation qui fournit le site internet. Un certificat signé par un CA fournit ces deux fonctionnalités importantes pour un serveur sécurisé. La procédure pour obtenir un certificat d'un CA est assez simple. En voici un rapide aperçu :
Créez une paire de clefs privé et publique.
Créez une requête de certificat basée sur la clé publique. La requête de certificat contient les informations concernant votre serveur et la société qui l'héberge.
Envoyez votre requête de certificat, avec les documents prouvant votre identité, à l'autorité de certification (CA). Nous ne pouvons pas vous dire quelle autorité de certification choisir. Votre décision peut être basée sur votre expériences passée, ou sur l'expérience de vos amis ou collègues, ou simplement sur des considérations financières.
Une fois l'autorité de certification choisie, vous devez suivre les instructions qu'ils vous ont indiquées pour obtenir un certificat de leur part.
Quand l'autorité de certification est sûre que vous êtes celui que vous prétendez être, elle vous envoie un certificat numérique.
Installez ce certificat sur votre serveur sécurisé, et commencez à prendre en charge les connexions sécurisées.
Que vous ayez obtenu votre certificat d'une autorité de certification, ou qu'il s'agisse d'un certificat auto-signé, la première étape consiste à générer une clé.
Pour générer la requête de signature de certificat (CSR : Certificate Signing Request), vous devez créer votre propre clé. Vous pouvez lancer la commande suivante dans une console pour créer la clé :
openssl genrsa -des3 -out server.key 1024
Generating RSA private key, 1024 bit long modulus .....................++++++ .................++++++ unable to write 'random state' e is 65537 (0x10001) Enter pass phrase for server.key:
Vous pouvez maintenant saisir votre mot de passe. Pour une meilleure sécurité, il doit contenir au minimum huit caractères. La longueur minimum lorsque vous spécifiez -des3 (algorithme de cryptage) est de quatre caractères. Il devrait contenir des chiffres et/ou des signes de ponctuation et ne pas se trouver dans un dictionnaire de mots. Rappelez vous également que votre mot de passe est sensible à la casse (NdT : au sens typographique majuscules/minuscules)
Saisissez à nouveau votre mot de passe pour vérification. Une fois ressaisi correctement, la clé du serveur est générée et stockée dans le fichier server.key
.
![]() |
|
Vous pouvez également lancer votre serveur web sécurisé sans mot de passe. C'est pratique car vous n'aurez pas à saisir votre mot de passe à chaque fois que vous démarrez votre serveur web sécurisé. Mais c'est hautement insécurisé et une clef compromise signifie que le serveur lui-même sera compromis. |
En tout cas, vous pouvez choisir d'exécuter votre serveur web sécurisé sans mot de passe en enlevant l'argument -des3 pendant la phase de génération ou à l'aide de la commande suivante dans une console :
openssl rsa -in server.key -out server.key.insecure
Une fois la commande ci-dessus exécutée, la clé non-sécurisée sera stokée dans le fichier server.key.insecure
. Vous pouvez utiliser ce fichier pour générer la CSR (requête de certificat signé) sans mot de passe.
Pour créer un CSR, lancer la commande suivante dans un terminal :
openssl req -new -key server.key -out server.csr
Il va vous demander de saisir votre mot de passe. Si vous avez saisi le mot de passe correct, il vous demandera de saisir le nom de la compagnie, le nom du site, votre courriel, etc. Une fois tous ces points renseignés, votre CSR sera créée et stocké dans le fichier server.csr
. Vous pouvez transmettre cette CSR à une autorité de certification (CA). L'autorité de certification va utiliser cette CSR et fournir un certificat. D'un autre côté, vous pouvez créer un certificat auto-signé en utilisant cette CSR.
Pour créer le certificat auto-signé, utilisez la commande suivante à l'invite d'un terminal :
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
La commande ci-dessus vous demandera de saisir votre mot de passe. Une fois le mot de passe correct entré, votre certificat sera créé et stocké dans le fichier server.crt
.
![]() |
|
Si votre serveur doit être utilisé dans un environnement de production, vous avez probablement besoin d'un certificat signé par une autorité de certification. Il n'est pas recommandé d'utiliser un certificat auto-signé. |
Vous pouvez installer le fichier de clés server.key
et le fichier du certificat server.crt
ou le fichier du certificat émis par votre autorité de certification, en exécutant les commandes suivantes dans une console :
sudo cp server.crt /etc/ssl/certs sudo cp server.key /etc/ssl/private
Vous devriez ajouter les quatre lignes suivantes au fichier /etc/apache2/sites-available/default
ou au fichier de configuration pour votre hôte virtuel sécurisé. Vous devriez les placer dans la section VirtualHost. Elles devraient être situées sous la ligne DocumentRoot :
SSLEngine on SSLOptions +FakeBasicAuth +ExportCertData +CompatEnvVars +StrictRequire SSLCertificateFile /etc/ssl/certs/server.crt SSLCertificateKeyFile /etc/ssl/private/server.key
HTTPS devrait écouter le port 443. Vous devriez ajouter la ligne suivante au fichier : /etc/apache2/ports.conf
Listen 443
Une fois votre certificat installé, vous devriez redémarrer votre serveur web. Vous pouvez exécuter la commande suivante dans une console pour redémarrer votre serveur web :
sudo /etc/init.d/apache2 restart
![]() |
|
Vous devez saisir votre mot de passe, et vous en souvenir, à chaque fois que vous redémarrez votre serveur web. |
Votre mot de passe vous sera demandé. Une fois le mot de passe correct saisi, le serveur web sécurisé sera démarré. Vous pouvez accéder aux pages web du serveur sécurisé en tapant https://your_hostname/url/ dans la barre d'adresse de votre navigateur.