Derniers journaux de brouits :
- [04/12@22:48] spam 2
- [04/12@04:09] spam
- [15/11@21:04] encoder en ogg/vorbis+theora en un clic de souris
- [16/07@19:24] Fabien, messge perso !
- [23/04@14:20] linux sur HP Compaq nx9105
- [02/04@14:41] libspopc 0.6 is out
- [08/02@16:47] new job !
- [17/08@18:11] libspopc 0.5.9 released
Journal : un micro serveur http 1.0 pour la maison
Posté par Ben (Jabber id, page perso, ) le 05 décembre 2005Et puis il y a micro_httpd, écrit en C, basé aussi sur inetd.
Je l'ai modifié hier pour le booster en lui retirant un sale appel à system(), puis je l'ai installé sur mon portable. il supporte allègrement les 2 ou 3 requêtes par seconde en pointe lorsque toute la famille veut accéder à mon portable (ce qui n'arrive pour ainsi dire jamais).
Bref, micro_httpd est idéal pour l'apprentissage, et pour le fun,
à lire et à customizer (couleurs, 404, page d'index et que sais-je encore..) pour le plaisir de faire joujou.
la version originale:
http://www.acme.com/software/micro_httpd/
le patch (vite-fait) pour virer l'appel à system():
http://brouits.free.fr/share/patches/micro_httpd-nosed.diff
--
petite précision :
Vu que je suis naté, sur 192.168.0.0, il m'a fallu modifier la config de tous les navigateurs des autres PC pour leur interdire d'utiliser le proxy du FAI pour aller sur ce portable. (il m'a fallu un certain temps avant de comprendre pourquoi diantre cela ne fonctionnait pas au début)
> Lire le journal (7 commentaires, moyenne: 2,6).
Un micro serveur http 1.0 pour la maison
C'est vrai que quand on regarde le code original qui génère la page d'index, utiliser une liste de commande shell avec une expression sed aussi longue sur la sortie de ls, on peut se demande ce qui est passé par la tête de l'auteur à ce moment : il lui aurait été sûrement plus rapide de faire une fonction dir_output() comme tu as fait que de rédiger son expression sed à rallonge :) D'autant que ta solution évite la création de moute processus et l'utilisation de multiple descripteur de fichier pour finalement un but simple !
-
[^]scandir()
Posté par Ben (Jabber id, page perso, ) le 05/12/2005 à 10:06. (lien). Évalué à 3.bah, je pense que le gars a codé ça à l'arrache en moins d'une heure et qu'il n'avait pas en tête la fonction scandir(), et/ou qu'il voulait économiser 5 ou 6 lignes de code en plus, voir qu'il ne la connaissait pas, vu qu'elle n'est pas posix mais bsd. Justement, je l'ai découverte de man en man alors que j'allais remplir un classique "dirent *" avec l'artillerie posix opendir/readdir/seekdir/closedir.
En PHP :)
Je me suis amusé aussi à faire un petit serveur HTTP en PHP.
Il supporte une partie du protocol 1.1 (Keep-Alive, etc...) , il fait proxy, et est à peu près modulable. Comme PHP5 peut ouvrir une socket de type serveur, il fonctionne en standalone.
C'est environ 2 fois plus lent que Apache 1 sur des fichiers statiques, mais la performance n'était pas le but non plus (enfin il y a moyen d'améliorer je pense).
J'ai fait une "abstract class" de gestion de serveur multiprocessus dont je me sert pour ce serveur. Je me suis inspiré de Apache pour la configuration (MaxClients, Max|MinSpareServers, etc...).
C'est assez amusant à faire, pour la gestion des processus, le protocol HTTP, etc...
Je suis en déménagement en ce moment, donc pas de site ni de démo, mais je peu envoyer un petit tgz si quelqu'un est intéressé.
Il y a encore des trucs à faire, genre un module CGI, ou encore le support SSL.
-
[^]Re: En PHP :)
Posté par Cali_Mero () le 05/12/2005 à 12:12. (lien). Évalué à 3.C'est vrai qu'on peut faire des serveurs très sympa en php. Je me suis moi-même essayé à l'écriture d'un serveur IRC dans ce langage, c'est un exercice très formateur. (Pour info, les sockets serveur marchent très bien aussi en php4).
Pour revenir sur le sujet des serveurs http en php, il y a aussi nanoweb (qui est connu et assez mature) :
une vieille news dlfp : http://linuxfr.org/2002/10/29/10142.html
le site : http://nanoweb.si.kz/--
#define MAGIC 0xdefaced /* I should've patented this number -cliph */
lighttpd
A noter l'existence de lighttpd : http://lighttpd.net/
Il est à la fois très léger, rapide (plus qu'apache notamment sur les fichiers statiques) et il supporte des fonctionnalités avancées (fastcgi...). Enfin, il est très simple à configurer.
L'essayer c'est l'adopter.
-
[^]Re: lighttpd
Posté par Khanh-Dang (page perso, ) le 06/12/2005 à 19:37. (lien). Évalué à 2.En ce qui concerne les très petits serveurs, j'avais utilisé fnord sur un 386 :
http://www.fefe.de/fnord/
C'est vraiment très petit, et c'est très rapide.

Les journaux sont destinés à des informations qui ne sont pas suffisamment intéressantes
pour être validées en dépêche (sinon n'hésitez pas à proposer votre information en
dépêche), qui sont sans rapport avec Linux ou le libre, ou simplement pour donner votre
avis. Si vous désirez poser une question, merci d'utiliser 

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.
Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.