Installation et configuration de Apache2 sur serveur Debian
Sa modularité et son grand nombre de configurations possibles font d'Apache un serveur HTTP très répandu.
Cet article à pour but de vous présenter la mise en place et la configuration basique d'un serveur Apache2 dans sa version apache2-mpm-worker.
Pré-requis / Difficultés
Nous verrons dans ce guide l'installation de la version mpm-worker d'Apache. C'est une version multi-thread permettant de gérer un grand nombre de connexion avec une faible consommation de ressources.
Les lignes de commandes suivantes doivent être saisie dans un terminal en tant que super-administrateur (utilisateur root).
Ce tuto a été testé sur les distributions Debian suivantes
- Version 7 : Wheezy
- Version 8 : Jessie
- Version 9 : Stretch
- Version 10 : Buster
Installation des paquets Apache2
Depuis Debian Stretch, la version mpm-worker est la version installée par défaut sur les distributions Debian. Le paquet apache2-mpm-worker a été renommé en apache2 depuis cette version.
Nous testons donc la présence du paquet apache2-mpm-worker et s'il est absent nous installons le paquet apache2.
if [ -n "$(command apt-cache pkgnames apache2-mpm-worker)" ]; then apt-get install apache2-mpm-worker else apt-get install apache2 fi
Activation du module mod_rewrite
Le module mod_rewrite fournit un moteur de réécriture à base de règles permettant de réécrire les URLs des requêtes à la volée. Nous allons activer cette extension
a2enmod rewrite
Puis nous relançons le service apache2 pour prendre en compte l'activation de l'extension mod_rewrite.
service 'apache2' 'force-reload'
Activation des hôtes virtuels (NameVirtualHost)
Les hôtes virtuels (NameVirtualHost) permettent d'héberger plusieurs noms de domaines sur une même adresse IP.
[[ -z "$(command grep 'NameVirtualHost.*:80' /etc/apache2/ports.conf)" ]] \ && 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}")" ]] \ && sed -i -e 's/\(VirtualHost[ \t]*\*\)>/\1:80>/g' \ -e 's/^\(NameVirtualHost.*\)$/#\1/g' \ "${default_site}"
Puis nous relançons le service apache2 pour prendre en compte l'activation des NameVirtualHost.
service 'apache2' 'force-reload'
Voilà, le serveur HTTP est configuré à minima sur votre serveur. Si vous entrer l'URL de votre serveur dans un navigateur, vous devez avoir une page affichant ceci :
Configuration pour un site internet
Nous verrons maintenant comment configurer votre serveur HTTP. Dans un premier temps, nous allons définir les variables pour configurer correctement votre site :
- NOM_SITE : Préciser le nom de domaine de votre site, ici www1.zonewebmaster.eu.
- MAIL_ADMIN : Votre adresse mail.
- URI_SITE : Chemin de l'emplacement des fichiers composant votre site web. Vous pouvez laisser la valeur par défaut.
- URI_LOG : Chemin où sont enregistrés les fichiers logs du site. Vous pouvez laisser la valeur par défaut.
NOM_SITE="www1.zonewebmaster.eu" MAIL_ADMIN="webmaster@zonewebmaster.eu" URI_SITE="/home/${NOM_SITE}/www/" URI_LOG="/home/${NOM_SITE}/logs/"
Ensuite nous créons les répertoires et fichiers nécessaires au fonctionnement de votre futur site et nous leurs attribuons les droits adéquats : Par défaut, les répertoires suivants sont créés :
- /home/nom_site/
- /home/nom_site/www/
- /home/nom_site/logs/
if [ ! -e "/home/${NOM_SITE} " ]; then mkdir "/home/${NOM_SITE}" mkdir "${URI_SITE}" mkdir "${URI_LOG}" chown www-data:www-data "${URI_SITE}" touch "${URI_LOG}access.log" touch "${URI_LOG}error.log" echo "page OK" > "${URI_SITE}index.html" chown www-data:www-data "${URI_SITE}index.html" else if [ ! -e "${URI_SITE}" ]; then mkdir "${URI_SITE}" chown www-data:www-data "${URI_SITE}" fi if [ ! -e "${URI_LOG}" ]; then mkdir "${URI_LOG}" fi touch "${URI_LOG}access.log" touch "${URI_LOG}error.log" echo "page OK" > "${URI_SITE}index.html" chown www-data:www-data "${URI_SITE}index.html" fi
Ensuite nous créons le fichier de configuration pour Apache2, le fichier de configuration est enregistré dans le répertoire /etc/apache2/sites-available.
echo "<VirtualHost *:80> ServerAdmin ${MAIL_ADMIN} ServerName ${NOM_SITE} DocumentRoot ${URI_SITE} <Directory ${URI_SITE}> Options -Indexes +FollowSymLinks +MultiViews AllowOverride All Require all granted </Directory> ErrorLog ${URI_LOG}error.log LogLevel warn CustomLog ${URI_LOG}access.log combined </VirtualHost>" > /etc/apache2/sites-available/${NOM_SITE}.conf
Puis nous activons le site :
a2ensite ${NOM_SITE}
Pour finir, nous mettons en place la rotation des logs du site
echo " ${URI_LOG}*.log { daily missingok rotate 14 compress delaycompress notifempty create 640 root adm sharedscripts postrotate if /etc/init.d/apache2 status > /dev/null ; then \ /etc/init.d/apache2 reload > /dev/null; \ fi; endscript prerotate if [ -d /etc/logrotate.d/httpd-prerotate ]; then \ run-parts /etc/logrotate.d/httpd-prerotate; \ fi; \ endscript } " > "/etc/logrotate.d/${NOM_SITE}"
On recharge la configuration et c'est sensé fonctionner sans problème.
service 'apache2' 'force-reload'
Redirection des mails www-data
Nous allons rediriger les 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'
Puis nous rechargeons la liste des alias :
type -f 'newaliases' &>'/dev/null' && newaliases
Pour allez plus loin
Notes de version
- [24/02/2020] : Création de l'article
Auteurs et sources
- Auteur : montuy337513
- Sources : Projet Apache,
Navigation
Autres liens rapides pouvant vous intéresser