Date de publication: le lundi 20 août 2007 à 19h59
Dernière modification: par Pascal BOYER le vendredi 17 septembre 2010 à 10h05
« Article précédent: Apache 1.3.37 : patcher les sources du serveur (VI)
» Article suivant: Apache 1.3.37 : configurer le serveur (VIII)
Merci à la vie qui m'a tant donné.
Elle m'a donné la voix et les lettres avec lesquelles je pense les mots et je dis:
Mère, ami, frère, lumière qui éclaire le chemin de l'âme que j'aime
Merci à la vie qui m'a tant donné.
Maintenant que PHP 4.4.7 est compilé, on peut terminer l'installation du serveur en compilant Apache.
Apache 1.3.37 : choix des modules à compiler
On revient à présent dans le répertoire du serveur Apache:
cd /usr/local/ServeurWeb/apache_1.3.37
...afin de définir les paramètres de compilation.
Les modules compilés par défaut
- Sur cette page, Manuel des modules Apache , vous trouverez la liste de tous les modules proposés par Apache 1.3. En cliquant sur le nom d'un module, s'affiche une page d'information complète sur celui-ci. La première ligne indique si oui ou non le module est compilé par défaut.
Pour savoir quels sont les modules configurés pour être compilés par défaut, on peut également lancer cette commande:
./configure --help
...et rechercher cette section:
--disable-module=NAME disable a particular Module named 'NAME' [access=no actions=yes alias=yes ] [asis=yes auth_anon=no auth_dbm=no ] [auth_db=no auth_digest=no auth=yes ] [autoindex=yes cern_meta=no cgi=yes ] [define=no digest=no dir=yes ] [env=yes example=no expires=no ] [headers=no imap=yes include=yes ] [info=no log_agent=no log_config=yes ] [log_forensic=no log_referer=no mime_magic=no ] [mime=yes mmap_static=no negotiation=yes] [proxy=no rewrite=no setenvif=yes ] [so=no speling=no ssl=no ] [status=yes unique_id=no userdir=yes ] [usertrack=no vhost_alias=no ]
Tous les modules notés =no ne seront pas compilés par défaut.
La liste des modules affichée ci-dessus est basée sur le contenu du fichier apache_1.3.37/src/Configuration.tmpl On remarquera d'ailleurs que dans la liste apparaît le module ssl qui a été ajouté lors de la configuration de mod_ssl .
Définir les modules que l'on souhaite compiler
Une des méthodes pour modifier la liste des modules compilés par défaut consiste à modifier le fichier suivant:
apache_1.3.37/src/Configuration.tmpl
...en commentant/décommentant simplement les lignes des options que l'on souhaite ou non compiler. C'est cette méthode que j'ai retenue.
:
On prendra soin de faire une copie du fichier src/Configuration.tmpl pour être en mesure de revenir à tout moment à la configuration initiale.
Pour avoir un point de comparaison, j'ai créé un fichier info.php contenant la seule fonction phpinfo(); Voici la liste des modules (associés à mon serveur 1.3.34 installé partir des packages pré-compilés .deb) qu'il affiche:
|
|
Etant donné que tout fonctionne parfaitement avec mon serveur Apache 1.3.34, en compilant, au minimum, cette liste de modules dans mon nouveau serveur 1.3.37, tout devrait également fonctionner.
Ci-après, quelques indications tirées du livre Apache - La référence paru aux édition O'REILLY:
- mod_auth_db est une alternative à mod_auth_dbm. Il ne faut compiler qu'un seul des deux modules (ou aucun).
- mod_auth_dbm ne fonctionne pas avec Win32
- mod_log_agent et mod_log_referrer sont des «survivances du CERN» et peuvent donc être ignorés.
- module_example ne sert qu'à tester les API.
:
Pour eZ Publish, n'oubliez pas, bien sûr, de compiler le module de réécriture d'URI mod_rewrite
Si vous souhaitez pouvoir ajouter dynamiquement et ultérieurement des modules à votre serveur Apache, alors vous devez compiler le module:
- mod_so
Au final, et juste pour l'exemple, voici très concrètement les modules que j'ai compilés pour le serveur web affichant la page que vous lisez présentement:
./configure --help
--disable-module=NAME disable a particular Module named 'NAME' [access=yes actions=yes alias=yes ] [asis=yes auth_anon=no auth_dbm=no ] [auth_db=no auth_digest=no auth=yes ] [autoindex=yes cern_meta=no cgi=yes ] [define=no digest=no dir=yes ] [env=yes example=no expires=yes ] [headers=yes imap=yes include=yes ] [info=no log_agent=no log_config=yes ] [log_forensic=no log_referer=no mime_magic=yes ] [mime=yes mmap_static=no negotiation=yes] [proxy=no rewrite=yes setenvif=yes ] [so=yes speling=no ssl=yes ] [status=yes unique_id=no userdir=yes ] [usertrack=yes vhost_alias=yes ]
Les modules que l'on souhaite compiler sont à présent correctement définis.
Voyons encore deux trois petites choses...
Prise en charge du module mod_fastcgi
Il ne faut oublier de prendre en charge le module mod_fastcgi que nous avons installé précédemment (voir ici ). Pour compiler statiquement ce module, et après avoir lu le fichier apache_1.3.37/src/modules/fastcgi/INSTALL, on sait qu'il faut ajouter cette option à la commande ./configure:
--activate-module=src/modules/fastcgi/libfastcgi.a
Ce module n'existe pas encore mais sera créé lors de la compilation de Apache.
Prise en charge du module mod_perl
Pour rappel, ce module a été créé lors de l' installation de mod_perl et sa prise en charge par Apache se fait avec l'option suivante (voir le fichier apache_1.3.37/src/modules/perl/README) de la commande ./configure:
--activate-module=src/modules/perl/libperl.a --enable-module=perl
Apache 1.3.37 : répertoires par défaut
Afficher les chemins des répertoires définis par défaut
Par défaut, voici les chemins qui seront utilisés pour installer tous les répertoires et fichiers relatifs au serveur web:
./configure --show-layout
Configuring for Apache, Version 1.3.37 + using installation path layout: Apache (config.layout) Installation paths: prefix: /usr/local/apache exec_prefix: /usr/local/apache bindir: /usr/local/apache/bin sbindir: /usr/local/apache/bin libexecdir: /usr/local/apache/libexec mandir: /usr/local/apache/man sysconfdir: /usr/local/apache/conf datadir: /usr/local/apache iconsdir: /usr/local/apache/icons htdocsdir: /usr/local/apache/htdocs manualdir: /usr/local/apache/htdocs/manual cgidir: /usr/local/apache/cgi-bin includedir: /usr/local/apache/include localstatedir: /usr/local/apache runtimedir: /usr/local/apache/logs logfiledir: /usr/local/apache/logs proxycachedir: /usr/local/apache/proxy Compilation paths: HTTPD_ROOT: /usr/local/apache SHARED_CORE_DIR: /usr/local/apache/libexec DEFAULT_PIDLOG: logs/httpd.pid DEFAULT_SCOREBOARD: logs/httpd.scoreboard DEFAULT_LOCKFILE: logs/httpd.lock DEFAULT_ERRORLOG: logs/error_log TYPES_CONFIG_FILE: conf/mime.types SERVER_CONFIG_FILE: conf/httpd.conf ACCESS_CONFIG_FILE: conf/access.conf RESOURCE_CONFIG_FILE: conf/srm.conf
Modifier le chemin des répertoires
Si l'on souhaite, comme c'est notre cas, modifier ces valeurs, il faut l'indiquer avec cette option de la commande ./configure:
--prefix=/usr/local/ServeurWeb/apache_1.3.37/
Ainsi, le fichier Makefile créé par la commande ./configure construira tous les chemins à partir de notre répertoire d'installation de Apache.
Apache 1.3.37 : directives User et Group
Valeurs par défaut
Par défaut, et en l'absence de toute contre indication, les valeurs respectives de ces deux directives sont:
- nobody
- nogroup
Ces deux valeurs seront présentes dans le Makefile construit par la commande ./configure
Définir des valeurs pour les directives User et Group
Pour cela il faut utiliser les deux options suivantes de la commande ./configure
--server-uid=www-data --server-gid=www-data
:
www-data est la valeur par défaut assignée aux deux directives User et Group lorsqu'on installe Apache 1.3.34 à partir des packages Debian.
Apache 1.3.37 : créer le Makefile
A présent, nous pouvons enfin démarrer la compilation du serveur Apache avec cette première commande qui crée le fichier Makefile:
SSL_BASE="/usr/local/ServeurWeb/openssl-0.9.8e" EAPI_MM="/usr/local/ServeurWeb/mm-1.4.2" ./configure --server-uid=www-data --server-gid=www-data --prefix=/usr/local/ServeurWeb/apache_1.3.37 --activate-module=src/modules/php4/libphp4.a --activate-module=src/modules/fastcgi/libfastcgi.a --activate-module=src/modules/perl/libperl.a --enable-module=perl
Configuring for Apache, Version 1.3.37 + using installation path layout: Apache (config.layout) + activated php4 module (modules/php4/libphp4.a) + activated fastcgi module (modules/fastcgi/libfastcgi.a) + activated perl module (modules/perl/libperl.a) Creating Makefile Creating Configuration.apaci in src Creating Makefile in src + configured for Linux platform + setting C compiler to gcc + setting C pre-processor to gcc -E + using "tr [a-z] [A-Z]" to uppercase + checking for system header files + adding selected modules o rewrite_module uses ConfigStart/End disabling DBM support for mod_rewrite (perhaps you need to add -ldbm, -lndbm or -lgdbm to EXTRA_LIBS) o ssl_module uses ConfigStart/End + SSL interface: mod_ssl/2.8.28 + SSL interface build type: OBJ + SSL interface compatibility: enabled + SSL interface experimental code: disabled + SSL interface conservative code: disabled + SSL interface vendor extensions: disabled + SSL interface plugin: Built-in SDBM + SSL library path: /usr/local/ServeurWeb/openssl-0.9.8e + SSL library version: OpenSSL 0.9.8e 23 Feb 2007 + SSL library type: source tree only (stand-alone) o php4_module uses ConfigStart/End o perl_module uses ConfigStart/End + mod_perl build type: OBJ + setting up mod_perl build environment + id: mod_perl/1.30 + id: Perl/v5.8.8 (linux) [/usr/bin/perl] + adjusting Apache build environment + enabling Perl support for SSI (mod_include) + enabling Extended API (EAPI) using MM library: /usr/local/ServeurWeb/mm-1.4.2 (source-tree only) + using system Expat + using -ldl for vendor DSO support + checking sizeof various data types + doing sanity check on compiler and options Creating Makefile in src/support Creating Makefile in src/os/unix Creating Makefile in src/ap Creating Makefile in src/main Creating Makefile in src/modules/standard Creating Makefile in src/modules/ssl Creating Makefile in src/modules/php4 Creating Makefile in src/modules/fastcgi Creating Makefile in src/modules/perl
:
Vous pouvez relancer la commande ./configure autant de fois que vous le désirez, elle construira à chaque fois un fichier Makefile tout neuf.
Voici un aperçu du fichier Makefile qui vient d'être créé:
vi Makefile
69 # installation paths 70 prefix = /usr/local/ServeurWeb/apache_1.3.37 71 exec_prefix = /usr/local/ServeurWeb/apache_1.3.37 72 bindir = /usr/local/ServeurWeb/apache_1.3.37/bin 73 sbindir = /usr/local/ServeurWeb/apache_1.3.37/bin 74 libexecdir = /usr/local/ServeurWeb/apache_1.3.37/libexec 75 mandir = /usr/local/ServeurWeb/apache_1.3.37/man 76 sysconfdir = /usr/local/ServeurWeb/apache_1.3.37/conf 77 datadir = /usr/local/ServeurWeb/apache_1.3.37 78 iconsdir = /usr/local/ServeurWeb/apache_1.3.37/icons 79 htdocsdir = /usr/local/ServeurWeb/apache_1.3.37/htdocs 80 manualdir = /usr/local/ServeurWeb/apache_1.3.37/htdocs/manual 81 cgidir = /usr/local/ServeurWeb/apache_1.3.37/cgi-bin 82 includedir = /usr/local/ServeurWeb/apache_1.3.37/include 83 localstatedir = /usr/local/ServeurWeb/apache_1.3.37 84 runtimedir = /usr/local/ServeurWeb/apache_1.3.37/logs 85 logfiledir = /usr/local/ServeurWeb/apache_1.3.37/logs 86 proxycachedir = /usr/local/ServeurWeb/apache_1.3.37/proxy 87 88 libexecdir_relative = libexec/ 89 90 # suexec details (optional) 91 suexec = 0 92 suexec_caller = www 93 suexec_docroot = /usr/local/ServeurWeb/apache_1.3.37/htdocs 94 suexec_logexec = /usr/local/ServeurWeb/apache_1.3.37/logs/suexec_log 95 suexec_userdir = public_html 96 suexec_uidmin = 100 97 suexec_gidmin = 100 98 suexec_safepath = /usr/local/bin:/usr/bin:/bin 99 suexec_umask = 100 101 # SSL (optional) 102 ssl = 1 103 104 # some substituted configuration parameters 105 conf_user = www-data 106 conf_group = www-data 107 conf_port = 80 108 conf_port_ssl = 443 109 conf_serveradmin = root@democratie 110 conf_servername = democratie
Apache 1.3.37 : compilation & installation
La seconde commande sert à compiler le serveur en se basant sur les informations présentes dans le fichier Makefile:
make
La sortie de cette commande, très verbeuse, doit se terminer par quelque chose comme ça:
... ... make[2]: quittant le répertoire « /usr/local/src/apache_1.3.37/src/support » <=== src/support make[1]: quittant le répertoire « /usr/local/src/apache_1.3.37 » make[1]: entrant dans le répertoire « /usr/local/src/apache_1.3.37 » +---------------------------------------------------------------------+ | Before you install the package you now should prepare the SSL | certificate system by running the 'make certificate' command. | For different situations the following variants are provided: | | % make certificate TYPE=dummy (dummy self-signed Snake Oil cert) | % make certificate TYPE=test (test cert signed by Snake Oil CA) | % make certificate TYPE=custom (custom cert signed by own CA) | % make certificate TYPE=existing (existing cert) | CRT=/path/to/your.crt [KEY=/path/to/your.key] | | Use TYPE=dummy when you're a vendor package maintainer, | the TYPE=test when you're an admin but want to do tests only, | the TYPE=custom when you're an admin willing to run a real server | and TYPE=existing when you're an admin who upgrades a server. | (The default is TYPE=test) | | Additionally add ALGO=RSA (default) or ALGO=DSA to select | the signature algorithm used for the generated certificate. | | Use 'make certificate VIEW=1' to display the generated data. | | Thanks for using Apache & mod_ssl. Ralf S. Engelschall | rse@engelschall.com | www.engelschall.com +---------------------------------------------------------------------+ make[1]: quittant le répertoire « /usr/local/src/apache_1.3.37 » <=== src
Elle donne des informations, entre autres, sur le déroulement de la compilation des modules qui sont à présents situés dans les sous-répertoires du répertoire:
apache_1.3.37/src/modules/
Les modules compilés sont les fichier dont l'extension est .o (o pour object/ objet) ou .a (statique)
:
Si vous souhaitez, à ce stade, revenir en arrière, c'est à dire annuler les effet de la commande make pour créer, par exemple un nouveau Makefile, alors vous devez lancer la commande suivante:
make clean
===> src make[1]: entrant dans le répertoire « /usr/local/src/apache_1.3.37 » make[2]: entrant dans le répertoire « /usr/local/src/apache_1.3.37/src » rm -f httpd libhttpd.* *.o ===> src/regex rm -f junk* core core.* *.core dtr *.tmp lint rm -f *.o *.s re libregex.a <=== src/regex ===> src/os/unix rm -f os.o os-inline.o libos.a <=== src/os/unix ===> src/ap rm -f *.o *.a <=== src/ap ===> src/main rm -f *.o libmain.a uri_delims.h gen_uri_delims test_char.h gen_test_char <=== src/main ===> src/lib ===> src/lib/expat-lite rm -f xmltok.o xmlrole.o xmlparse.o hashtable.o libexpat.a <=== src/lib/expat-lite <=== src/lib ===> src/modules ===> src/modules/standard rm -f libstandard.a mod_env.o mod_log_config.o mod_mime.o mod_negotiation.o mod_status.o mod_include.o mod_autoindex.o mod_dir.o mod_cgi.o mod_asis.o mod_imap.o mod_actions.o mod_userdir.o mod_alias.o mod_rewrite.o mod_access.o mod_auth.o mod_expires.o mod_so.o mod_setenvif.o <=== src/modules/standard <=== src/modules make[2]: quittant le répertoire « /usr/local/src/apache_1.3.37/src » ===> src/support make[2]: entrant dans le répertoire « /usr/local/src/apache_1.3.37/src/support » rm -f htpasswd htdigest rotatelogs logresolve ab apxs checkgid *.o make[2]: quittant le répertoire « /usr/local/src/apache_1.3.37/src/support » <=== src/support make[1]: quittant le répertoire « /usr/local/src/apache_1.3.37 » <=== src
:
Le message final renvoyé par la commande make propose de créer les certificats avant de terminer l'installation du serveur. Je n'en ai rien fait car je me sers de cet article
SSL/TLS : autorité de certification et certificats
pour créer mes certicficats et les signer.
Dernière étape:
make install
... ... make[2]: quittant le répertoire « /usr/local/src/apache_1.3.37/conf/ssl.crt » [PRESERVING EXISTING CSR FILES: /usr/local/src/apache_1.3.37/conf/ssl.csr/*] [PRESERVING EXISTING CRL FILES: /usr/local/src/apache_1.3.37/conf/ssl.crl/*] [PRESERVING EXISTING KEY FILES: /usr/local/src/apache_1.3.37/conf/ssl.key/*] [PRESERVING EXISTING PRM FILES: /usr/local/src/apache_1.3.37/conf/ssl.prm/*] <=== [config] make[1]: quittant le répertoire « /usr/local/src/apache_1.3.37 » +--------------------------------------------------------+ | You now have successfully built and installed the | Apache 1.3 HTTP server. To verify that Apache actually | works correctly you now should first check the | (initially created or preserved) configuration files | | /usr/local/src/apache_1.3.37/conf/httpd.conf | | and then you should be able to immediately fire up | Apache the first time by running: | | /usr/local/src/apache_1.3.37/bin/apachectl start | | Or when you want to run it with SSL enabled use: | | /usr/local/src/apache_1.3.37/bin/apachectl startssl | | Thanks for using Apache. The Apache Group | http://www.apache.org/ +--------------------------------------------------------+
On remarquera, dans le message ci-dessus, l'existence de deux commandes différentes:
l'une pour le démarrage du serveur en mode normal:
/usr/local/src/apache_1.3.37/bin/apachectl start
l'autre pour le démarrage avec prise en charge du mode SSL:
/usr/local/src/apache_1.3.37/bin/apachectl startssl
Dans ces deux exemples, le début des chemins est incorrect et doit être remplacé par /usr/local/ServeurWeb/...
Contrôler les modules pris en charge par Apache
Vous pouvez dès à présent afficher la liste des modules intégrés au binaire httpd que vous venez de compiler.
Ce binaire, c'est le serveur Apache. Il se trouve dans le répertoire /usr/local/ServeurWeb/apache_1.3.37/bin/ et permet de lister, par le biais de la commande suivante, les modules compilés:
./bin/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_expires.c mod_headers.c mod_usertrack.c mod_so.c <========== LE MODULE mod_so ! mod_setenvif.c mod_ssl.c mod_php4.c mod_fastcgi.c mod_perl.c mod_deflate.c suexec: disabled; invalid wrapper /usr/local/ServeurWeb/apache_1.3.37/bin/suexec
Commentaires














