Apache+DSO+mod_ssl+mod_perl+php+mod_auth_nds+mod_auth_mysql+mod_fastcgi Ray Van Dolson, rayvd@firetail.org v0.91, 5 Aprile 2000 Spiega l'installazione di un webserver basato su Apache configurato per gestire DSO e vari moduli utili tra cui mod_perl, mod_ssl e php. Traduzione di Raoul Raffagli (raoul.raffagli@tin.it) per il LIFO (http://lifolab.org), revisione di Claudio Cattazzo (clau­ dio@pluto.linux.it). ______________________________________________________________________ Indice Generale 1. Informazioni legali 2. Introduzione 2.1 Descrizione dei Componenti 2.2 Cronologia 3. Installazione dei Componenti 3.1 Preparazioni 3.2 mod_ssl 3.2.1 Installare e compilare OpenSSL 3.2.2 Installare e compilare RSAREF 2.0 3.2.3 Installare e compilare MM 3.2.4 Installare e compilare mod_ssl (finalmente!) 3.3 Apache 3.4 MySQL 3.5 PHP 3.0.15 3.5.1 GD 3.5.2 IMAP 3.5.3 OpenLDAP 3.5.4 Installare e compilare PHP 3.0.15 3.6 mod_perl 3.6.1 Moduli Perl Richiesti 3.6.2 Installare e compilare mod_perl 1.2x 3.7 mod_auth_mysql 3.8 mod_auth_nds 3.8.1 ncpfs 3.8.2 Compilare ed installare mod_auth_nds 3.9 mod_fastcgi 4. Considerazioni finali 4.1 Ringraziamenti 4.2 Contatti 4.3 Altro ______________________________________________________________________ 11.. IInnffoorrmmaazziioonnii lleeggaallii Apache+mods mini-HOWTO for Linux Systems Copyright (C)2000 Ray Van Dolson. This document is free; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This document is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You can get a copy of the GNU GPL at at http://www.gnu.org/copyleft/gpl.html . Apache+mods mini-HOWTO per Sistemi Linux Copyright (C)2000 Ray Van Dolson. Questo documento è libero; è possibile redistribuirlo e/o modificarlo sotto i termini della GNU General Public License come pubblicato dalla Free Software Foundation; sia la versione 2 della Licenza sia (a vostra scelta) una qualsiasi versione successiva. Questo documento è distribuito nella speranza che sia utile, ma SENZA ALCUNA GARANZIA; senza nemmeno l'implicita garanzia di COMMERCIABILITÀ o ADEGUATEZZA PER UN PARTICOLARE USO. Si veda la GNU General Public License perculteriori dettagli. Ci si può procurare una copia della GNU GPL presso http://www.gnu.org/copyleft/gpl.html . 22.. IInnttrroodduuzziioonnee Questo documento delinea il procedimento usato per installare Apache ed i relativi moduli sul web-server del Walla Walla College (www.wwc.edu). Mentre sarà, per la maggior parte, specifico per il nostro sistema, con buone speranze può servire come utile riferimento per effettuare altre installazioni. Questo documento cercherà di delineare il procedimento esatto utilizzato per installare il server. Ci saranno delle note quando ci si sarebbe dovuti occupare diversamente delle cose ma saranno dati i passaggi originali (visto che hanno funzionato). 22..11.. DDeessccrriizziioonnee ddeeii CCoommppoonneennttii La piattaforma sulla quale è stato installato il web-server è un sistema basato su Red Hat 6.1, kernel Linux 2.2.14 (compilato da zero) in esecuzione su un sistema basato su biprocessore PIII 600 con RAID5 e diverse altre cose. Il web-server è Apache 1.3.12. I seguenti moduli sono stati aggiunti al server: · mod_fastcgi SNAP (anche mod_rewrite), per l'utilizzo con Zope. · Auth-MySQL 2.20 · mod_ssl 2.6.2 (Open-SSL 0.9.5) · mod_perl 1.21 · PHP 3.0.15 · mod_auth_nds 0.3a 22..22.. CCrroonnoollooggiiaa v0.91 (5 Aprile 2000) · Aggiornato mod_fastcgi alla versione corretta. v0.9 (4 Aprile 2000) · Completata la prima bozza · Errori di battitura/grammatica v0.1 (Marzo 2000) · Bozza iniziale 33.. IInnssttaallllaazziioonnee ddeeii CCoommppoonneennttii 33..11.. PPrreeppaarraazziioonnii Avrete bisogno dei seguenti software: · Apache 1.3.12 · PHP 3.0.15 · GD 1.3 (per fare uso di file GIF) · Source · RPM · RPM-devel · GD 1.8.1 (per fare uso di file PNG) · Source · RPM · RPM-devel · IMAP 4.5+ · Source · RPM · OpenLDAP 1.2.9+ · Source · RPM · RPM-devel · mod_perl 1.22+ · _I _m_o_d_u_l_i _r_i_c_h_i_e_s_t_i _d_a _P_e_r_l_5 · MIME::Base64 · URI · HTML-Parser · Digest-MD5 · libnet · libwww · mod_ssl 2.6.2+ · OpenSSL 0.9.5 · Source · RPM · RPM-devel · RSAREF 2.0 · MM 1.0.12 · MySQL 3.22.32 · mod_auth_nds 0.4 · ncpfs 2.2.0.17 Nota: il kernel deve essere compilato anche con il supporto IPX. · mod_auth_mysql 2.20 · mod_fastcgi SNAP Oct06 Questo è lo schema della disposizione delle directory che uso e raccomando: + /usr/src | +-+ apache | +-+ apache-1.3.12 | +-+ modules | | | +-+ mod_perl | | | | | +- mod_perl-1.21 | | | | | +-+ depend | | | | | +- | | | +-+ mod_ssl | | | | | +- mod_ssl-2.6.2-1.3.12 | | | | | +-+ depend | | | | | +- openssl-0.9.5 | | | | | +- rsaref-2.0 | | | | | +- mm-1.0.12 | | | +-+ mod_fastcgi_SNAP | | | +-+ php | | | | | +- php-3.0.15 | | | | | +-+ depend | | | | | +- gd-1.3 | | | | | +- imap-4.5 | | | | | +- openldap-1.2.9 | | | +-+ mod_auth_nds | | | | | +- mod_auth_nds-0.4 | | | | | +-+ depend | | | | | +- ncpfs-2.2.0.17 | | | +-+ mod_auth_mysql | +-+ mysql Verificate se alcuni dei sopracitati moduli/pacchetti software sono già installati sul vostro sistema. Normalmente non crea problemi, comunque, scaricare tutto ed installare in caso serva. Potreste averne una vecchia versione installata nel sistema. 33..22.. mmoodd__ssssll 33..22..11.. IInnssttaallllaarree ee ccoommppiillaarree OOppeennSSSSLL mod_ssl richiede che sia installata una specie di motore SSL. OpenSSL è la scelta naturale per l'ambiente Linux. Lo si può installare attraverso RPM (come ho fatto io) o compilarlo dai sorgenti. Siccome io non l'ho compilato dai sorgenti dovrete farlo da soli, anche se penso sia molto semplice. Molto probabilmente o lo installerete nel sistema (in /usr/local o qualcosa del genere) o lo lascerete nella sua directory e semplicemente indirizzerete qualsiasi applicazione necessiti di OpenSSL alla sua directory. RPM installerà OpenSSL nelle directory di sistema. 33..22..22.. IInnssttaallllaarree ee ccoommppiillaarree RRSSAARREEFF 22..00 Create la directory rsaref-2.0 dove volete. Nel mio caso si trova in /usr/src/apache/modules/mod_ssl-blah/depend/. Spostatevi in questa directory. cd rsaref-2.0 cp -rp install/unix local cd local make mv rsaref librsaref.a Questi comandi dovrebbero compilarvi la libreria rsaref! Semplicemente lasciate tutto qui e quando dovete creare dei link verso la libreria indirizzate lo script di configurazione appropriato a questa posizione. 33..22..33.. IInnssttaallllaarree ee ccoommppiillaarree MMMM Estraete mm-1.0.12 (o qualsiasi versione sia la più aggiornata) nella directory depend della sottodirectory mod_ssl-blah. Eseguite i passi seguenti: cd mm-1.0.12 ./configure --disable-shared make Questo dovrebbe compilare le librerie mm. Come sopra, riferitevi a questo percorso quando serve. Dovete arrangiarvi se volete installare questa libreria nel sistema. 33..22..44.. IInnssttaallllaarree ee ccoommppiillaarree mmoodd__ssssll ((ffiinnaallmmeennttee!!)) La procedura normale con apxs è compilare prima Apache e in seguito, utilizzando apxs, compilare i moduli che volete utilizzare ed inserirli nel server. Tuttavia, mod_ssl deve essere compilato nel server nel modo classico prima che lo possiate utilizzare con apxs. Quando mod_ssl sarà installato nel server per la prima volta potrete poi aggiornarlo via apxs senza dover ricompilare completamente Apache. Entrate nella directory da dove state compilando mod_ssl ed eseguite le seguenti direttive di configurazione (qui c'è il file che uso io) per la compilazione iniziale: #!/bin/sh ./configure \ --with-apache=/usr/src/apache/apache_1.3.12 \ --with-ssl \ --with-rsa=../depend/rsaref-2.0/local \ --with-mm=../depend/mm-1.0.12 \ --enable-shared=ssl Non avete bisogno di lanciare 'make' o altro qui. Quando compileremo Apache farà tutto lui per noi. Questa riga di configurazione fornisce due esempi di come il vostro sistema potrebbe essere configurato. Nel mio caso OpenSSL era già installato da qualche parte nel sistema (probabilmente in /usr/lib, /usr/include). Quindi non ho avuto bisogno di passare alcun parametro per localizzarlo. Comunque, rsa e mm -non- erano nel sistema e li ho compilati e lasciati nelle loro directory dei sorgenti (non ho lanciato make install). In questo caso è necessario indirizzare configure alla directory appropriata in modo che possa trovare gli header/librerie. Da questo punto in avanti, a meno che non aggiorniate Apache (nel qual caso dovrete rieseguire i passaggi precedenti per la nuova versione di Apache), potrete usare apxs per aggiornare e ricompilare mod_ssl. Qui c'è lo script configure che uso per questo: ./configure \ --with-apxs=/apps/apache-1.3.12/bin/apxs \ --with-ssl=../depend/openssl-0.9.4 \ --with-rsa=../depend/rsaref-2.0/local \ --with-mm=../depend/mm-1.0.12 O qualche combinazione simile. Poi eseguite: make make install make distclean per completare l'installazione. Note: _M_M _-_n_o_n_- _è _r_i_c_h_i_e_s_t_o _p_e_r _c_o_m_p_i_l_a_r_e _m_o_d___s_s_l_. _S_e _a_v_e_t_e _p_r_o_b_l_e_m_i _a _f_a_r_l_o _f_u_n_z_i_o_n_a_r_e _e_s_c_l_u_d_e_t_e_l_o _s_e_m_p_l_i_c_e_m_e_n_t_e _d_a_l_l_a _c_o_m_p_i_l_a_z_i_o_n_e _e _a_n_c_h_e _d_a_l_l_a _r_i_g_a _(_o _d_a_l_l_e _r_i_g_h_e_) _d_e_l _f_i_l_e _._/_c_o_n_f_i_g_u_r_e_. _Q_u_a_n_d_o _i_o _h_o _c_o_m_p_i_l_a_t_o _m_o_d___s_s_l _h_o _a_v_u_t_o _e_r_r_o_r_i _r_i_g_u_a_r_d_a_n_t_i _D_B_M_. _P_e_r _r_i_s_o_l_v_e_r_e _q_u_e_s_t_o _h_o _d_o_v_u_t_o _a_g_g_i_u_n_g_e_r_e _-_l_n_d_b_m _a_l _M_a_k_e_f_i_l_e_: · Eseguite lo script configure visto sopra. · cd pkg.sslmod · Modificate il makefile ed aggiungete -lndbm a LIBS_SHLIB. Dovrebbe risultare così: · LIBS_SHLIB=-lm -lcrypt -lndbdm _C_o_n _m_o_l_t_a _p_r_o_b_a_b_i_l_i_t_à _q_u_e_s_t_o _v_i _r_i_s_p_a_r_m_i_e_r_à _m_o_l_t_e _s_o_f_f_e_r_e_n_z_e_. 33..33.. AAppaacchhee Estraete apache-1.3.12.tar.gz in /usr/src/apache o dove preferite. Ora vogliamo compilare Apache attivando le seguenti opzioni: · mod_ssl (Per compilare mod_ssl come DSO deve essere prima compilato nel server normalmente. In seguito il modulo potrà essere aggiornato via apxs.) · mod_proxy · mod_so · mod_rewrite (Per l'utilizzo con Zope) Questo è il file di configurazione che ho utilizzato per compilare inizialmente Apache: #!/bin/sh SSL_BASE=../depend/openssl-0.9.4 \ RSA_BASE=../depend/rsaref-2.0/local \ EAPI_MM=../depend/mm-1.0.12 \ ./configure \ --enable-module=ssl \ --enable-module=proxy\ --enable-shared=proxy\ --enable-module=rewrite \ --enable-shared=rewrite \ --prefix=/apps/apache-1.3.12 \ --enable-shared=ssl \ --enable-rule=SHARED_CORE \ --enable-rule=SHARED_CHAIN \ --enable-module=so Poi eseguite make make certificate make install Apache dovrebbe ora essere compilato ed installato nella directory che avete specificato con --prefix. Provatelo ed assicuratevi che parta. /percorso/di/apache/bin/apachectl start o /percorso/di/apache/bin/apachectl startssl Con buone speranze dovrebbe funzionare tutto senza problemi. Se così non fosse tornate indietro ed assicuratevi di non aver dimenticato nulla. 33..44.. MMyySSQQLL php così come mod_auth_mysql ed eventualmente mod_perl richiederanno che MySQL sia installato e attivo sul vostro sistema. Va oltre lo scopo di questo documento entrare nei dettagli dell'installazione di MySQL ma scaricatevi l'archivio ed seguite le istruzioni contenute nel o nei file INSTALL. È una procedura abbastanza immediata avere MySQL installato e funzionante. Qualcosa del tipo: ./configure make make install Dovrebbe installare tutto così che voi possiate compilare gli altri moduli di Apache. 33..55.. PPHHPP 33..00..1155 Compileremo php-3.0.15 come DSO, ossia un modulo separato che può essere caricato e scaricato dal server. Questo rende semplice aggiornare php senza dover ricompilare tutto (che può essere stressante se usate molti moduli con Apache). 33..55..11.. GGDD Nella nostra installazione di Apache php usa gd per creare immagini e cose simili. Io ho usato una versione più vecchia di gd (installata attraverso RPM) che ho linkato a php. In questo modo possiamo utilizzare anche file GIF. Questo però probabilmente non è molto desiderabile per motivi di copyright e quindi potreste voler utilizzare una versione successiva alla 1.3 che supporta solo i file PNG. Installatelo o attraverso gli RPM (rpm -i gd*.rpm) o compilatelo dai sorgenti ed installatelo nel sistema. 33..55..22.. IIMMAAPP Se volete il supporto IMAP, la procedura è simile a quella per gd. Io ho usato gli RPM dato che sono su un sistema Red Hat ma installare da sorgenti dovrebbe essere una procedura abbastanza semplice di ./configure;make;make install. 33..55..33.. OOppeennLLDDAAPP Ancora una volta potete installare OpenLDAP attraverso RPM o sorgenti. Ho scelto di farlo attraverso i sorgenti visto che l'ultima versione non era ancora disponibile come RPM quando stavamo installando il server. ./configure make make install dovrebbe fare il suo dovere! (O rpm -i openldap*.rpm) 33..55..44.. IInnssttaallllaarree ee ccoommppiillaarree PPHHPP 33..00..1155 Una volta che i moduli precedenti sono installati e funzionanti possiamo andare avanti e compilare PHP come DSO. Il procedimento è molto diretto e semplice. cd /usr/src/apache/modules/php/php-3.0.15 ./configure \ --with-apxs=/apps/apache/bin/apxs \ --with-config-file-path=/apps/etc \ --with-gd \ --with-imap \ --with-mysql=/apps/mysql \ --with-ldap=/apps \ --with-zlib \ --enable-track-vars _R_i_c_o_r_d_a_t_e _c_h_e _s_e _u_n_a _d_e_l_l_e _v_o_s_t_r_e _l_i_b_r_e_r_i_e _-_-_w_i_t_h _n_o_n _è _i_n_s_t_a_l_l_a_t_a _i_n _/_u_s_r_/_l_o_c_a_l _o _/_u_s_r _d_o_v_e_t_e _a_g_g_i_u_n_g_e_r_e _u_n_a _r_i_g_a _=_/_p_e_r_c_o_r_s_o_/ _c_o_s_ì _c_h_e _c_o_n_f_i_g_u_r_e _p_o_s_s_a _t_r_o_v_a_r_e _i_l _m_a_t_e_r_i_a_l_e _d_i _c_u_i _h_a _b_i_s_o_g_n_o_! make make install Se tutto si completa senza problemi 'make install' utilizzerà apxs per installare libphp3.so in /apache/libexec/libphp3.so e aggiungerà le voci necessarie in httpd.conf e attiverà php3. Molto semplice. 33..66.. mmoodd__ppeerrll Questa sezione documenta l'installazione di mod_perl come DSO per Apache. Ci sono molti moduli perl (oltre ovviamente a perl5, che assumo abbiate già installato) che devono essere aggiunti prima che mod_perl si compili senza lamentarsi. Se non installate questi moduli mod_perl dovrebbe lamentarsi e dirvi quali mancano. C'è un certo ordine nel quale i moduli devono essere installati. Alcuni dipendono da altri e quindi ho elencato l'ordine di installazione che ho usato io senza problemi. 33..66..11.. MMoodduullii PPeerrll RRiicchhiieessttii I moduli perl possono essere ottenuti da siti elencati precedentemente in questo documento. Scaricateli e metteteli dove preferite o nel percorso che ho usato io come rappresentato nella mappa delle directory (anch'essa più in alto nel documento). Installare un modulo è molto semplice. Dopo aver estratto il modulo nella directory (di solito con tar xvfz) dovete semplicemente entrare nella directory ed eseguire i seguenti comandi: perl Makefile.PL make make install Se tutto va come dovrebbe, questo configurerà, compilerà ed installerà il modulo perl per voi. Ovviamente, controllate il file README per ogni modulo se le cose non vanno come ci si aspetta. Questo è l'ordine che ho usato io per installare i moduli necessari per mod_perl: 1. MIME::Base64 2. URI 3. HTML::Parser 4. Digest-MD5 5. libnet 6. libwww 33..66..22.. IInnssttaallllaarree ee ccoommppiillaarree mmoodd__ppeerrll 11..22xx Dopo aver installato i moduli perl siamo pronti per compilare ed installare mod_perl in Apache. Entrate nella directory dove avete estratto mod_perl ed eseguite il seguente script: perl Makefile.PL \ USE_APXS=1 \ WITH_APXS=/percorso/di/apache/bin/apxs \ EVERYTHING=1 Questo imposterà il vostro Makefile e dirà a mod_perl di compilarsi come DSO utilizzando apxs (di cui dovete specificare la posizione). Dopo questo passaggio, eseguite make make install E mod_perl sarà spostato nella directory appropriata e le righe necessarie saranno aggiunte al file httpd.conf. 33..77.. mmoodd__aauutthh__mmyyssqqll mod_auth_mysql permette al web-server Apache di gestire le autorizzazioni attraverso un database MySQL. L'installazione del modulo come DSO non è esattamente documentata nel file README ma può essere fatta. Per prima cosa entrate nella directory in cui avete estratto mod_auth_mysql. Assumo abbiate già installato MySQL da qualche parte (assieme agli header ecc.). Verificate di sapere il percorso delle librerie di MySQL e degli header. Se siete incerti controllate /usr/lib/mysql e /usr/include/mysql. Per poter compilare mod_auth_mysql per prima cosa dovremo rinominare 'config.h' come 'auth_mysql_config.h'. Non so perché a questo file non sia stato dato il nome corretto, comunque eseguite semplicemente il comando seguente: cp config.h auth_mysql_config.h Ora, per l'ultimo passo: /percorso/di/apache/bin/apxs -i -a -I/usr/include/mysql -L/usr/lib/mysql \ -lmysqlclient -c mod_auth_mysql.c Potreste aver bisogno di eseguirlo da root se non avete accesso in lettura/scrittura nella directory di Apache. 33..88.. mmoodd__aauutthh__nnddss Nella mia scuola la rete Windows scelta è Netware. È in uso da molto tempo e sebbene spero un giorno venga cambiata, per ora è ancora la rete principale nel campus per la condivisione di file e per le email. Ogni studente ha un account Netware nel quale tutti i suoi file personali, incluse le sue pagine web, sono memorizzati. Noi montiamo queste directory sul nostro server linux ed è bello essere in grado di proteggerne alcune con le informazioni di nome utente e password di Netware. Con questo modulo Apache può autenticarsi direttamente con il server Netware. 33..88..11.. nnccppffss Per compilare mod_auth_nds dobbiamo avere ncpfs installato (assieme ai suoi header ovviamente). Prima di compilare ncpfs dovete assicurarvi che il vostro kernel abbia il supporto IPX compilato. Se è così, eseguite ./configure make make install (opzionale) che compilerà (ed installerà) le librerie. 33..88..22.. CCoommppiillaarree eedd iinnssttaallllaarree mmoodd__aauutthh__nnddss Con ncpfs installato, eseguire i seguenti comandi dovrebbe compilare mod_auth_nds come DSO: /percorso/di/apache/bin/apxs -c -lncp -L/usr/lib -I/usr/include mod_auth_nds.c /percorso/di/apache/bin/apxs -i mod_auth_nds.so Quindi aggiungete le seguenti righe al vostro httpd.conf (a mano): LoadModule nds_auth_module libexec/mod_auth_nds.so AddModule mod_auth_nds.c Quindi, riavviate Apache! 33..99.. mmoodd__ffaassttccggii Installare mod_fastcgi è necessario se volete consentire l'accesso al vostro server Zope attraverso Apache. Questo potrebbe essere utile semplicemente perché Apache è più sicuro e molto più configurabile di Zope stesso. L'attuale versione stabile di mod_fastcgi è la 2.2.2, comunque questa versione non funziona correttamente con Zope. Dovete scaricare la SNAP release che è datata 6 ottobre. Il link è fornito più sopra nel documento. Entrate nella directory di mod_fastcgi ed eseguite i seguenti comandi: /percorso/di/apache/bin/apxs -o mod_fastcgi.so -c *.c /percorso/di/apache/bin/apxs -i -a -n fastcgi mod_fastcgi.so Guardate la documentazione di mod_fastcgi per una descrizione del suo utilizzo. 44.. CCoonnssiiddeerraazziioonnii ffiinnaallii Molte di queste informazioni possono essere ottenute leggendo i file README ed INSTALL inclusi nei vari moduli. Comunque, questo documento è utile nei casi in cui per me non ha funzionato come previsto o nei quali la procedura di installazione non era così ben spiegata come avrei voluto. Ha inoltre il pregio di essere un unico documento sequenziale che dovrebbe teoricamente essere più facile da seguire e capire rispetto ad una sfilza di file README. 44..11.. RRiinnggrraazziiaammeennttii Phillip R. Wilson , autore di mod_auth_nds, per avermi aiutato a compilare ed installare con apxs mod_auth_nds. John Ash , il mio capo, per tutti i tipi di aiuto e, ovviamente, un lavoro. Marcus Faure , autore del mini-HOWTO Apache SSL PHP/FI, documento sul quale questo è vagamente basato. 44..22.. CCoonnttaattttii Se trovate errori evidenti di battitura, di grammatica, di contenuto o di qualsiasi altro genere non esitate a scrivermi un'email. Mi potete contattare in diversi modi. Ray Van Dolson Email: IRC: DALnet, #Bludgeon (nick Variant) 44..33.. AAllttrroo Tutto ciò che è citato in questo documento sarà alla fine disponibile su ftp.wwc.edu/pub/apache. Metterò tutto come descritto sopra e con buone speranze gli script di installazione per installare tutto da zero.