[AlternC-dev] migration de httpd.conf vers alternc/apache.conf

Retour à l'archive de la liste
Le site d'AlternC
Google Custom Search

The Anarcat anarcat at anarcat.ath.cx
Jeu 3 Juin 06:59:10 CEST 2004


[long, mais très important]

Présentement, alternc configure apache assez violamment. Il "overwrite"
complètement le fichier de config d'apache, ce qui viole rigoureusement
deux directives de la debian policy.[1]

Bien qu'il soit probablement impossible de complètement respecter ces
directives, on peut au moins essayer de configurer Apache proprement de
AlternC.

J'espère pouvoir faire ceci avec un fichier de configuration apache.conf
qui serait installé dans /etc/alternc/apache.conf (oui benji, comme pour
PMA :). Idéalement, toute la configuration d'apache se retrouverait dans
ce fichier, et alternc n'aurait qu'à "dire" à wwwconfig-common d'inclure
ce fichier dans la config d'apache.

Je mets en attach ce à quoi ressemblerait ce fichier pour commencer.

Mais il y a un petit pépins. Ou plutôt, plusieurs petits pépins. :)

C'est que, vu que alternc a l'habitude d'installer son propre
httpd.conf, plusieurs libertés ont été prises à cet égard, et le fichier
httpd.conf d'alternc a beaucoup divergé du httpd.conf original.

J'ai commencé à documenter ces changements. J'ai mis en attach la liste
des modifications qu'impliquerait un "switch" au httpd.conf par défaut.
Cette liste ressemble en fait à un diff, mais c'en est pas
véritablement un, et j'ai d'ailleurs rajouté des commentaires ou
solutions en fil de route.

Veuillez passez en revue attentivement.

--
[1]: http://www.debian.org/doc/debian-policy/ch-files.html#s10.7.4
http://www.debian.org/doc/debian-policy/ch-relationships.html#s7.5.1

Simili-diff between alternc's apache.conf and a "standard" httpd.conf
=====================================================================

Légende:
- alternc' httpd.conf
+ factory default httpd.conf

Les modules
===========

+# LoadModule apache_ssl_module /usr/lib/apache/1.3/libssl.so
-LoadModule auth_module /usr/lib/apache/1.3/mod_auth_ssl.so
+# LoadModule auth_module /usr/lib/apache/1.3/mod_auth_ssl.so
-# LoadModule auth_mysql_module /usr/lib/apache/1.3/mod_auth_mysql.so
+LoadModule auth_module /usr/lib/apache/1.3/mod_auth.so
+LoadModule config_log_module /usr/lib/apache/1.3/mod_log_config_ssl.so
-# LoadModule fastcgi_module /usr/lib/apache/1.3/mod_fastcgi.so
-LoadModule gzip_module /usr/lib/apache/1.3/mod_gzip.so
+# LoadModule gzip_module /usr/lib/apache/1.3/mod_gzip.so
-# LoadModule mime_magic_module /usr/lib/apache/1.3/mod_mime_magic.so
+LoadModule mime_magic_module /usr/lib/apache/1.3/mod_mime_magic.so
+LoadModule mime_module /usr/lib/apache/1.3/mod_mime_ssl.so
+#LoadModule put_module         modules/mod_put.so
-# LoadModule userdir_module /usr/lib/apache/1.3/mod_userdir.so
+LoadModule userdir_module /usr/lib/apache/1.3/mod_userdir.so
-LoadModule vhost_alias_module /usr/lib/apache/1.3/mod_vhost_alias.so
+# LoadModule vhost_alias_module /usr/lib/apache/1.3/mod_vhost_alias.so

Il y a seulement vhost_alias_module qui est critique là-dedans selon moi
(qqun peut confirmer?). Il faudra trouver un moyen d'activer ces
modules. Je crois qu'il n'y a pas de méthode "propre" de faire ça avec
wwwconfig-common, il faudra hacker directement le fichier avec sed ou
autre.

Les autres directives
=====================

-MaxKeepAliveRequests 500
+MaxKeepAliveRequests 100
-MaxRequestsPerChild 1000000
+MaxRequestsPerChild 100

