29-11-2011 : Remettre dans le débat politique les principes du Conseil National de la Résistance
17-02-2012 : Pétition pour une protection de l’apiculture et des consommateurs face au lobby des OGM
Logo de mon site
Logo de mon site
Faire un don

Luxpopuli / Internet / Serveur web Apache / Apache 1.3.37 : configurer le serveur (VIII)





Right menu

Logo du site ez.no  Logo XHTML 1.O du W3C  Logo XHTML 1.O du W3C  Site francophone officiel de Firefox
zero papier grâce aux catalogues et promos en ligne de bonial

Apache 1.3.37 : configurer le serveur (VIII)

Date de publication: le mercredi 22 août 2007 à 15h06
Dernière modification: par Pascal BOYER le vendredi 17 septembre 2010 à 10h15
« Article précédent: Apache 1.3.37 : compiler et installer le serveur web (VII)
» Article suivant: Apache 1.3.37 : compiler et installer le module mod_deflate (IX)

Si la compilation de Apache s'est bien déroulée, il est grand temps de voir ce qui reste à faire pour pouvoir le démarrer sans obtenir de messages d'erreur.

Apache 1.3.37 : le fichier de configuration httpd.conf 

Avant de vouloir démarrer Apache, il est indispensable de créer un fichier de configuration adapté à votre situation.

Emplacement du fichier de configuration

Le fichier de configuration des versions 1.3 de Apache se nomme httpd.conf et doit se situer dans le répertoire de configuration du serveur, c'est à dire dans le répertoire:

apache_1.3.37/conf/

Par défaut, vous avez plusieurs fichiers de configuration à votre disposition:

ls -la conf/httpd.conf*

-rw-r--r-- 1 root root 44478 2007-08-21 23:27 conf/httpd.conf.default
-rw-rw-r-- 1 root root 43189 2007-08-20 09:58 conf/httpd.conf-dist
-rw-rw-r-- 1 root root 30576 2004-11-24 20:10 conf/httpd.conf-dist-nw
-rw-rw-r-- 1 root root 34695 2007-08-20 09:58 conf/httpd.conf-dist-win

Normalement, ces fichiers se partagent en deux catégories:

  1.  celle qui contient les fichiers modifiés par le module mod_ssl:
     
    •  httpd.conf.default
    •  httpd.conf-dist-win
    •  httpd.conf-dist
     
  2.  celle qui contient les fichiers non modifiés par le module mod_ssl:
     
    •  httpd.conf-dist-nw

Pour connaître le code ajouté par le module mod_ssl aux bas des fichiers, reportez vous à ce passage: Compiler et installer les modules .

Fichier httpd.conf minimaliste

Il n'est pas évident de proposer un exemple de fichier de configuration s'adaptant à la situation de chaque lecteur. Cependant, je vous propose un squelette minimaliste qui devrait ne nécessiter que très peu de modifications de votre part pour que vous puissiez au moins, dans un premier temps, tester la validité de votre tout nouveau serveur web.

