Installation et configuration d'un serveur http apache 2.2
Ce howto a été écrit au départ pour debian etch puis a été adapté pour debian lenny. Il reste cependant valable la plupart du temps pour ces deux versions de debian.
Ce howto va vous montrer comment mettre en place un serveur web apache2 gérant les domaines virtuels et l'ipv6 sous debian lenny.
Nous allons mettre en place trois sites : core.csnu.org
, www.csnu.org
et webmail.csnu.org
.
core.csnu.org
sera le site par défaut sur lequel tombera toute personne effectuant une requête http ne désignant aucun autre domaine virtuel.
www.csnu.org
et webmail.csnu.org
sont ce qu'on peut appeler des domaines virtuels : ils sont sur la même ip que core.csnu.org
mais servent des domaines différents. Ces deux domaines disposeront d'un chiffrement ssl/tls actif.
Au niveau dns, core.csnu.org
est le domaine identifiant la machine. Il possède l'adresse ipv4 213.186.47.110
et l'adresse ipv6 2001:41d0:1:d6e::127
.
www.csnu.org
et webmail.csnu.org
sont des alias pour core.csnu.org
.
Les changements de permissions effectués dans ce howto supposent que vous êtes en umask 0027
Champs dns
La première étape est de mettre en place les champs dns pour les différents domaines qu'on va gérer. Éditez la zone dns de votre domaine (/srv/http/csnu.org.host
dans mon cas) et ajoutez ou modifiez les lignes suivantes :
csnu.org. IN A 213.186.47.110 csnu.org. IN AAAA 2001:41d0:1:d6e::110 core.csnu.org. IN A 213.186.47.110 core.csnu.org. IN AAAA 2001:41d0:1:d6e::110 www IN CNAME core.csnu.org. webmail IN CNAME core.csnu.org.
Si vous ne disposez pas d'ipv6, vous n'avez pas besoin des champs AAAA
.
Installation de apache2
Utilisez aptitude pour installer apache2:
aptitude install apache2
Créez les dossier qui contiendront les vhosts et la configuration des sites :
mkdir /etc/apache2/vhosts mkdir /etc/apache2/sites
Créez le dossier /srv/http/
qui contiendra les sites internet :
mkdir /srv/http/ chown root:www-data /srv/http/
Configuration de apache2
Voici un exemple de fichier apache2.conf. Nous verrons ensuite plus en détail les différentes directives de configuration utilisées.
ServerRoot /etc/apache2 Listen 213.186.47.110:80 Listen 213.186.47.110:443 Listen 127.0.0.1:80 Listen ::1:80 Listen 2001:41d0:1:d6e::110:80 Listen 2001:41d0:1:d6e::110:443 User www-data Group www-data PidFile /var/run/apache2.pid ServerAdmin root@csnu.org ServerName www.csnu.org:80 HostnameLookups Off ServerTokens Prod NameVirtualHost 213.186.47.110:80 NameVirtualHost 213.186.47.110:443 NameVirtualHost 2001:41d0:1:d6e::110:80 NameVirtualHost 2001:41d0:1:d6e::110:443 #NameVirtualHost 127.0.0.1:80 AcceptPathInfo On KeepAlive On KeepAliveTimeout 5 MaxKeepAliveRequests 100 <IfModule mpm_prefork_module> StartServers 2 MinSpareServers 2 MaxSpareServers 5 MaxClients 40 MaxRequestsPerChild 400 </IfModule> #<IfModule mpm_worker_module> # StartServers 3 # MaxClients 80 # MinSpareThreads 3 # MaxSpareThreads 6 # ThreadsPerChild 0 # MaxRequestsPerChild 200 #</IfModule> Include /etc/apache2/mods-enabled/*.load Include /etc/apache2/mods-enabled/*.conf # PHPIniDir /etc/php5/apache2 AddHandler cgi-script .cgi .pl DefaultLanguage fr AddDefaultCharset UTF-8 DocumentRoot /srv/http/default/ #Sécurisation de php pour tous les vhosts/autres qui n'en ont pas de configuré php_admin_value open_basedir /srv/http/default/ <Directory /> Options Indexes FollowSymLinks AllowOverride All Order allow,deny Allow From All IndexIgnore .ht* IndexIgnore .svn </Directory> AccessFileName .htaccess <FilesMatch "^\.ht"> Order allow,deny Deny From All Satisfy All </FilesMatch> <DirectoryMatch "\.svn"> Deny from all </DirectoryMatch> DirectoryIndex index.html index.htm index.php ErrorLog /var/log/apache2/error.log LogFormat "[%{%a %b %d %T %G}t] [access] %h %v %H %l %u \"%r\" %>s %b bytes = %D ms (%T s)" common CustomLog /var/log/apache2/access.log common TypesConfig /etc/mime.types DefaultType text/plain ################################################################# # Index # ################################################################# IndexOptions FancyIndexing VersionSort <Directory "/usr/share/apache2/icons"> Options Indexes MultiViews AllowOverride None Order allow,deny Allow from all </Directory> <Location /server-status> SetHandler server-status Order Deny,Allow Deny from all Allow from 127.0.0.1 Allow from ::1 Allow from <votre ip> Allow from 213.186.47.110 Allow from 2001:41d0:1:d6e::110 </Location> ExtendedStatus On ############################# # VHOSTS # ############################# Include vhosts/core.csnu.org.conf.default Include vhosts/csnu.org.conf.default Include vhosts/*.conf
ServerRoot
défini le dossier principal de apache2. C'est dans ce répertoire que les configurations de apache2 sont stockés.User
etgroup
définissent l'utilisateur et le groupe sous lequel apache2 doit être lancé. Ces deux éléments (www-data dans les deux cas) ont normalement été créé automatiquement par aptitude.PidFile
défini l'endroit où le fichier pid de apache2 doit être stocké.Listen
défini les différentes ips et ports sur lesquels apache2 écoute.NameVirtualHost
défini les ips et les ports qui pourront être utilisés par la suite en tant que virtualhost (pour les domaines virtuels).ServerAdmin
défini le nom de la personne (en général une adresse email) que le serveur proposera de contacter en cas de problème lors de l'affichage d'une page ou d'un bug de configuration interne.ServerName
défini le nom du serveur.HostnameLookups
défini s'il faut résoudre l'ip des clients se connectant au serveur dans le but de loguer leur hostname dans les fichiers de logs. Il est préférable de désactiver cette option car apache2 ne servira pas la requête tant que la résolution n'aura pas eu lieu.ServerTokens
défini comment apache2 doit s'identifier auprès des clients.ServerTokens Prod
: Le serveur renvoi : Server: ApacheServerTokens Major
: Le serveur renvoi : Server: Apache/2ServerTokens Minor
: Le serveur renvoie : Server: Apache/2.2ServerTokens Min
: Le serveur renvoi : Server: Apache/2.2.41ServerTokens OS
: Le serveur renvoie : Server: Apache/2.2.41 (Unix)ServerTokens Full
(valeur par défaut) : Le serveur renvoi : Server: Apache/2.2.41 (Unix) PHP/4.2.2 MyMod/1.2
KeepAlive
défini si apache2 doit autoriser les connexions tcp persistantes (plusieurs requêtes http pourront être envoyées lors de la même connexion tcp).KeepAliveTimeout
défini le nombre de secondes que doit attendre apache2 avant de fermer une connexion tcp.MaxKeepAliveRequests
défini le nombre de requêtes maximum que apache2 servira lors de la même connexion tcp. Il est recommandé de laisser cette valeur relativement élevée.
Les lignes suivantes permettent de charger automatiquement tous les modules que vous avez activé pour apache au moyen de la commande a2enmod
:
Include /etc/apache2/mods-enabled/*.load Include /etc/apache2/mods-enabled/*.conf