Chrooter apache
Matériel
Ajout disque dur
Ajout carte
Audit des disques durs
Gestion des peripheriques
Disquette d'installation
Ajout d'un scanner
Astuces
Ajout d'une imprimante
Réseau
Configuration reseau
Dns
Serveur cvs
Proxy squid 
Installation serveur ftp
Installation qmail 
Installation serveur courrier sous debian
Outil TCP/IP 
Le serveur samba
Connexion a distance securisee
Client/serveur vnc
Configurer apache
Dyndns
Installer un LAMP sous mandriva
Sécurité
Chiffrer un fichier/dossier
Securiser son poste
Mur pare feu pas a pas
Authentification ht-access
Surveillance de serveur CACTI
Snort
Snort-inline
Securiser Apache avec mod_security
Filtrage squid/squidguard/dansguardian
Auditer son site web
Sécuriser son linux
Installer un Lamp avec ssl
Contrer les scans de ports
Traitement anti-spam
Installer/Utiliser tripwire
Faire des sauvegardes incrémentales
Rsync
Nessus
Divers
Elisa, le multimédia facile
Utilisation de lilo
Les commandes Linux
Le multi-tache
Le crontab
Exploration de la configuration
Quotas
Messagerie
Installer une application
Debugger ses applications
Le format RPM
Mise a jour du noyau
Qemu
Tour d'horizon des principaux p2p
Récupération du système
Bips d'un pc
Astuces windows
Table Ascii
Lamerland
Conversion de fichiers musicaux
Compiler ses rpms
Graver en ligne de commande
Graver un fichier avi pour un dvd de salon
Récupérer des fichiers effacés
Liens
hakin9
Secureroot.com
Hackerthreads.org
Defcon
Hackerlounge
Les derniers exploits
Tous les codes sources
Securite sous Linux
Les logiciels libres quotidiens
Ezine divers
Madchat
Textes divers
Archives
 
Traductions LG
Toutes les traductions
Traductions Phrack
Toutes les traductions

Il y a actuellement 5 visiteurs connectés sur le site !

Google

Une alternative au serveur apache sous Mandriva, Lighttpd
Une alternative au serveur apache sous Mandriva, Lighttpd

 

Introduction
Installation
Configuration
Faire fonctionner Lighttpd avec php
Test de votre site
Directives importantes de lighttpd.conf
Authentification et autorisation
Rewriting
Compressez vos données
Quelques exemples
Liens utiles

 

Introduction :

J'ai longtemps utilisé pour l'hébergement de mes sites un serveur apache avec php/mysql, et ce que je croyais être une solution idéale est devenue petit à petit de plus en plus problématique. Les pages s'affichaient lentement. J'ai donc fait mon possible pour optimiser les images, le texte, puis le serveur. Malgré cela, le résultat n'était pas satisfaisant, et comme j'hésitais à abandonner Apache, je me suis tourné vers Lighttpd, qui pour l'instant me bluffe par sa rapidité et sa simplicité. Dans cet article, on fera en sorte de ne pas désinstaller Apache, de telle façon que si Lighttpd ne donne pas satisfaction, on puisse récupérer le premier rapidement.

Installation :

Comme d'habitude il s'agira de privilégier l'installation via les paquetages de votre distribution : sous mandriva et avec les sources à jour depuis easyurpmi.org saisir en console et en root :

urpmi lighttpd

L'installation devrait se passer sans encombres.

Si comme moi, vous possédez un serveur apache et que vous ne souhaitez pas le désinstaller, mais simplement installer lighttpd à sa place, procédez de la sorte :

service httpd stop ///stoppe le serveur apache
chkconfig httpd off /// empêche Apache de redémarrer au lancement de votre machine

Chez moi, Mysql est déjà installé, puisque je possède un serveur apache et que la distribution Mysql pour ces deux serveurs reste la même. Mais si vous partez de zéro, installez Mysql de la sorte

urpmi mysql mysql-client

Lancez ensuite le serveur Mysql avec en console et en root

service mysqld start

Ensuite, définissez un mot de passe pour l'utilisateur root de Mysql. (Attention, ce mot de passe root ne doit pas être le même que celui de votre compte root sous Linux, il s'agit de deux comptes différents)