Pour cela, nous allons partir du fichier pré-existant httpd.conf-dist-nw (nw = Net Ware est un système d'exploitation de réseau  appartenant à Novell) dont nous allons faire une copie:

cd /usr/local/ServeurWeb/apache_1.3.37

cp -p conf/httpd.conf-dist-nw conf/httpd.conf

:
Si un fichier conf/httpd.conf existe déjà, renommez-le avant de créer la copie de conf/httpd.conf-dist-win.

Normalement, le fichier httpd.conf-dist-nw n'a pas été modifié par le module SSL. Quand bien même ce serait le cas, cela n'a pas grande importance. Pour la suite, nous supposerons qu'il n'a pas été modifié.

Voici donc le contenu de ce fichier débarrassé de tous les commentaires (j'ai conservé l'ordre des directives):

httpd.conf avant modification - Vous n'avez pas le droit de voir cet objet.

Saut de ligne

A présent, voici le même fichier, mais cette fois-ci, adapté au cas qui me sert d'exemple pour cette série d'articles:

httpd.conf_modifie.txt - Vous n'avez pas le droit de voir cet objet.

Saut de ligne

Les modifications apportées à cette deuxième version du fichier httpd.conf sont de trois ordres. Consultez-les et adaptez-les si besoin.

  1. Tout d'abord, j'ai modifié, partout où cela s'est avéré nécessaire, les chemins qui, par défaut, ne peuvent pas correspondre à notre cas particulier. Toutes les lignes où j'ai modifié le chemin sont précédées d'une ligne:

    # chemin
  2. Ensuite, il faut renseigner la directive ServerName en indiquant soit l'adresse IP du serveur soit le nom de domaine dans lequel est placé le serveur. L'unique ligne modifiée est précédée de celle-ci:

    # identifiant
  3. Et enfin, il est intéressant de notifier l'adresse e-mail de l'administrateur du serveur avec la directive ServerAdmin. L'unique ligne modifiée est précédée de celle-ci:

    # admin@e-mail

:
Je rappelle que vous avez à votre disposition la documentation complète en français de toutes les directives qu'il est possible de placer dans le fichier de configuration du serveur apache: Modules Apache 1.3  

:
Attention aux droits du répertoire logs/ qui doivent permettre, éventuellement, l'accès en lecture à un logiciel comme, par exemple, AWStats .

Apache 1.3.37 : démarrer le serveur web

Pour démarrer immédiatement votre serveur Apache, vous avez à votre disposition un fichier:

apache_1.3.37/src/support/apachectl

...dont les options sont les suivantes:

  • start : exécute le binaire httpd (en clair, lance le serveur Apache).
  • startssl : exécute le binaire httpd avec le mode sécurisé SSL activé.
  • stop : arrête l'exécution du binaire httpd (en clair, arrête le serveur Apache)
  • restart : redémarre, s'il tourne déjà, le binaire httpd par l'envoi du signal SIGHUP. Si le binaire httpd ne tourne pas déjà, alors il est lancé.
  • fullstatus : affiche un état complet du serveur. Il faut que Lynx soit installé et le module mod_status activé.
  • status : fait la même chose que l'option précédente mais affiche moins d'informations. Prérequis identiques.
  • graceful : effectue un redémarrage en douceur du serveur s'il tourne déjà, sinon le démarre.
  • configtest : effectue un contrôle de la syntaxe du fichier de configuration httpd.conf 
  • help : affiche ces options.

Le binaire httpd est situé dans le répertoire:

apache_1.3.37/bin/

:
Ce binaire, c'est Apache.

Modifier le fichier apachectl 

Le fichier src/support/apachectl contient, par défaut, ces deux lignes:

PIDFILE=/usr/local/apache/logs/httpd.pid
HTTPD='/usr/local/apache/src/httpd'

...dont il faut modifier ainsi les chemins:

PIDFILE=/usr/local/ServeurWeb/apache_1.3.37/logs/apache.pid
 HTTPD='/usr/local/ServeurWeb/apache_1.3.37/src/httpd'

Il est indispensable que le chemin de la variable PIDFILE soit identique à celui de la directive PidFile du fichier httpd.conf 

Tester l'option fullstatus 

Lançon tout simplement la commande suivant:

src/support/apachectl fullstatus

 

 

Message d'erreur renvoyé par le navigateur Lynx

...alors que dans le même temps, je peux parfaitement utiliser l'URI suivante:

http://www.luxpopuli.fr/server-status/

...avec succès dans Firefox. Pour remédier à ce problème, il faut éditer le fichier apachectl et modifier cette ligne:

LYNX="lynx -dump

en:

LYNX="lynx"

Si on relance ensuite la commande, on obtient alors ceci:

 

 

Affichage du statut du serveur Apache avec le navigateur Lynx

Démarrer le serveur Apache

Le fichier de configuration est placé dans apache_1.3.37/conf/httpd.conf, ne reste plus qu'à lancer cette commande:

src/support/apachectl start

src/support/apachectl restart: configuration broken, ignoring restart
src/support/apachectl restart: (run 'apachectl configtest' for details)

Comme nous le suggère le message d'erreur renvoyé, lançons la commande ci-dessous:

src/support/apachectl configtest

Syntax error on line 15 of /usr/local/ServeurWeb/apache_1.3.37/conf/httpd.conf:
Invalid command 'ThreadStackSize', perhaps mis-spelled or defined by a module not included in the server 
configuration

Cette directive, ThreadStackSize, qui indique la taille de la pile à utiliser pour les threads, est spécifique à NetWare. On commente donc cette directive dans le fichier httpd.conf, puis on relance la commande:

src/support/apachectl configtest

Syntax OK

Définir les directives User et Group 

On essaye à nouveau de démarrer le serveur:

src/support/apachectl start

PHP Warning: Unknown(): Unable to load dynamic library 
 '/usr/local/lib/php/extensions/no-debug-non-zts-20020429/imagick.so'
 - /usr/local/lib/php/extensions/no-debug-non-zts-20020429/imagick.so: Ne peut ouvrir le fichier
 d'objet partagé: Aucun fichier ou répertoire de ce type in Unknown on line 0
src/support/apachectl start: httpd started

Le message d'avertissement ( PHP Warning: Unkn...), qui ne s'affiche qu'avec l'option start de la commande apachetctl, est certainement dû à une option de compilation de PHP. Cependant, je n'ai, à ce jour, aucun problème particulier avec la gestion des images dans eZ Publish. Comme par ailleurs, je ne développe pas en PHP...

Toujours est-il que la dernière ligne du message indique que le serveur est lancé. Ce que nous vérifions immédiatement:

ps aux |grep httpd

root 7063 0.0 0.2 5468 2824 pts/0 S+ 08:06 0:00 vi apache_1.3.37/conf/httpd.conf
root 7135 0.0 0.0 2876 756 pts/1 R+ 08:10 0:00 grep httpd

Hé bien, le serveur ne tourne toujours pas. Si on regarde le fichier error_log/ 

tail -f -n30 logs/error_log

[Thu Aug 23 08:09:17 2007] [error] FastCGI: access for server (uid -1, gid -1) failed: read not allowed
[Thu Aug 23 08:09:17 2007] [error] FastCGI: can't create dynamic directory
"/usr/local/ServeurWeb/apache_1.3.37/logs/fastcgi/dynamic": access for server (uid -1, gid -1) failed:
read not allowed
PHP Warning: Unknown(): Unable to load dynamic library
'/usr/local/lib/php/extensions/no-debug-non-zts-20020429/imagick.so'
- /usr/local/lib/php/extensions/no-debug-non-zts-20020429/imagick.so: Ne peut ouvrir le fichier
d'objet partagé: Aucun fichier ou répertoire de ce type in Unknown on line 0
[Thu Aug 23 08:09:17 2007] [error] FastCGI: access for server (uid -1, gid -1) failed: read not allowed
[Thu Aug 23 08:09:17 2007] [error] FastCGI: can't create dynamic directory
"/usr/local/ServeurWeb/apache_1.3.37/logs/fastcgi/dynamic": access for server (uid -1, gid -1) failed:
read not allowed
[Thu Aug 23 08:09:17 2007] [alert] FastCGI: process manager exiting, getpwuid(4294967295) couldn't
determine user name, you probably need to modify the User directive
PHP Warning: Unknown(): Unable to load dynamic library
'/usr/local/lib/php/extensions/no-debug-non-zts-20020429/imagick.so'
- /usr/local/lib/php/extensions/no-debug-non-zts-20020429/imagick.so: Ne peut ouvrir le fichier
d'objet partagé:
Aucun fichier ou répertoire de ce type in Unknown on line 0
[Thu Aug 23 08:09:17 2007] [alert] getpwuid: couldn't determine user name from uid 4294967295,
you probably need to modify the User directive
[Thu Aug 23 08:09:17 2007] [alert] getpwuid: couldn't determine user name from uid 4294967295,
you probably need to modify the User directive
[Thu Aug 23 08:09:17 2007] [alert] getpwuid: couldn't determine user name from uid 4294967295,
you probably need to modify the User directive
[Thu Aug 23 08:09:17 2007] [alert] getpwuid: couldn't determine user name from uid 4294967295,
you probably need to modify the User directive
[Thu Aug 23 08:09:17 2007] [notice] Apache/1.3.37 (Unix) mod_perl/1.30 mod_fastcgi/2.4.2 PHP/4.4.7
mod_ssl/2.8.28 OpenSSL/0.9.8e configured -- resuming normal operations
[Thu Aug 23 08:09:17 2007] [notice] Accept mutex: sysvsem (Default: sysvsem)
[Thu Aug 23 08:09:17 2007] [alert] Child 7129 returned a Fatal error... \nApache is exiting!
[Thu Aug 23 08:09:17 2007] [alert] getpwuid: couldn't determine user name from uid 4294967295,
you probably need to modify the User directive

...il nous indique, par le biais des messages [alert], qu'il y a un propblème avec l'identifiant de l'utilisateur sous lequel les processus fils de Apache se lancent. En clair, il faut définir et renseigner, dans le fichier httpd.conf, les directives User et Group 

Pour cela, on va créer un utilisateur et un groupe système (voir cette doc  pour plus de détails):

adduser --system --home /usr/local/www --no-create-home --shel /bin/sh --group --uid 35 apache

Ajout de l'utilisateur système « apache » (identifiant : 35)...
Ajout du nouveau groupe « apache » (identifiant : 35)...
Ajout du nouvel utilisateur « apache » (identifiant : 35) avec le
groupe « apache »...
Répertoire personnel « /usr/local/www » non créé.

Ensuite, on édite le fichier de configuration httpd.conf pour y ajouter ces deux lignes:

User apache
Group apache

...et on tente à nouveau de démarrer Apache:

src/support/apachectl start

PHP Warning: Unknown(): Unable to load dynamic library
'/usr/local/lib/php/extensions/no-debug-non-zts-20020429/imagick.so'
- /usr/local/lib/php/extensions/no-debug-non-zts-20020429/imagick.so: Ne peut ouvrir le fichier
d'objet partagé: Aucun fichier ou répertoire de ce type in Unknown on line 0
src/support/apachectl start: httpd started

On contrôle que le serveur tourne effectivement:

ps aux |grep httpd

root 7853 0.4 0.8 108204 8624 ? Ss 13:20 0:00 /usr/local/ServeurWeb/apache_1.3.37/src/httpd
apache 7855 0.0 0.5 108204 5564 ? S 13:20 0:00 /usr/local/ServeurWeb/apache_1.3.37/src/httpd
apache 7856 0.0 0.5 108204 5564 ? S 13:20 0:00 /usr/local/ServeurWeb/apache_1.3.37/src/httpd
apache 7857 0.0 0.5 108204 5564 ? S 13:20 0:00 /usr/local/ServeurWeb/apache_1.3.37/src/httpd
apache 7858 0.0 0.5 108204 5564 ? S 13:20 0:00 /usr/local/ServeurWeb/apache_1.3.37/src/httpd
apache 7859 0.0 0.5 108204 5564 ? S 13:20 0:00 /usr/local/ServeurWeb/apache_1.3.37/src/httpd

Tout semble tourner enfin rond...

Pour tester le serveur, plaçons un fichier index.html à la racine du serveur, c'est à dire à la racine de /usr/local/www/ (voir la directive DocumentRoot du fichier httpd.conf), avec ce code:

<h1 style="color: red; font-size: 3em; text-align: right;">Ceci est ma page d'accueil</h1>
<p style="text-align: justify;">Je suis rudement content de mon serveur Apache 1.3.37 que je viens
 fraîchement de compiler et qui semble tourner comme une horloge. Y a pas à dire, les gars de la
fondation Apache font du bon boulot !</p>

Puis accédons à cette page avec notre navigateur:

 

 

Hé bien voilà, tout fonctionne !

Automatiser le démarrage du serveur Apache

Nous allons voir comment faire en sorte que le serveur Apache démarre en même temps que la machine sur laquelle il est installé.

On va écrire deux petits scripts. Le premier pour démarrer le serveur:

vi S90apache_1.3.37

#!/bin/bash
 
/usr/local/ServeurWeb/apache_1.3.37/src/support/apachectl start
exit

...que l'on rend exécutable:

chmod +x S90apache_1.3.37

...puis que l'on copie dans le répertoire correspondant au runlevel (niveau d'exécution) par défaut de la machine (voir le fichier /etc/inittab). Sous Debian, le runlevel par défaut est 2, donc on déplace le script dans le répertoire rc2.d:

