OpenSSL VPN Serveurs de messagerie |
Mod/ApacheMod.Apache HistoryHide minor edits - Show changes to markup Changed line 86 from:
http://modules.apache.org/reference to:
http://modules.apache.org/reference.php Changed lines 5-6 from:
Apache est un serveur HTTP extrêmement populaire, en effet, ce serveur héberge 50% des sites mondiaux d'après netcraft. to:
Apache est un serveur HTTP extrêmement populaire, en effet, d'après netcraft, ce serveur héberge 50% des sites web mondiaux . Pourquoi créer un module ?
Plusieurs raisons : pour le plaisir, le développement est un art complexe et le seul plaisir de le maitriser est nécessaire pour espérer devenir un bon développeur ! mais aussi, parce que développer un mod apache est le meilleur moyen d'obtenir le maximum de performances pour le traitement de requêtes web, j'ai personnellement travaillé pour une administration qui a basé l'ensemble de son SI sur des développements de cette nature, au prix d'un effort certain, le résultat est sans doute un des sites web de l'administration Française qui résiste le mieux à des montés en charge fulgurantes.\\ Changed lines 12-13 from:
Pourquoi créer un mod (module) pour ce serveur ? to:
J'aborderai ici, le développement de mod apache sous Windows, car Microsoft fournit gratuitement l'environnement de développement le plus aboutit du Marché, Visual Studio 2008 express edition, cette version ne permet pas le développement d'applications avec interface mais là n'étant pas le problème nous pourrons nous en contenter, et aussi parce qu'un développeur sous Unix fera très facilement le portage dans son environnement.\\ Changed lines 14-17 from:
J'aborderai ici, le développement de mod apache sous Windows, car Microsoft fournit gratuitement l'environnement de développement le plus aboutit du Marché, Visual Studio 2008 express edition, cette version ne permet pas le développement d'applications avec interface mais là n'étant pas le problème nous pourrons nous en contenter et parce que un développeur sous Unix fera très facilement la conversion dans son environnement.\\ to:
L'architecture d'Apache 2
Apache est un serveur de socket qui charge au démarrage des modules venant étendre des fonctionnalités qui sinon, de base, se limiteraient aux communications réseau SYN->SYN/ACK. Le core_module se charge de recevoir, par l'intermédiaire des sockets, des flux alimentant des buffers, un système d'événement vient ensuite provoquer des traitements consommant les buffers et générant les réponses qui se videront par la suite, elles aussi, dans les sockets et deviendront les réponses aux clients. Voici pour le principe.\\ Changed lines 19-27 from:
to:
Un exemple de module : helloworld
C'est pas original mais c'est formateur. Changed line 73 from:
Voici ce qui devraita apparaitre dans le navigateur to:
Voici ce qui devrait apparaitre dans le navigateur Changed line 81 from:
Le projet de base est celui d'une DLL, par convenance j'ai changé l'extension de la DLL en SO (shared objet) bien que nous soyons sous Windows. Pour le reste, les chemins d'accès aux différents élements devra sans doute être adapté aux besoins.\\ to:
Le projet de base est celui d'une DLL, par convenance j'ai changé l'extension de la DLL en SO (shared objet) bien que nous soyons sous Windows. Pour le reste, les chemins d'accès aux différents éléments devra sans doute être adapté aux besoins.\\ Changed line 83 from:
Ci-après, l'archive complète de la solution\\ to:
Ci-après, l'archive Visual Studio complète de la solution\\ Added lines 85-86:
un lien intéressant sur le sujet http://modules.apache.org/reference Changed lines 70-71 from:
Ainsi, le module sera comme à chaque fois invoqué à chaque requête sur le site mais n'aura en plus un handler valant to:
Ainsi, le module sera comme à chaque fois invoqué à chaque requête sur le site mais n'aura en plus un handler valant Changed lines 73-74 from:
Le projet de base est celui d'une DLL, par convenance j'ai changé l'extension de la DLL en SO (shared objet) bien que nous soyons sous Windows. Pour le reste, les chemins d'accès aux différents élements devra sans doute être adapté aux besoins. to:
May 07, 2008, at 11:09 PM
by - mod apache windows
Added lines 1-85:
(:keywords mod, module, apache, windows:) (:description Source d'un exemple de module pour apache :)
(:source lang=C :)
module AP_MODULE_DECLARE_DATA helloworld_module; static int helloworld_handler(request_rec *r) { fprintf(stderr,"helloworld-handler"); if (!r->handler || strcmp(r->handler, "helloworld-handler")) return DECLINED; r->content_type = "text/html"; ap_send_http_header(r); ap_rputs("<H1>Hello <i>Apache 2.2</i> World!</H1>" ,r); ap_log_rerror(APLOG_MARK, APLOG_NOTICE, 0, r,"[%s@%i] hello world (%s)",__FILE__,__LINE__,r->handler); return OK; } static void register_hooks(apr_pool_t *p) { ap_hook_handler(helloworld_handler, NULL, NULL, APR_HOOK_MIDDLE); } module AP_MODULE_DECLARE_DATA helloworld_module = { STANDARD20_MODULE_STUFF, NULL, /* create per-directory config structure */ NULL, /* merge per-directory config structures */ NULL, /* merge per-directory config structures */ NULL, /* merge per-server config structures */ NULL, /* merge per-server config structures */ register_hooks /* register hooks */ }; (:sourcend:)
Le module est maintenant interrogé à chaque requête reçue par le serveur Apache. La gestion des événements doit maintenant passer au module une information complémentaire qui permettra de déterminer rapidement pour quelle raison il est invoqué par l'ajout d'un handler levé uniquement lors de l'accès à une page particulière, pour cela l'ajout de ces quelques lignes au fichier httpd.conf suffira: |