mysqladmin -u root password yourrootsqlpassword
mysqladmin -h server1.example.com -u root password yourrootsqlpassword

Ainsi, votre serveur sera sécurisé

Ensuite, il faut que mysql interagisse avec PHP, chez moi c'est déjà fait mais pour vous qui partez de zéro, il vous faudra installer le paquetage php-mysql

urpmi php-mysql

Configuration

Il est temps à présent de lancer le serveur avec un

service lighttpd start

en console et en root.
Pour obtenir un serveur lancé au démarrage, ne pas oublier de faire
chkconfig lighttpd on
À présent, à l'adresse 127.0.0.1, vous devriez voir s'afficher une splendide page avec noté 'it works' Mais php n'est pas encore configuré ! Tout va à présent se passer dans /etc/lighttpd/lighttpd.conf, qui est le fichier de configuration de lighttpd
On échappera pas cependant à un petit préambule sur les mérites respectifs du mode cgi et fastcgi de Lighttpd, qui servent à activer php, grâce au paquet php-cgi et php-fcgi.

Apache utilise un module pour intégrer Php qui gère le contenu mais avec Lighttpd c'est différent, le processus externe appelé CGI exécute un programme et renvoie ensuite le contenu généré.

En mode cgi, le programme produisant la page est lancé à chaque requête, ce qui peut s'avérer long si votre site est souvent visité En mode Fastcgi, le mode que j'utilise, le programme n'est lancé qu'une seule fois, et donc on gagne en rapidité
On va donc installer php-fcgi, qui va permettre d'activer PHP5 avec Lighttpd.

urpmi php-fcgi

Faire fonctionner Lighttpd avec php

On va tout d'abord modifier le fichier php.ini, qui chez moi se trouve dans /etc/php.ini
vi /etc/php.ini

Et on va rajouter la ligne :

cgi.fix_pathinfo = 1;

J'ai essayé en vain de trouver cette ligne et donc je me suis résolu à la rajouter à l'endroit qui m'a semblé le plus approprié, parmi les cgis

; Disable logging through FastCGI connection
; fastcgi.log = 0
cgi.fix_pathinfo = 1:

Ensuite, on va aborder le fichier de configuration de lighttpd lui-même, lighttpd.conf: attention on va juste configurer php, on ne s'occupe pas encore de la configuration du serveur lui-même
Dans la partie :

