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 #
#################################################################
#Alias et chargement des icones ne sont plus nécessaire
#Alias /icons/ "/usr/share/apache2/icons/"
IndexOptions FancyIndexing VersionSort
<Directory "/usr/share/apache2/icons">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
#AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
#AddIconByType (TXT,/icons/text.gif) text/*
#AddIconByType (IMG,/icons/image2.gif) image/*
#AddIconByType (SND,/icons/sound2.gif) audio/*
#AddIconByType (VID,/icons/movie.gif) video/*
#AddIcon /icons/binary.gif .bin .exe
#AddIcon /icons/binhex.gif .hqx
#AddIcon /icons/tar.gif .tar
#AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
#AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
#AddIcon /icons/a.gif .ps .ai .eps
#AddIcon /icons/layout.gif .html .shtml .htm .pdf
#AddIcon /icons/text.gif .txt
#AddIcon /icons/c.gif .c
#AddIcon /icons/p.gif .pl .py
#AddIcon /icons/f.gif .for
#AddIcon /icons/dvi.gif .dvi
#AddIcon /icons/uuencoded.gif .uu
#AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
#AddIcon /icons/tex.gif .tex
#AddIcon /icons/bomb.gif core
#AddIcon /icons/back.gif ..
#AddIcon /icons/hand.right.gif README
#AddIcon /icons/folder.gif ^^DIRECTORY^^
#AddIcon /icons/blank.gif ^^BLANKICON^^
#DefaultIcon /icons/unknown.gif
<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
#Alias /mrtg /srv/http/mrtg
#############################
# VHOSTS #
#############################
Include vhosts/core.csnu.org.conf.default
Include vhosts/csnu.org.conf.default
Include vhosts/*.conf