Bon, pour le les directives Max*, je crois que ce n'est pas une bonne
idée de configurer ces trucs pour l'admin. Ces settings dépendent de
l'achalandage du site, et ça, seul l'admin peut en décider.

-Listen %%myip%%:80
-BindAddress %%myip%%
+#Listen 3000
+#Listen 12.34.56.78:80
+#BindAddress *

Ici aussi, je crois que l'on devrait laisser ça à la discrétion de
l'admin. Par défaut, Apache écoute sur tous les ports. Si l'admin veut
une configuration particulière, alors go, qu'il le fasse lui-même.

+<IfModule mod_status.c>
 ExtendedStatus On
+</IfModule>

Cosmétique, on peut laisser ça.

-ServerAdmin root@%%fqdn%%
+ServerAdmin webmaster at lenny.anarcat.ath.cx
-ServerName %%fqdn%%
+#ServerName new.host.name

ServerAdmin, on devrait laisser ça à l'admin, encore. Mais on pourrait
p-e l'overrider dans notre fichier (est-ce qu'on peut faire ça, mettre
deux directives du genre?)

Le servername, par défaut, c'est le hostname de la machine. Mais vu que
par défaut, il est commenté, on peut l'overrider dans notre fichier de
conf perso.

-DocumentRoot /var/alternc/bureau
+DocumentRoot /var/www
+<Directory /var/www/>
...
+</Directory>

Ah, ça c'est un plus gros problème. Dans notre fichier de conf, on
pourrait mettre un <VirtualHost _default_:80> pour changer le
DocumentRoot par défaut.

Aussi, ma philosophie ici est peut-être différente de la philosophie
traditionnelle d'alternc: toucher le moins possible aux packages. :)
Ainsi, si l'admin veut avoir toujours la hiérarchie /var/www dispo pour
lui, il le peut. Le bureau, lui, est configuré avec un vhost.

+<IfModule mod_userdir.c>
...
+</IfModule>

Est-ce que l'on veut permettre les userdir (/~user/). Par défaut, c'est
activé dans apache. Encore une fois, je suggère que l'on laisse ça comme
ça.

-UseCanonicalName On
+UseCanonicalName Off

Pourquoi c'est à on ça?

-    MIMEMagicFile share/magic
+    MIMEMagicFile /usr/share/misc/file/magic.mime

Ceci ne me semble pas nécessaire.

-LogLevel debug
+LogLevel warn

Ceci non plus.

-LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"
%T %{Ho
st}i" full
+LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"
%T %v"
full

Ça, c'est mineur, %v et %{Host} sont équivalents.

-CustomLog /var/log/apache/access.log full
+CustomLog /var/log/apache/access.log combined

Problème ici. Il *faut* que le log par défaut soit "full" sinon on perd
le contrôle de webalizer. Encore une fois, il faut vérifier si l'on peut
"overrider" ceci dans notre config directement.

-ServerSignature Off
+ServerSignature On
-ServerTokens Prod
+#ServerTokens Full

Devrait être laissé à la discrétion de l'admin, pas forcé par AlternC.

+<IfModule mod_alias.c>
...
+    Alias /images/ /usr/share/images/
...
+</IfModule>

On devrait avoir ça..

+<IfModule mod_alias.c>
+    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
...
+</IfModule>

Question plus épineuse... Même chose que plus haut, encore, est-ce qu'on
peut overrider ça?

+    AddIcon /icons/deb.gif .deb

On devrait avoir ça.

-    ReadmeName README
-    HeaderName HEADER
-    IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
+    ReadmeName README.html
+    HeaderName HEADER.html
+    IndexIgnore .??* *~ *# HEADER.html HEADER.txt README.html
README.txt RCS CV
S *,v *,t

Mineur, on peut laisser README.html.

-DirectoryIndex index.html index.htm index.shtml index.php3 index.php4
index.phtml index.php
+<IfModule mod_dir.c>
+    DirectoryIndex index.html index.php index.htm index.shtml index.cgi
+</IfModule>

Il manque index.php3, index.php4 et index.phtml dans le listing par
défaut. On peut probablement les ajouter avec les scripts de wwwconfig.

