Installer Apache 2 sur Debian
Apache est un serveur HTTP très répandu. Il est reconnu pour sa modularité et le grand nombre de ses configurations possibles. Cet article à pour but de vous présenter la mise en place d'un serveur Apache 2 sur la distribution Debian GNU/Linux. Il propose aussi d'accélérer la mise en place de quelques configurations basiques.
Ce guide est testé sur:
- Debian 6.0 Squeeze
- Debian 7.0 Wheezy
- Ubuntu 13.10 Saucy Salamander
- Ubuntu 16.04 Xenial Xerus
Installation
Il existe 3 versions de Apache 2 dans les dépôts Debian:
- apache2-mpm-worker : Version multi-thread permettant de gérer un grand nombre de connexion avec une faible consommation de ressources.
- apache2-mpm-event : Version modifiée de apache2-mpm-worker apportant une gestion améliorée du Keep-Alive. Cette version est expérimentale dans Apache 2.2 (Debian 6.0 Squeeze et inférieure).
- apache2-mpm-prefork : Version non-multi-thread nécessaire à l'utilisation du module PHP. Cette version est faiblement optimisée. Il faut lui préférer l'utilisation de PHP-FPM avec apache2-mpm-worker.
Détectez le proxy de commande (command ou sudo):
cmdProxy='command'
command type -f 'sudo' &>'/dev/null' && cmdProxy='sudo'
Installez le serveur HTTP:
if [ -n "$(command apt-cache pkgnames apache2-mpm-worker)" ]; then
${cmdProxy} apt-get install apache2-mpm-worker
else
${cmdProxy} apt-get install apache2
fi
Activez les modules rewrite :
${cmdProxy} a2enmod rewrite
Activez les hôtes virtuels nommés (NameVirtualHost) permettant d'héberger plusieurs noms de domaines sur une même adresse IP :
[[ -z "$(command grep 'NameVirtualHost.*:80' /etc/apache2/ports.conf)" ]] \
&& ${cmdProxy} sed -i -e '/Listen[\t ]*80/i\
<IfVersion < 2.4>\
NameVirtualHost *:80\
</IfVersion>' '/etc/apache2/ports.conf'
default_site='/etc/apache2/sites-available/default'
[[ -e "${default_site}" ]] \
&& || default_site='/etc/apache2/sites-available/000-default.conf'
[[ -e "${default_site}" && -z "$(command grep 'VirtualHost[ \t]*\*:80' "${default_site}")" ]] \
&& ${cmdProxy} sed -i -e 's/\(VirtualHost[ \t]*\*\)>/\1:80>/g' \
-e 's/^\(NameVirtualHost.*\)$/#\1/g' \
"${default_site}"
Rechargez la configuration :
${cmdProxy} service 'apache2' 'force-reload'
Redirigez les e-mails envoyés à l'utilisateur www-data vers le compte root:
[[ -e '/etc/aliases' && -z "$(command grep '^www-data:' '/etc/aliases' )" ]] \
&& ${cmdProxy} sed -i -e '/^root:/i\
www-data: root' \
'/etc/aliases'
Rechargez la liste des alias:
command type -f 'newaliases' &>'/dev/null' && ${cmdProxy} newaliases
Finalisation
Ce guide recommande:
- Simplifier l'administration d'un serveur Apache 2 avec a2tools
- Activer le protocole HTTPS avec Apache 2 sur Debian
- Durcir la sécurité d'un serveur Apache 2 sur Debian
PHP 5
Ce guide recommande l'activation du support PHP avec:
Remarque: si vous ne souhaitez pas utiliser PHP-FPM, installez PHP avec:
if [ -n "$(command apt-cache pkgnames libapache2-mod-php7.0)" ]; then
${cmdProxy} apt-get install libapache2-mod-php7.0
${cmdProxy} a2enmod php7.0 else
${cmdProxy} apt-get install libapache2-mod-php5
${cmdProxy} a2enmod php5
fi
${cmdProxy} service 'apache2' 'force-reload'
Statistiques de fréquentation
Ce guide recommande ces outils d'analyse de la fréquentation:
- Installer l'outil d'analyse Web AWStats sur Debian : analyse des journaux du serveur HTTP.
- Installer l'outil d'analyse Web Piwik sur Debian : code Javascript à intégrer dans les sites surveillés (équivalent libre à Google Analytics).
Administration
Les commandes suivantes sont disponibles pour administrer le serveur:
- a2enmod: Active un module (les configurations des modules disponibles sont dans le dossier '/etc/apache2/mods-available').
- a2dismod: Désactive un module actif (les configurations des modules actifs sont dans le dossier '/etc/apache2/mods-enabled')
- a2ensite: Active un site (les configurations des sites disponibles sont dans le dossier '/etc/apache2/sites-available')
- a2dissite: Désactive un site (les configurations des sites actifs sont dans le dossier '/etc/apache2/sites-enabled')
- apache2ctl: Outil avancé d'administration du serveur Apache 2.
Testez la configuration du serveur (important pour éviter les indisponibilités dues à des erreurs de configuration):
# ${cmdProxy} apache2ctl -t
Rechargez la configuration du serveur sans interrompre le service:
# ${cmdProxy} service 'apache2' 'reload'
Rechargez la configuration du serveur en redémarrant le serveur sans couper les connexions existantes (par d'erreur HTTP):
# ${cmdProxy} service 'apache2' 'force-reload'
Rechargez la configuration du serveur en coupant les connexions existantes (une erreur HTTP est affichée au client):
# ${cmdProxy} service 'apache2' 'restart'
Obtenez la liste des modules Apache 2 actifs :
# ${cmdProxy} apache2ctl -t -D DUMP_MODULES
Références
- La documentation du serveur HTTP Apache Version 2.2 (fr) est une lecture indispensable.
- Pour une utilisation avancée de mod_rewrite, lisez "Le module Apache mod_rewrite (fr)".
Ces livres peuvent vous aider:
Remerciements
- Merci à George Notaras (en) pour SSL-enabled Name-based Apache Virtual Hosts with mod_gnutls (en).
- Merci à Alsacréations (fr) pour Installation d'Apache et PHP (fr).
- Merci à la Ferme du Web (fr) pour .htaccess - Quelques astuces bien pratiques à connaître (fr).
- Merci à Desidia (fr) pour Enjoliver le listage de fichiers par Apache (fr).
Enregistrer
Enregistrer