Retour



Sommaire

Présentation de thttpd
Etape 1 : installation
Etape 2 : fichiers de configuration
Etape 3 : organisation du répertoire hébergeant le site
Etape 4 : supervision


Présentation

Le serveur thttpd est un démon très léger et bien adapté aux personnes souhaitant héberger leur site simplement.
Il ne faut pas s’attendre à quelque chose comme apache, ici pas de php, pas de mysql, on a juste la possibilité de faire un peu de CGI pour les pages dynamiques.
De ce fait pas de failles de sécurité liées à PHP ou à un script mal embouché. THTTPd c’est du html pur et dur.

sommaire

Etape 1 : installation

Sous debian c’est toujours aussi simple d’installer un programme :

su + password
apt-get install thttpd thttpd-util

Rien d’autre à faire, vive apt.

EDIT du 11/05/08 : j'ai fait un paquet debian en compilant les sources avec des options de sécurité accrues.
Tout ça est disponible ici

EDIT du 09/08/09 : quelques changements depuis Etch. Sous Lenny la version est la 2.25b et a apporté quelques nouveautés - à voir dans la section configuration.
Les paquets debian amd64 comprenant mon patch de sécurité sont disponibles sur le dépôt et ici.

EDIT du 21/10/12 : la version 2.25b est toujours maintenue pour squeeze et toujours disponible dans le dépôt. Le binaire est cmompilé pour amd64. Pour i386 merci de passer par les sources.

sommaire

Etape 2 : fichiers de configuration

Là encore la configuration est assez simple, voici un exemple de fichier de configuration :

# definition du port, on peut mettre autre chose que 80 mais il faudra prevenir les autres
port=80
# par defaut mieux vaut chrooter le demon
chroot
# on a besoin d’un utilisateur pour lancer le demon
user=www-data
# le fichier log tres pratique pour administrer
logfile=/var/log/thttpd.log
# le controle de bande passante - je ne rentrerai pas dans les details
# la page de manuel donne de nombreuses informations a ce sujet
throttles=/etc/thttpd/throttle.conf
# le repertoire hebergeant les donnees
dir=/var/www
# le repertoire contenant les scripts cgi
cgipat=/cgi-bin/*

Sous Lenny un changement a été porté : maintenant on définit un répertoire de chroot pour le démon et et répertoire où se trouvent les données. Par contre si le fichier de log ne se trouve pas dans le répertoire de chroot vous aurez droit à une belle erreur. Tout cela si vous avez gardé les options de compilation de debian. Il faut donc faire un peu plus attention.

sommaire

Etape 3 : organisation du répertoire hébergeant le site

Admettons que votre répertoire d’hébergement du site est /var/www, vous organiserez toutes vos pages et sous-répertoires dedans.
Si vous voulez des pages d’erreur personalisées (conseillé), il faut créer un repertoire errors dans la racine du site et un fichier html par erreur.

cd /var/www
mkdir errors
cd errors
touch err404.html
touch err401.html

Ensuite vous personnalisez ces pages. Je vous conseille de rajouter un index.htm dans le répertoire errors afin d’empecher le listage du répertoire.

De même il vous est possible de protéger un répertoire par un accès sur mot de passe.
Il faut créer un fichier .htpasswd dans le répertoire à protéger et le remplir de la même manière que sous apache. Les mots de passe doivent être cryptés.

sommaire

Etape 4 : supervision

Le serveur génère un fichier log dans /var/log/thttpd.log. Ce fichier est lisible avec les droits root ou avec les droits sudo.
Le système va renouveller les logs tous les jours via logrotate. Si vous voulez changer la période de rotation du log vous allez modifier le fichier /etc/logrotate.d/thttpd et vous changez le daily en weekly.

J’ai constaté qu’un bug gênait le fonctionnement de thttpd (perte de son numéro de PID), notemment lorsque logrotate stoppe le démon et le relance.
Pour l’instant je conseille donc de modifier /etc/logrotate.d/thttpd de la manière suivante :

/var/log/thttpd.log {
	rotate 14
	daily
	compress
	missingok
	delaycompress
	postrotate
		killall thttpd
		etc/init.d/thttpd start
	endscript
}
EDIT du 21/10/12 : plus de problème avec la version 2.25b sous squeeze.

sommaire


Valid HTML 4.01 Transitional