Configurer un serveur web Apache sous Slackware

Apache est le principal serveur Web du monde de l’Open Source. D’après les statistiques de Netcraft (http://netcraft.com), plus de la moitié des sites Web du monde tournent sur un serveur Apache.

Une installation typique d’Apache est généralement constituée d’un assemblage cohérent de paquets :

  • le serveur Apache à proprement parler
  • des bibliothèques diverses et variées
  • des plug-ins
  • des langages de programmation
  • etc.

Cet article est basé sur les paquets httpd (Apache), php et mariadb, contenus dans une installation standard de Slackware.

Prérequis

Apache utilise le port 80 en TCP pour le protocole HTTP. Il faudra donc songer à ouvrir ce port dans le pare-feu.

Tester Apache

Activer et démarrer Apache :

# chmod +x /etc/rc.d/rc.httpd
# /etc/rc.d/rc.httpd start

Tester le bon fonctionnement du serveur :

# links http://localhost

On doit voir quelque chose de ce genre :

=======================
      It works!
=======================

Dans le réseau local, ouvrir l’adresse IP du serveur avec un navigateur, par exemple :

  • http://192.168.2.1

On peut également invoquer le nom d’hôte :

  • http://nestor.microlinux.lan

Sur un serveur dédié, on essaiera successivement l’adresse IP, le nom de domaine et l’alias associé :

  • http://195.154.65.130
  • http://slackbox.fr
  • http://www.slackbox.fr

Configuration de base

Le principal fichier de configuration d’Apache, c’est /etc/httpd/httpd.conf. Avant d’éditer ce fichier, on va en faire une copie :

# cd /etc/httpd
# cp httpd.conf httpd.conf.orig

On peut déjà renseigner quelques directives :

# /etc/httpd/httpd.conf
...
ServerAdmin info@microlinux.fr
...
ServerName nestor.microlinux.lan:80
...
  • L’adresse mail de l’administrateur apparaîtra sur certaines pages générées par le serveur, notamment les pages d’erreur.
  • Le nom du serveur peut être déterminé automatiquement, mais il vaut mieux le spécifier explicitement.

Sur un serveur dédié, on aura ceci :

# /etc/httpd/httpd.conf
...
ServerName sd-41893.dedibox.fr
...

Héberger un site web statique

Apache est immédiatement utilisable dans sa configuration par défaut. Le serveur affiche le contenu du répertoire /var/www/htdocs, défini par la directive DocumentRoot dans le fichier /etc/httpd/httpd.conf :

# /etc/httpd/httpd.conf
...
DocumentRoot "/srv/httpd/htdocs"
...

Notons que /srv/httpd est un lien symbolique qui pointe vers /var/www :

# ls -l /srv/httpd
lrwxrwxrwx 1 root root 8 nov.   9 07:53 /srv/httpd -> /var/www

Pour avoir quelque chose à nous mettre sous la dent, on va ranger la page par défaut à un autre endroit pour la remplacer par un « vrai » site web statique. On choisira la documentation de Slackware, qui vient sous forme d’une série de pages HTML statiques.

Sauvegarder les fichiers fournis par défaut comme ceci, par exemple :

# cd /var/www/htdocs/
# ls
htdig  index.html  manual
# mkdir /root/htdocs_backup
htdig  index.html  manual
# mv -v * /root/htdocs_backup/
« htdig » -> « /root/htdocs_backup/htdig »
« index.html » -> « /root/htdocs_backup/index.html »
« manual » -> « /root/htdocs_backup/manual »

Ensuite, récupérer la documentation de Slackware. L’outil wget est utilisé ici comme aspirateur de site :

# wget -r -np -nH --cut-dirs=1 http://www.slackbook.org/html/

Assainir les permissions :

# find . -type d -exec chmod 0750 \{} \;
# find . -type f -exec chmod 0640 \{} \;

Le serveur Apache tourne avec les droits de l’utilisateur apache et du groupe apache :

# /etc/httpd/httpd.conf
...
User apache
Group apache
...

On va donc attribuer toutes les pages de notre site local à cet utilisateur et à ce groupe :

# chown -R apache:apache /var/www/htdocs

À présent, on peut ouvrir le site dans un navigateur (Firefox, Links, Lynx) et apprécier le résultat. Si le site ne s’affiche pas comme prévu dans Firefox, rafraîchir la page en appuyant sur [F5].

Héberger plusieurs sites sur un même serveur

Le principe des serveurs virtuels (virtual hosts) consiste à faire fonctionner un ou plusieurs sites Web sur une même machine. L’utilisateur final ne perçoit pas qu’en fait il s’agit d’un même serveur physique.

Dans un premier temps, on va renommer le répertoire /var/www/htdocs en /var/www/vhosts :

# cd /var/www
# mv htdocs vhosts

Il faudra modifier httpd.conf pour prendre en compte ce changement :

# /etc/httpd/httpd.conf
...
DocumentRoot "/srv/httpd/vhosts"
<Directory "/srv/httpd/vhosts">
...

On va déplacer le site existant dans un nouveau répertoire :

# cd vhosts
# mkdir -pv ../slackware/htdocs
mkdir: création du répertoire « ../slackware »
mkdir: création du répertoire « ../slackware/htdocs »
# mv * ../slackware/htdocs/
# mv ../slackware/ .

Ensuite, on va créer un autre répertoire, dans lequel on va télécharger un autre site, en l’occurrence la documentation de FreeBSD :

# mkdir -pv freebsd/htdocs
mkdir: création du répertoire « freebsd »
mkdir: création du répertoire « freebsd/htdocs »
# cd freebsd/htdocs
# wget -r -p -np -nH --cut-dirs=4 \
http://www.freebsd.org/doc/fr_FR.ISO8859-1/books/handbook/

Enfin, on va rétablir l’ancienne page index.html à un endroit approprié :

# cd /var/www/vhosts
# mkdir -pv default/htdocs
mkdir: création du répertoire « default »
mkdir: création du répertoire « default/htdocs »
# mv -v /root/htdocs_backup/index.html default/htdocs/
« /root/htdocs_backup/index.html » -> « default/htdocs/index.html »

Au total, on a donc :

# ls -l
total 20
drwxr-xr-x  2 root root  4096 févr.  3 10:14 default
drwxr-xr-x  9 root root 12288 févr.  3 10:05 freebsd
drwxr-xr-x 11 root root  4096 févr.  3 09:51 slackware

On va définir les permissions à la louche :

# find . -type d -exec chmod 0750 \{} \;
# find . -type f -exec chmod 0640 \{} \;
# chown -R apache:apache *

Éditer le fichier /etc/httpd/extra/httpd-vhosts.conf. On pourra utiliser une des deux stances fournies en exemple comme modèle. Dans un premier temps, définir le site affiché par défaut, c’est-à-dire lorsqu’on invoque l’adresse IP ou le nom d’hôte de la machine :

# /etc/httpd/extra/httpd-vhosts.conf 

# Page par défaut
ServerAdmin info@microlinux
DocumentRoot "/srv/httpd/vhosts/default/htdocs"
ServerName nestor.microlinux.lan
ServerAlias nestor
ErrorLog "/var/log/httpd/default-error_log"
CustomLog "/var/log/httpd/default-access_log" common

Une erreur à ne pas commettre, c’est d’indiquer le chemin « réel » vers les pages Web pour DocumentRoot, c’est-à-dire /var/www/vhosts/default au lieu de /srv/httpd/vhosts/default. Le chemin doit coïncider avec celui que l’on a défini dans /etc/httpd/httpd.conf pour DocumentRoot.

Pour activer les hôtes virtuels, il faut inclure le module en décommentant la ligne correspondante dans /etc/httpd/httpd.conf :

# /etc/httpd/httpd.conf 
...
# Virtual hosts
Include /etc/httpd/extra/httpd-vhosts.conf
...

Redémarrer Apache pour prendre en compte les modifications :

# /etc/rc.d/rc.httpd restart|graceful

Vérifier si la page par défaut du serveur s’affiche bien :

  • http://nestor

Là encore, si l’on utilise Firefox, penser à rafraîchir la page avec la touche [F5].

À présent, nous pouvons ajouter les deux autres sites :

# /etc/httpd/extra/httpd-vhosts.conf 

# Page par défaut du serveur
ServerAdmin info@microlinux
DocumentRoot "/srv/httpd/vhosts/default/htdocs"
ServerName nestor.microlinux.lan
ServerAlias nestor
ErrorLog "/var/log/httpd/default-error_log"
CustomLog "/var/log/httpd/default-access_log" common

# Documentation de Slackware
ServerAdmin info@microlinux
DocumentRoot "/srv/httpd/vhosts/slackware/htdocs"
ServerName slackware.nestor.microlinux.lan
ServerAlias slackware.nestor
ErrorLog "/var/log/httpd/slackware-error_log"
CustomLog "/var/log/httpd/slackware-access_log" common

# Documentation de FreeBSD
ServerAdmin info@microlinux
DocumentRoot "/srv/httpd/vhosts/freebsd/htdocs"
ServerName freebsd.nestor.microlinux.lan
ServerAlias freebsd.nestor
ErrorLog "/var/log/httpd/freebsd-error_log"
CustomLog "/var/log/httpd/freebsd-access_log" common

Pour l’instant, les noms d’hôtes slackware.nestor et freebsd.nestor ne correspondent à rien dans notre réseau local. Nous devons donc les ajouter au fichier /etc/hosts de la machine sur laquelle tourne Dnsmasq :

# /etc/hosts 
192.168.2.1 nestor.microlinux.lan nestor
192.168.2.1 slackware.nestor.microlinux.lan slackware.nestor
192.168.2.1 freebsd.nestor.microlinux.lan freebsd.nestor

Redémarrer Dnsmasq pour propager la configuration :

# /etc/rc.d/rc.dnsmasq restart

Redémarrer Apache pour prendre en compte les deux nouveaux hôtes virtuels :

# /etc/rc.d/rc.httpd restart

Tester l’affichage des trois différents sites :

  • http://slackware.nestor.microlinux.lan
  • http://freebsd.nestor.microlinux.lan
  • http://nestor.microlinux.lan (page par défaut)

Sur un serveur dédié avec un domaine publiquement accessible, la configuration des hôtes virtuels ressemblera à ceci :

# /etc/httpd/extra/httpd-vhosts.conf 

# Page par défaut du serveur
ServerAdmin info@microlinux.fr
DocumentRoot "/srv/httpd/vhosts/default/htdocs"
ServerName sd-48975.dedibox.fr
ErrorLog "/var/log/httpd/default-error_log"
CustomLog "/var/log/httpd/default-access_log" common

# Documentation de Slackware
ServerAdmin info@microlinux.fr
DocumentRoot "/srv/httpd/vhosts/slackware/htdocs"
ServerName slackware.slackbox.fr
ErrorLog "/var/log/httpd/slackware-error_log"
CustomLog "/var/log/httpd/slackware-access_log" common

# Documentation de FreeBSD
ServerAdmin info@microlinux.fr
DocumentRoot "/srv/httpd/vhosts/freebsd/htdocs"
ServerName freebsd.slackbox.fr
ErrorLog "/var/log/httpd/freebsd-error_log"
CustomLog "/var/log/httpd/freebsd-access_log" common

Cette fois-ci, l’information sur les hôtes slackware.slackbox.fr et freebsd.slackbox.fr devra être ajoutée dans le fichier zone de BIND, sous forme d’alias :

; /var/named/zone.slackbox.fr 
...
slackbox.fr.        A       195.154.65.130
ns      IN          A       195.154.65.130
mail    IN          A       195.154.65.130
www     CNAME               slackbox.fr.
ftp     CNAME               slackbox.fr.
slackware CNAME             slackbox.fr.     
freebsd   CNAME             slackbox.fr.     

Ne pas oublier de redémarrer BIND en incrémentant le numéro de série :

# /etc/rc.d/rc.bind restart

Tester l’affichage des trois différentes sites :

  • http://slackware.slackbox.fr
  • http://freebsd.slackbox.fr
  • http://www.slackbox.fr (page par défaut)

Héberger des sites dynamiques avec PHP

Activer le module PHP dans /etc/httpd/httpd.conf :

# /etc/httpd/httpd.conf
...
# Uncomment the following line to enable PHP:
#
Include /etc/httpd/mod_php.conf
...

La directive DirectoryIndex définit le fichier qui sera affiché lorsqu’un répertoire est requis. On ajoutera les fichiers index.php, et on pourra également compléter par index.htm, une extension que l’on rencontre rarement, mais qui existe :

# /etc/httpd/httpd.conf 
...
DirectoryIndex index.html index.htm index.php
...

Redémarrer Apache pour prendre en compte les modifications.

Ajouter une section pour afficher les infos PHP :

# cd /var/www/vhosts
# mkdir phpinfo/htdocs

Dans ce répertoire, éditer un fichier index.php comme ceci :

<?php
echo phpinfo();
?>

Régler les droits d’accès :

# cd /var/www/vhosts
# find phpinfo/ -type d -exec chmod 0750 \{} \;
# find phpinfo/ -type f -exec chmod 0640 \{} \;
# chown -R apache:apache /var/www/vhosts/phpinfo/

Créer un hôte virtuel phpinfo.nestor ou phpinfo.slackbox.fr et afficher la page index.php dans un navigateur.

Le fichier /etc/php.ini contient la configuration de PHP. On peut commencer par définir le fuseau horaire du serveur, nécessaire pour le bon fonctionnement de certaines applications :

; /etc/php.ini 
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Europe/Paris 

Avant Slackware 14.2, le fichier php.ini était rangé dans le répertoire /etc/httpd.

Redémarrer Apache et vérifier les donnés correspondantes dans la page qui affiche les infos PHP.

Utiliser MySQL à partir de PHP

Voir l’article sur MySQL pour le serveur de bases de données. Si MySQL est installé sur la machine, il est utilisable à partir de PHP sans autre configuration.

Ce contenu a été publié dans Documentation Microlinux, Slackware, avec comme mot(s)-clé(s) , , , , , . Vous pouvez le mettre en favoris avec ce permalien.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *