Avant tout : [NdT : l'auteur explique qu'il n'est pas un Mozart de la langue anglaise. Ca tombe bien, moi non plus !]
Le serveur web dont vous disposerez gr�ce � ce Howto comprend plusieurs parties : les sources Apache d'origine avec quelques ( ah, ah ) patches et divers ex�cutables. Je vous conseille d'utiliser les m�mes versions de logiciels que moi. Elles ne devraient pas poser de probl�mes et le d�mon r�sultant sera relativement stable. Les plus t�m�raires essayeront les derni�res versions avec de toutes nouvelles fonctionnalit�s mais ce n'est pas ma faute si ca ne marche pas. Les configurations utilisables gagneront � �tre signal�es afin que je les inclut dans les nouvelles versions de ce document. Ma plate forme d'exp�rimentation repose sur un noyau Linux 2.0.35, d'o� une certaine sp�cificit� de ce Howto qui devrait rester applicable � d'autres Unix.
Il n'est pas n�cessaire de tout compiler. J'ai essay� de structurer ce HOWTO de telle sorte que vous puissiez ignorer les parties qui ne vous concernent pas.
Ce document n'est pas un manuel utilisateur pour Apache, SSL, PHP/FI ou FrontPage. Son objectif premier est de diminuer la consommation d'aspirine des fournisseurs de service WEB lors de la mise en place de leur premier serveur et d'apporter une contribution � la communaut� Linux.
PHP est un langage de script qui autorise les pages HTML dynamiques. Il ressemble au SSI d'Apache mais en bien moins compliqu�. Des modules existent pour les bases de donn�es courantes. PHP requiert les librairies GD.
SSL est une mise en oeuvre du Secure Socket Layer de Netscape qui s�curise les connections sur des r�seaux douteux ( typiquement pour la transmission des num�ros de cartes de cr�dit � partir de formulaires web ).
Frontpage est un outil ouiziouigue de cr�ation web qui propose des extensions, propres � un type de serveurs, appell�es webbots. Certains trouvent Frontpage agr�able en ce qu'il permet la mise en place de sites de discussion et de questionnaires en ignorant tout du HTML et du CGI. Il �pargne m�me au concepteur le t�l�chargement du site via ftp gr�ce � son propre agent. Si vous souhaitez la compatibilit� Frontpage sans le serveur � fen�tres, les extensions du serveur Apache sont faites pour vous.
Bien que ce document ait �t� t�l�charg� une centaine de fois depuis sa publication, je n'ai gu�re eu de retour. En particulier, personne ne m'a rapport� la viabilit� de nouvelles combinaisons. Voici les miennes :
v0.0/Apr 98: Version all�g�e
v1.0/Jun 98: Apache 1.2.6, section FrontPage mise � jour, corrections mineures
v1.1/Jul 98: Restructuration et passage au SGML
La derni�re mouture de ce document est disponible via : http://www.faure.de
Il vous faudra :
R�cup�rez les sources souhait�es. D�tarez Apache, PHP, GD et SSL en
/usr/src
. D�tarez le patch SSL vers /usr/src/apache_1.2.6
.
Faites un cd
vers /usr/src/gd1.2
suivi de make pour construire
la librarie GD libgd.a
qui devra �tre copi�e en /usr/lib
.
Allez ensuite en php-2.0.1
et lancez ./install
.
Voici les questions-cl� :
Would you like to compile PHP/FI as an Apache module? [yN] y Are you compiling for an Apache 1.1 or later server? [Yn] y Are you using Apache-Stronghold? [yN] y Does your Apache server support ELF dynamic loading? [yN] y Apache include directory (which has httpd.h)? [/usr/local/include/apache] /usr/src/apache_1.2.6/src Would you like to build an ELF shared library? [yN] y Additional directories to search for .h files []: /usr/src/gd1.2 Would you like the bundled regex library? [yN] n
De m�me que les extensions FrontPage, phtml pose un probl�me au niveau de la s�curit� vu qu'il tourne avec l'UID du serveur Web. Enclenchez le mode s�r dans src/php.h et limitez prudemment le chemin de recherche. Vous souhaiterez peut- �tre changer d'autres valeurs dans le php.h. Si l'aspect s�curit� est crucial pour vous, compilez php en tant que cgi. L'ensemble sera cependant moins performant que la version module.
Tapez make
pour compiler les sources. Une fois la compilation achev�e,
copiez mod_php.*
et libphp.a
en
/usr/src/apache_1.2.6/src
. Ajoutez une ligne
Module php_module mod_php.o� la fin de
/usr/src/apache_1.2.6/src/Configuration
et
-lphp -lm -lgdbm -lgd�
EXTRA_LIBS
( m�me fichier ), ainsi que
application/x-httpd-php phtmlau
mime.types
d'Apache et
AddType application/x-httpd-php .phtmlau
srm.conf
d'Apache.
Peut-�tre ajouterez vous aussi index.phtml
� DirectoryIndex
dans ce m�me fichier de fa�on � ce qu'un fichier index.phtml soit
automatiquement charg� lors d'une requ�te sur son r�pertoire.
cd /usr/src/SSL-0.8.0; ./Configure linux-elf; make; make rehash
Ceci compilera les librairies requises par Apache. make test
vous
permettra de v�rifier le bon d�roulement de la compilation.
Il faut � pr�sent patcher Apache. Il est primordial d'appliquer ce patch avant
le patch Frontpage sinon ce dernier sera inefficace.
Faites un cd
vers /usr/src/apache_1.2.6/src
et lancez
patch < /usr/src/apache_1.2.6/SSLpatch
.
Positionnez SSL_BASE=/usr/src/SSLeay-0.8.0
in Configuration
.
Assurez vous de ce que Module proxy_module
est d�sactiv� sinon Apache
ne compilera pas. Si vous avez besoin d'un proxy, Squid vous tend les bras :
squid.nlanr.net
make certificate
g�nerera SSLconf/conf/httpsd.pem
.
Renommez le fichier fp30.linux.tar.Z
en fp30.linux.tar.gz
ou
bien le script d'install ne le verra pas. Lancez ./fp_install
ainf de
copier les fichiers d'extension en /usr/local/frontpage
. zcat devrait
s'ex�cuter par /usr/bin/zcat.
On applique � pr�sent le patch FrontPage : allez en
/usr/src/apache_1.2.6/src
et tapez
patch < /usr/src/frontpage/version3.0/apache-fp/fp-patch-apache_1.2.5
Ceci cr�era les fichiers mod_frontpage.*
et en modifiera d'autres
( Configuration
, ... ). Le patch 1.2.5 fonctionne aussi
bien avec Apache 1.2.5 qu'avec 1.2.6. Passez pour l'instant sur ce qui se
rapporte � l'installation des serveurs ouaibe.
J'utilise les modules suivants en plus de SSL, PHP et Frontpage :
Module env_module mod_env.o Module config_log_module mod_log_config.o Module mime_module mod_mime.o Module negotiation_module mod_negotiation.o Module dir_module mod_dir.o Module cgi_module mod_cgi.o Module asis_module mod_asis.o Module imap_module mod_imap.o Module action_module mod_actions.o Module alias_module mod_alias.o Module rewrite_module mod_rewrite.o Module access_module mod_access.o Module auth_module mod_auth.o Module anon_auth_module mod_auth_anon.o Module digest_module mod_digest.o Module expires_module mod_expires.o Module headers_module mod_headers.o Module browser_module mod_browser.o
Si vous �tes un FAI (c'est surement le cas si vous lisez ces lignes), vous
voudrez am�liorer la s�curit�. L'utilitaire suexec vous le permettra dans la
mesure o� il ex�cutera les CGI avec l'UID du propri�taire du Web plut�t qu'avec
celle du serveur.
Allez en /usr/src/apache_1.2.6/support
et lancez make suexec
.
Faites un chmod 4711 suxec
et copiez le � l'emplacement pr�cis� dans
../src/httpd.h
, soit /usr/local/etc/httpd/sbin/suexec
par
d�faut. Si le chemin vous semble un peu obscur - ce f�t le cas pour moi -
�ditez httpd.h
et positionnez le � quelque chose de plus raisonnable.
Allez en /usr/src/apache_1.2.6/src
et �ditez Configuration
afin de choisir les modules que vous voulez inclure dans votre d�mon Apache.
Ceci effectu�, lancez ./Configure
et make
. Il s'agit
l� de la derni�re �tape de compilation, la plus compliqu�e. Croisez les doigts.
Si tout se d�roule normalement, copiez httpsd
en /usr/sbin
.
Ne n�gligez pas la taille du d�mon. Cr�ez le r�pertoire /var/httpd
avec les sous-r�pertoires cgi-bin
, conf
, htdocs
,
icons
, virt1
, virt2
et logs
.
Editez access.conf-dist
, mime.types
et srm.conf-dist
( r�pertoire /usr/src/apache_1.2.6/conf
) selon
vos besoins et copiez les en var/httpd/conf/access.conf
,
srm.conf
et mime.types
. Enfin, copiez le fichier
httpsd.pem
cr�� par make certificate
en
/var/httpd/conf
. Utilisez le httpd.conf
suivant :
ServerType standalone Port 80 Listen 80 Listen 443 User wwwrun Group wwwrun ServerAdmin [email protected] ServerRoot /var/httpd ErrorLog logs/error_log TransferLog logs/access_log PidFile logs/httpd.pid ServerName www.yourhost.com MinSpareServers 3 MaxSpareServers 20 StartServers 3 SSLCACertificatePath /var/httpd/conf SSLCACertificateFile /var/httpd/conf/httpsd.pem SSLCertificateFile /var/httpd/conf/httpsd.pem SSLLogFile /var/httpd/logs/ssl.log <VirtualHost www.virt1.com> SSLDisable ServerAdmin [email protected] DocumentRoot /var/httpd/virt1 ScriptAlias /cgi-bin/ /var/httpd/virt1/cgi-bin/ ServerName www.virt1.com ErrorLog logs/virt1-error.log TransferLog logs/virt1-access.log User virt1admin Group users </VirtualHost> <VirtualHost www.virt1.com:443> ServerAdmin [email protected] DocumentRoot /var/httpd/virt1 ScriptAlias /cgi-bin/ /var/httpd/virt1/cgi-bin/ ServerName www.virt1.com ErrorLog logs/virt1-ssl-error.log TransferLog logs/virt1-ssl-access.log User virt1admin Group users SSLCACertificatePath /var/httpd/conf SSLCACertificateFile /var/httpd/conf/httpsd.pem SSLCertificateFile /var/httpd/conf/httpsd.pem SSLLogFile /var/httpd/logs/virt1-ssl.log SSLVerifyClient 0 SSLFakeBasicAuth </VirtualHost> <VirtualHost www.virt2.com> SSLDisable ServerAdmin [email protected] DocumentRoot /var/httpd/virt2 ScriptAlias /cgi-bin/ /var/httpd/virt2/cgi-bin/ ServerName www.virt2.com ErrorLog logs/virt2-error.log TransferLog logs/virt2-access.log </VirtualHost>
Les directives d�pendent des modules compil�s.
Leur liste s'obtient avec httpsd -h
.
Allez en /usr/local/frontpage/version3.0/bin
et lancez
./fpsrvadm
. Choisissez install
et apache-fp
.
R�pondez comme suit aux questions :
Enter server config filename: /var/httpd/conf/httpd.conf Enter host name for multi-hosting []: www.virt2.com Starting install, port: www.virt2.com:80, web: "" Enter user's name []: virt2admin Enter user's password: Confirm password: Creating root web Recalculate links for root web Install completed.
Le nom d'utilisateur doit correspondre au login Unix du ppropri�taire du web. Le
mot de passe peut diff�rer. Ajoutez � la main
sendmailcommand:/usr/sbin/sendmail %r
au fichier
/usr/local/frontpage/www.virt2.com:80.conf
ou vos utilisateurs ne
pourront envoyer de courriers g�n�r�s via le web. Faites un kill -HUP
sur votre httpsd
de fa�on � ce que fp r�examine sa configuration.
Votre client FrontPage peut � pr�sent acc�der � www.virt2.com
Dans certains cas, fpsrvadm
se plaint de l'absence d'un web � la
racine. Cela ne sert gu�re, mais vous devrez surement le faire pour que
fpsrvadm
se taise.
Lancez Apache via httpsd -f /var/httpd/conf/httpd.conf
. On acc�de �
pr�sent � www.virt1.com
aussi bien via http que via https.
C'est chouette la vie. Naturellement, vous acheterez un v�ritable certificat
afin d'offrir un service Web SSL qui ne fasse pas rigoler les clients.
Copiez un des fichiers du r�pertoire d'exemples de php en virt1
pour
essayer phtml.
N'utilisez pas les extensions FrontPage 97. Elles ne fonctionnent pas sous
Linux. A l'installation, les biblioth�ques C++ semblent fonctionner mais vos
fichiers de logs se rempliront de premature end of script headers
tandis que votre boite au lettre d�bordera de r�clamations.
Evitez les extensions FrontPage 98 avec des versions ant�rieures � la
3.0.2.1330. Les num�ros de version manquent singuli�rement d'homog�n�it�. Faites
un telnet sur le port 80, tapez "get / http/1.0" suivi de deux retours � la
ligne et vous obtiendrez un num�ro de version de 3.0.4 pour FrontPage.
Des informations plus pr�cises sont disponibles en
ex�cutant :
/usr/local/frontpage/currentversion/exes/_vti_bin/shtml.exe -version
.
Les versions plus anciennes sont bugg�es en ce qu'elles exigent du httpd.conf
qu'il puisse �tre �crit sous le gid du serveur web. Voila de quoi faire hurler
ceux qui tiennent � la s�curit�.
Les versions post�rieures � la 3.0.2.1330 fonctionnent mieux.
L'utilisation de Recalculate Links
par le client Frontpage lance
au niveau du serveur un process qui consomme 99% du cpu et 10 Mo de m�moire.
Pour des webs de taille moyenne avec des machines rapides, le client re�oit
parfois un timeout et ce alors m�me que le calcul parvient normalement � son
terme. Demandez aux adeptes de FrontPage de rester patients et de ne pas
activer Recalculate Links
� r�p�tition. Pensez � mettre au moins 64 Mo.
A l'instant o� j'�cris ces lignes, SSL et Frontpage fonctionnent mais pas de fa�on simultan�e. Vous ne pouvez donc ni mettre � jour votre web via SSL, ni utiliser des webbots avec https. Vous pouvez actualiser votre web via le port 80 et y acc�der en chiffr� via le port 443 mais les compteurs par exemple seront faux. Je consid�re ceci comme un bug. Il devrait disparaitre avec SSL 0.9.0.
Pour ceux qui trouvent que le titre de ce HOWTO est presque aussi long que son contenu : avez vous jamais �cout� Meat Loaf ?
Bien, amis lecteurs, c'est tout pour aujourd'hui. N'h�sitez pas � me transmettre vos exp�riences, votre reconnaissance �ternelle, des fleurs, de l'argent, des voitures, des gisements de p�trole, ou des ratons laveurs.