[...]
server.modules = (
#

décommentez "mod_fastcgi",et ensuite trouvez la ligne fastcgi.server

Que l'on va configurer de la sorte :

fastcgi.server = ( ".php" =>
( "localhost" =>
(
"socket" => "/var/run/lighttpd/php-fastcgi.socket",
"bin-path" => "/usr/bin/php-fcgi"
)
)
)

Il vous faudra créer le répertoire lighttpd/ dans /var/run et surtout lui donner les droits de votre serveur

chown apache:apache lighttpd

Sinon il refusera de se lancer

N'oubliez pas ensuite de relancer le serveur

Test de votre site

Dans lighttpd.conf le document root par défaut est /var/www/html. Je vais donc créer un fichier info.php, qui va me permettre de connaître la configuration de mon serveur et savoir si php et mysql sont activés . Ce fichier est à placer à la racine de votre site :

<?
phpinfo();
?>

Directives importantes de lighttpd.conf

Pas le peine d'activer une foule de modules dont on ne saura que faire ensuite: cette liste de modules me semble essentielle et je vous explique pourquoi:

server.modules = (
"mod_access",
"mod_alias",
"mod_auth"
"mod_fastcgi",

Le module mod_access interdit l'accès à certains fichiers, comme dans cet exemple pour les fichiers finissants par ~ ou .inc
url.access-deny = ( "~", ".inc")

Mod-alias; comme son nom l'indique prend en charge les alias, comme par exemple:
Parcourir tous les fichiers installés dans le répertoire /usr/local/tab/ avec l'alias:
alias.url = ( "/tab/" => "/usr/local/tab/" )
rajoutez d'autres alias comme ci-dessous:
alias.url += ( "/pub/" => "/var/www/pub/" )


mod_auth: authentification, généralement protégée par mot de passe des répertoires, ne pas oublier d'installer le module via

urpmi lighttpd-mod_auth
Sinon vous obtiendrez une erreur dans en lançant lighttpd. Ce module va nous permettre d'implémenter l'équivalent d'un .htaccess sous Apache, je détaillerai la syntaxe exacte plus bas
mod_fastcgi: FastCGI Support de Perl / PHP , déja vu précédemment

Décommenter la ligne suivante permet d'activer le listing des répertoires ou il n'y a pas de fichiers index (à manier donc avec précaution)
## virtual directory listings
dir-listing.activate = "enable"

# # Pour définir votre répertoire de travail par défaut, sinon vous pouvez procéder via les hôtes virtuels
server.document-root = "/var/www/"

# # En cas d'erreur envoyer les messages ici
server.errorlog = "/var/log/lighttpd/error.log"
# # # # Accesslog module
accesslog.filename = "/var/log/lighttpd/access.log"
L'utilisateur et le groupe sous lequel est lancé le serveur:
server.username = "apache"
server.groupname = "apache"

Authentification et autorisation

Il n'existe pas de fichier .htaccess pour lighttpd donc tout se passe dans le fichier de configuration lighttpd.conf. Voici un exemple de protection d'un répertoire:

auth.backend = "htpasswd"
auth.backend.htpasswd.userfile = "/home/deny/.htpasswd"
auth.require = ( "/rep_à_protéger/" =>
(
"method" => "basic",
"realm" => "Mon répertoire à protéger",
"require" => "valid-user"
)
)

Il se peut que vous souhaitiez rajouter un second répertoire à protéger, la syntaxe n'est pas très commode, enfin la voici

auth.backend = "htpasswd"
auth.backend.htpasswd.userfile = "/home/deny/.htpasswd"
auth.require = ( "/blog/wp-admin/" =>
(
"method" => "basic",
"realm" => "Mon répertoire à protéger",
"require" => "valid-user"
),
"/tab/" =>
(
"method" => "basic",
"realm" => "Mon deuxième répertoire à protéger",
"require" => "valid-user"
)
)

Je ne me complique pas la vie, puisque j'utilise le fichier .htpasswd déjà configuré pour mon serveur apache, si vous ne savez pas comment générer ce genre de fichier, je vous renvoie à la documentation sur le .htaccess.


Activer des hôtes virtuels dans lighttpd.conf

Vous souhaitez ajouter un hôte virtuel, c'est-à-dire un site avec un nom de domaine partageant la même ip que votre premier site, voici un exemple pour l'ajout des deux sites:

$HTTP["host"] =~ "www.premiersite.com" {
server.document-root = "/home/site1/premier"
server.errorlog = "/var/log/lighttpd/site1/error.log"
accesslog.filename = "/var/log/lighttpd/site1/access.log"
server.error-handler-404 = "/e404.php"
}


$HTTP["host"] =~ "www.linux-pour-lesnuls.com" {
server.document-root = "/home/site2/second"
server.errorlog = "/var/log/lighttpd/site2/error.log"
accesslog.filename = "/var/log/lighttpd/site2/access.log"
server.error-handler-404 = "/e404.php"
}

Rewriting

Contrairement à Apache 2, Lighttpd n'est pas capable de faire des réécritures complexes des URLs. Cependant, il existe un moyen très simple de mettre en place de l'URL rewriting pour certaines applications Web, dont Wordpress et les applications Symfony. Il suffit de spécifier que le fichier "index.php" de ces applications Web est chargé de gérer les erreurs 404.
Pour ce faire, ajoutez simplement la ligne suivante dans le fichier de configuration de l'hôte virtuel hébergeant votre application, et adaptez le chemin vers le fichier index.php pour qu'il corresponde à votre application:

server.error-handler-404 = "/index.php"

Compressez vos données

La compression gzip va vous permettre d'économiser la bande passante, mais pour cela il faut décommenter la ligne mod_compress dans les modules chargés.
Pour cela éditer le fichier lighttpd.conf et ajouter mod_compress dans la section server.modules comme suit :

server.modules = (
[...]
"mod_compress"
)

N'oubliez pas d'installer le module avec un
urpmi lighttpd-mod_compress
Sinon, vous obtiendrez une erreur lors du lancement de lighttpd
Si vous souhaitez activer la compression sur des fichiers css et javascript

Décommentez ces lignes dans votre fichier lighttpd.conf

compress.cache-dir = "/var/cache/lighttpd/compress/"
compress.filetype = ("text/plain", "text/html", "text/css", "application/javascript", "application/x-javascript")

N'oubliez pas de créer le répertoire /var/cache/lighttpd/compress et redémarrez lighttpd
Par défaut les pages PHP ne seront pas compressées. Il faut ajouter 2 lignes dans le fichier de configuration PHP pour qu’elles le soient.
Ouvrez le fichier de configuration de PHP :

vi /etc/php.ini
Modifiez ensuite ces deux variables :

1.zlib.output_compression = On
2.zlib.output_handler = On

Il ne vous reste plus qu’à redémarrer Lighttpd pour que les modifications soient prises en compte :
Pour connaitre les type mimes renvoyés par votre serveur (cela peut varié) et vérifier que la compression fonctionne je vous conseille d'utiliser l'extension firefox LiveHttpHeader et de vérifier les champs :
Content-Type: application/x-javascript
Content-Encoding: gzip

Liens utiles

Documentation sur les directives du fichier de configuration
Configuration du serveur avec php5 et mysql

Quelques exemples

# empêcher l'accès à vos images depuis un autre site (anti-hotlinking for images)
$HTTP["referer"] !~ "^($|http://www\.example\.org)" {
url.access-deny = ( ".jpg", ".jpeg", ".png" )

}
# empêcher l'accès à www.example.org pour tous les utilisateurs qui ne
# font pas partie du réseau 10.0.0.0/8
$HTTP["host"] == "www.example.org" {
$HTTP["remoteip"] != "10.0.0.0/8" {
url.access-deny = ( "" )
}
}

# Autoriser seulement les adresses 200.19.1.5 et 210.45.2.7
# à avoir accès à www.example.org/admin/
$HTTP["host"] == "www.example.org" {
#!~ is a perl style regular expression not match
$HTTP["remoteip"] !~ "^(200\.19\.1\.5|210\.45\.2\.7)$" {
$HTTP["url"] =~ "^/admin/" {
url.access-deny = ( "" )
}
}
}

Sources de l'article

 

Blog
Le blog
La radio
La Radio
Boutique
La boutique du Geek
Php/Mysql
Formulaire en php
Administrer un serveur Mysql
Session en php
Gerer ses bases mysql
Les bases php
Securiser ses scripts PHP
Controler ses programmes avec RATS
Convertir une base sql en utf8
Astuces php
Le fichier php.ini
Programmation
Python rapide
Tutorial Python
Tutorial Perl
Tutorial Perl complet
Tutoriel ruby
Tutoriel C
Introduction à gawk
Filtres et utilitaires
Find
Programmation Shell
Ecriture de scripts bash
Expressions regulieres
Vi
Introduction a Javascript
Compiler avec gcc
Astuces en Bash
Cracking
Tutoriel Assembleur
Guide du cracking pour débutant
Assembleur
Manual Unpacking
Techniques de Protection
Différentes failles Web
Arp spoofing dans un réseau switché
Les intrusions
Les attaques externes
Defacage
Defacage complet
Buffer overflow
Netcat
Injection sql
Injection sql(suite)
John the Ripper
Spoofer un email
Utiliser google
La faille system
Usurper une identité
Le rooting
Shellcode sous Unix
La faille race condition
La faille xss
La faille xss (2)
Attaques sur un routeur
P2P
Azureus pas-a-pas
News
Lire les news de Linux-pour-lesnuls.com au format RSS
Distros
Gestion des paquets debian
101 commandes debian
Jeu
Webtarot
Graphisme
Effet neon dans GIMP
Effet vapeur dans GIMP
Cours fonctionnalités de GIMP
Redimentionner une image avec GIMP
Redimentionner une photo pour en faire un cadre avec gimp
Morphing avec gimp
Détourer avec gimp
Réduire le poids d'une image avec gimp
Caricature avec gimp
Humour
Ensemble
Divers