Comunque, come promesso, oggi vi spiegherò come scrivere, installare e provare un modulo Apache minimale. Così se qualcuno si appassiona all'argomento potrà, con questa base (funzionante!), divertirsi a scriverne di più complessi, alla faccia di quelli che "Il C non serve nello sviluppo Web".
Il nostro modulo basico lo chiameremo, ad esempio myapmod. Cominciamo con il codice, ovviamente:
#include <httpd.h> #include <http_protocol.h> #include <http_config.h> // handler del modulo static int myapmodHandler( request_rec *reqrec) { // test handler if (! reqrec->handler || strcmp(reqrec->handler, "myapmod")) return DECLINED; // test metodo http if (reqrec->method_number != M_GET) return HTTP_METHOD_NOT_ALLOWED; // html output ap_set_content_type(reqrec, "text/html;charset=ascii"); ap_rputs("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\">\n", reqrec); ap_rputs("<html>", reqrec); ap_rputs("<head>", reqrec); ap_rputs("<title>Modulo Apache Elementare</title>", reqrec); ap_rputs("</head>", reqrec); ap_rputs("<body>", reqrec); ap_rputs("<h1>myapmod: il mio Modulo Apache elementare</h1>", reqrec); ap_rputs("</body>", reqrec); ap_rputs("</html>", reqrec); // esco con OK return OK; } // register hooks del modulo static void myapmodHooks( apr_pool_t *pool) { // set hook handler ap_hook_handler(myapmodHandler, NULL, NULL, APR_HOOK_MIDDLE); } // struttura globale del modulo module AP_MODULE_DECLARE_DATA myapmod_module = { STANDARD20_MODULE_STUFF, NULL, NULL, NULL, NULL, NULL, myapmodHooks };Semplice no ? E ho inserito gli opportuni commenti nel codice (un po' stringati, devo ammetterlo) così non devo neanche spiegarvi come funziona. E, come noterete quando lo userete la prima volta, il codice HTML ivi contenuto viene correttamente visualizzato dal browser (ohhhh... miracolo).
Ora passiamo alla compilazione e installazione. Per comodità e gusti personali vi propongo una guida per Linux, ma vi assicuro che il modulo basico si può realizzare (se proprio volete soffrire) anche sotto Windows.
Il requisito preliminare è, ovviamente, aver installato Apache sul sistema. Cercate, con il nostro amico Google, una delle milioni di guide per trasformare il proprio pc in un server LAMP (o WAMP) (non vi descrivo io la procedura per non dilungarmi troppo, ma, vi garantisco, è abbastanza semplice). Una volta installato il server Apache assicuratevi che il vostro sistema sia anche preparato per compilare i moduli Apache: deve essere disponibile il pacchetto apache2-prefork-dev, quindi, per accertarvene, eseguite:
dpkg -l | grep apache2E, se nella lista di pacchetti che vi verrà mostrata non c'è il pacchetto suddetto, installatelo con:
sudo apt-get install apache2-prefork-devE, adesso possiamo, finalmente, compilare e installare con:
sudo apxs2 -c mod_myapmod.c sudo apxs2 -i mod_myapmod.laPoi, dobbiamo creare ed editare due nuovi file nella directory /etc/apache2/mods-available. Creiamo/apriamo il primo con:
sudo gedit /etc/apache2/mods-available/myapmod.loade gli scriviamo dentro:
LoadModule myapmod_module /usr/lib/apache2/modules/mod_myapmod.soQuindi creiamo/apriamo il secondo con:
sudo gedit /etc/apache2/mods-available/myapmod.confe gli scriviamo dentro:
<Location /myapmod> SetHandler myapmod </Location>A questo punto non ci resta che abilitare il nostro nuovo modulo e far ripartire il Server Apache (che fará partite tutti i moduli abilitati, compreso il nostro myapmod):
sudo a2enmod myapmod sudo /etc/init.d/apache2 restartSe tutto é stato fatto correttamente, navigando con un browser alla url http://localhost/myapmod verrà visualizzato il codice HTML inserito nel nostro modulo. E se non funziona riprovate tutti i passi cominciando dal primo, verificando che non vi sia sfuggito qualche errore segnalato dal sistema. Buona fortuna... (io, ovviamente, ho provato tutta la procedura prima di pubblicare il post, e sono sicuro che funziona).
Ovviamente con questo post non pretendo di scoprire l'acqua calda, visto che, se cercate su Internet come costruire un modulo Apache minimale, scoprirete che moltissimi altri hanno pubblicato ben prima di me guide analoghe. Ma volete mettere con leggere la stessa cosa scritta dal vostro C-blogger favorito?
Ciao e al prossimo post.
Nessun commento:
Posta un commento