mv S90apache_1.3.37 /etc/rc2.d/

Le deuxième script:

vi K90apache_1.3.37

#!/bin/bash
 
/usr/local/ServeurWeb/apache_1.3.37/src/support/apachectl stop
exit

...que l'on le rend exécutable:

chmod +x S90apache_1.3.37

...permet de stopper Apache et doit donc être placé dans deux runlevels: celui du reboot (6 sous Debian) et celui de l'arrêt (0 sous Debian):

cp K90apache_1.3.37 /etc/rc0.d/

et

mv K90apache_1.3.37 /etc/rc6.d/

Et c'est tout.

Apache 1.3.37 : les modules activés

Pour voir la liste des modules qui sont liés statiquement et donc lancés en même temps que le serveur, il faut lancer cette commande:

src/httpd -l

Compiled-in modules:
http_core.c
mod_vhost_alias.c
mod_env.c
mod_log_config.c
mod_mime_magic.c
mod_mime.c
mod_negotiation.c
mod_status.c
mod_include.c
mod_autoindex.c
mod_dir.c
mod_cgi.c
mod_asis.c
mod_imap.c
mod_actions.c
mod_userdir.c
mod_alias.c
mod_rewrite.c
mod_access.c
mod_auth.c
mod_headers.c
mod_usertrack.c
mod_so.c
mod_setenvif.c
mod_ssl.c
mod_php4.c
mod_fastcgi.c
mod_perl.c

Commentaires