+    AddType application/x-httpd-php .php
+    AddType application/x-httpd-php-source .phps
-       AddType application/x-httpd-php .php .php3 .php4 .phtml
+    AddType application/x-httpd-php .php3
+    AddType application/x-httpd-php-source .phps
+    AddType application/x-httpd-php .php
+    <IfModule mod_include.c>
+     AddType text/html .shtml
+     AddHandler server-parsed .shtml

Ce qui ressort de ceci: il manque .phtml et .php4 du fichier par défaut.

-AddDefaultCharset off
+AddDefaultCharset on

Pourquoi ceci est-il à off??? Ça devrait être à on!
http://httpd.apache.org/info/css-security/

-        LanguagePriority en fr da nl et de el it ja pl pt pt-br ltz ca
         es sv
+        LanguagePriority en da nl et fr de el it ja pl pt pt-br lb ca
es sv

Devrait être laissé à la discrétion de l'admin.

+  <IfModule mod_alias.c>
   Alias /perl/ /var/www/perl/
+  </IfModule>

Détail.

+<IfModule mod_alias.c>
+ Alias /doc/ /usr/share/doc/
+</IfModule>
+
+<Location /doc>
+  order deny,allow
+  deny from all
+  allow from 127.0.0.0/255.0.0.0
+  Options Indexes FollowSymLinks MultiViews
+</Location>

Détail.

-Include /etc/phpmyadmin/apache.conf
-Include /etc/squirrelmail/apache.conf
(on sid, and probably sarge too)
+Include /etc/apache/conf.d
(on woody)
+Include /etc/squirrelmail/apache.conf
+Include /etc/phpmyadmin/apache.conf

Pas de problème ici.

Résumé
======

- Il faut activer certains modules.
- Il faut overrider dans notre fichier:
  - ServerName (optionel)
  - ServerAdmin (optionel, à vérifier)
  - DocumentRoot (avec un <VirtualHost _default_:80>, ça devrait faire
    l'affaire)
  - CustomLog à full (à vérifier)
- Questions
  - est-ce que l'on veut permettre les userdirs
  - pourquoi CanonicalName est à On?
  - est-ce que l'on garde /usr/lib/cgi-bin et est-ce que l'on peut
    l'overrider si nécessaire?
  - est-ce si grave s'il manque .php4 et .phtml comme extensions? Moi
    j'ai jamais vu ça nulle part, je crois pas que ça vaille la peine de
    supporter ça.
  - pourquoi AddDefaultCharset est à off?

Voici le fichier de config apache.conf que nous aurions, sans les hacks
nommés ci-haut:

ScriptAlias /cgi-bin/ /var/alternc/cgi-bin/

<Directory /var/alternc/cgi-bin/>
    Options FollowSymLinks IncludesNOEXEC ExecCGI
    AllowOverride None
    Order allow,deny
    Allow from all
    AddHandler cgi-script .cgi
</Directory>

<Location /server-status>
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from %%monitor_ip%%
</Location>

<VirtualHost %%myip%%:80>
# ***ALTERNC_ALIASES***
        alias /admin/sql        /usr/share/phpmyadmin
        alias /webmail          /usr/share/squirrelmail
        Alias /icons/ /usr/share/apache/icons/

        UseCanonicalName    Off
        VirtualDocumentRoot /var/alternc/dns/%-2.1/%0
</VirtualHost>

<Directory /var/alternc>
        php_value disable_functions chmod,chown,chgrp,link,symlink
        AllowOverride AuthConfig FileInfo Limit Indexes
        Options Indexes Includes FollowSymLinks MultiViews
        Order allow,deny
        Allow from all
</Directory>

<Directory /var/alternc/bureau>
        php_admin_flag safe_mode_gid off
        php_admin_flag safe_mode off
</Directory>

<Directory /var/alternc/dns/%%fqdn_lettre%%/%%fqdn%%>
        php_admin_flag safe_mode_gid off
        php_admin_flag safe_mode off
</Directory>

-------------- section suivante --------------
Une pièce jointe autre que texte a été nettoyée...
Nom: non disponible
Type: application/pgp-signature
Taille: 187 octets
Desc: non disponible
URL: <http://lists.alternc.org/arch/dev/attachments/20040603/b6f15439/attachment.pgp>


Plus d'informations sur la liste de diffusion Dev