Apache+DSO+mod_ssl+mod_perl+php+mod_auth_nds+mod_auth_mysql+mod_fastcgi Ray Van Dolson, 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) Informazioni legali

Apache+mods mini-HOWTO per Sistemi Linux

Copyright (C)2000 Ray Van Dolson.

Questo documento e' gratuito; e' possibile ridistribuirlo e/o modificarlo nei 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 e' distribuito nella speranza che sia utile, SENZA ALCUNA GARANZIA; senza nemmeno l'implicita garanzia di COMMERCIABILITA' o ADEGUATEZZA PER UN USO PARTICOLARE. Riferirsi alla GNU General Public License per ulteriori dettagli.

Potete procurarvi una copia della GNU GPL presso .

Introduzione

Questo documento evidenzia il procedimento usato per installare Apache ed i relativi moduli sul web-server del Walla Walla College (www.wwc.edu). Mentre sara', per la maggior parte, specifico per il sitema--speriamo possa servire come utile riferimento per performare altre installazioni.

Questo documento cerchera' di evidenziare 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).

Descrizione dei Componenti

La piattaforma sul quale e' stato installato il web-server e' sistema basato su Red Hat 6.1, Linux kernel 2.2.14 (compilato da zero) che gira su un sistema basato su biprocessore PIII 600 con RAID5 e diverse altre cose.

Il software del web-server e' Apache 1.3.12. I seguenti moduli sono stati aggiunti al server:

mod_fastcgi SNAP (anche mod_rewrite), da usare 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

Storia

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

Installazione dei Componenti Preparazioni

Avrete bisogno dei seguenti software: GD 1.3 (per utilizzare files GIF) GD 1.8.1 (per utilizzare files PNG) IMAP 4.5+ OpenLDAP 1.2.9+ i moduli richiesti da Perl5 OpenSSL 0.9.5 Nota: anche il kernel deve essere compilato con il supporto IPX.

Questo e' lo schema della disposizione delle directories 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 gia' installati nel vostro sistema. Normalmente non crea problemi, comunque, scaricare tutto ed installarlo. Potreste averne una vecchia versione installata nel sistema.

mod_ssl Installare e compilare OpenSSL

mod_ssl richiede una che sia installato una specie di motore SSL. OpenSSL e' la scelta naturale per l'ambiente Linux. Voi potete o installarlo via 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 OpenSSL alla sua directory.

RPM installera' OpenSSL nelle directories di sistema.

Installare e compilare RSAREF 2.0

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 costruirvi 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.

Installare e compilare MM

Estraete mm-1.0.12 (o qualsiasi versione sia la piu' aggiornata) nella directory depend della sottodirectory mod_ssl-blah. Eseguite i prossimi passi:

cd mm-1.0.12 ./configure --disable-shared make

Questo dovrebbe costruirvi le librerie mm. Come sopra, riferitevi a questo percorso quando serve. Non vi posso aiutare se volete installare questa libreria nel sistema.

Installare e compilare mod_ssl (finalmente!)

La procedura normale con apxs e' compilare prima Apache, e in seguito, utilizzando apxs, compilare i moduli che volete urilizzare ed inserirli nel server. Tuttavia, mod_ssl deve essere compilato nel server nel modo usuale prima che lo possiate utilizzare con apxs. Quando mod_ssl sara' installato nel server per la prima volta, potrete poi aggiornarlo via apxs senza dover ricompilare tutto Apache.

Entrate nella directory da dove state compilando mod_ssl e eseguite le seguenti direttive di configurazione (qui c'e' 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, fara' tutto lui per noi.

Questa linea di configurazione da due esempi di come il vostro sistema potrebbe essere impostato. Nel mio caso, OpenSSL era gia' installato da qualche parte nel sistema (probabilmente in /usr/lib, /usr/include). Pertanto, non ho avuto bisogno di passare alcun parametro per localizzarlo. Comunque, rsa e mm -non- erano nel sistema, e li ho compilati io e lasciati nelle loro directories dei sorgenti (non ho lanciato make install). In questo caso, occorre indirizzare configure alla directory appropriata cosi' che possa trovare gli headers/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'e' lo script di configurazione 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 lanciate:

make make install make distclean

per completare l'installazione.

Note: MM -non- e' richiesto per compilare mod_ssl. Se avete problemi a farlo funzionare, semplicemente escludetelo dalla compilazione e anche dalla(e) linea(e) del file ./configure

Quando io ho compilato mod_ssl, ho avuto errori riguardanti DBM. Per risolvere questo, ho dovuto aggiungere -lndbm al Makefile:

Eseguite lo script configure visto sopra. cd pkg.sslmod Modificate il makefile ed aggiungete -lndbm a LIBS_SHLIB. Dovrebbe risultare cosi': LIBS_SHLIB=-lm -lcrypt -lndbdm

Con molta probabilita' questo vi risparmiera' molte sofferenze.

Apache

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 potra' essere aggiornato via apxs) mod_proxy mod_so mod_rewrite (Per l'utilizzo con Zope)

Questo e' 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

In teoria dovrebbe funzionare tutto senza problemi. Se non e' cosi', tornate indietro ed assicuratevi di non aver dimenticato nulla.

MySQL

php cosi' come mod_auth_mysql e 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 e seguite le istruzioni contenute nel file INSTALL. E' una procedura abbastanza immediata avere MySQL installato e funzionante. Qualcosa del tipo:

./configure make make install

Dovrebbe installare tutto cosi' che voi possiate compilare gli altri moduli di Apache.

PHP 3.0.15

Compileremo php-3.0.15 come DSO che significa che e' un modulo separato che puo' essere caricato o disattivato dal server. Questo rende semplice aggiornare php senza dover ricompilare tutto (che puo' essere stressante se usate molti moduli con Apache).

GD

Nella nostra installazione di Apache, php usa gd per creare immagini e cose simili. Io ho usato una versione piu' vecchia di gd (installato via RPM) che ho linkato a php. In questo modo possiamo visualizzare anche files GIF. Questo pero' probabilmente non e' molto desiderabile per motivi di copyright, e quindi potreste voler utilizzare una versione successiva alla 1.3 che supporta solo i files PNG.

Installatelo o via RPM (rpm -i gd*.rpm) o compilatelo dai sorgenti e installatelo nel sistema.

IMAP

Se volete il supporto IMAP, la procedura e' simile a quella per gd. Io ho usato gli RPM siccome sono su un sistema Red Hat, ma installare da sorgenti dovrebbe essere una procedura abbastanza semplice di ./configure;make;make install.

OpenLDAP

Di nuovo potete installare OpenLDAP via o RPM o sorgenti. Ho scelto di farlo via sorgenti siccome l'ultima versione non era ancora disponibile via RPM quando stavamo installando il server.

./configure make make install

dovrebbe fare il suo dovere! (O rpm -i openldap*.rpm)

Installare e compilare PHP 3.0.15

Una volta che le parti sopracitate sono installate e funzionanti, possiamo andare avanti e compilare PHP e DSO. Il procedimento e' 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

Ricordate che se una delle vostre librerie --with non sono installate in /usr/local o /usr dovete aggiungere una linea =/percorso/ cosi' che configure possa trovare i files di cui ha bisogno!

make make install

Se tutto si completa senza problemi, 'make install' utilizzera' apxs per installare libphp3.so in /apache/libexec/libphp3.so e aggiungera' le chiamate necessarie in httpd.conf e attivera' php3. Molto semplice.

mod_perl

Questa sezione documenta l'insallazione di mod_perl come DSO per Apache. Ci sono molti moduli perl (oltre, ovviamente, a perl5, che assumo abbiate gia' 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 vi mancano.

C'e' un certo ordine nel quale i moduli devono essere installati. Alcuni dipendono da altri e quindi ho listato l'ordine di installazione che ho usato io senza problemi.

Moduli Perl Richiesti

I moduli perl possono essere ottenuti da siti elencati piu' su in questo documento. Scaricateli e metteteli dove preferite o nel percorso che ho usato io come visibile dalla mappa delle directory (anch'essa piu' in alto nel documento). Installare un modulo e' 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 configurera', costruira' ed installera' il modulo perl per voi. Ovviamente, controllate il file README per ogni modulo se le cose non vanno come dovrebbero.

Questo e' l'ordine che ho usato io per installare i moduli necessari per mod_perl:

MIME::Base64 URI HTML::Parser Digest-MD5 libnet libwww

Installare e compilare mod_perl 1.2x

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 impostera' il vostro Makefile e dira' 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 sara' spostato nella directory appropriata e le righe necessarie saranno aggiunte al vostro httpd.conf.

mod_auth_mysql

mod_auth_mysql gestisce le autorizzazioni tra il web-server Apache e un database utente MySQL. L'installazione del modulo come DSO non e' esattamente documentata nel file README, ma puo' essere fatta.

Per prima cosa, entrate nella directory in cui avete estratto mod_auth_mysql. Suppongo abbiate gia' installato MySQL da qualche parte (insieme agli headers etc.). Verificate di sapere il percorso delle librerie di MySQL e degli header. Se incerti, provate a guardare in /usr/lib/mysql e /usr/include/mysql.

Per compilare mod_auth_mysql, per prima cosa dovremo rinominare 'config.h' in 'auth_mysql_config.h'. Non so perche' a questo file non e' 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 lanciarlo da root se non avete accesso in lettura/scrittura nella directory di Apache.

mod_auth_nds

Nella mia scuola, la rete Windows scelta e' Netware. E' in uso da molto tempo, e sebbene spero che un giorno venga cambiato per ora e' ancora la rete principale nel campus per il filesharing e le email. Ogni studente ha un account Netware sul quale tutti i suoi file personali--incluse le sue pagine web--sono salvati. Noi montiamo queste directories sul nostro server linux, e sarebbe carino poterne proteggere con una password alcune con le informazioni della username e password di Netware. Con questo modulo, Apache puo' autenticarsi direttamente con il server Netware.

ncpfs

Per compilare mod_auth_nds, dobbiamo avere ncpfs installato (insieme ai suoi headers ovviamente). Prima di compilare ncpfs, dovete assicurarvi che il vostro kernel abbia il supporto IPX compilato. Se e' cosi', lanciare

./configure make make install (opzionale)

compilera' (ed installera') le librerie.

Compilare ed installare mod_auth_nds

Con installato ncpfs, lanciare 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!

mod_fastcgi

Installare mod_fastcgi e' necessario se volete consentire l'accesso al vosto server Zope attraverso Apache. Questo potrebbe essere utile semplicemente perche' Apache e' piu' sicuro e molto piu' configurabile di Zope stesso.

L'attuale versione stable di mod_fastcgi e' la 2.2.2, comunque questa versione non funziona correttamente con Zope. Dovete scaricare la SNAP release che e' datata 06 Ottobre. Il link e' fornito piu' 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.

Considerazioni finali

Molte di queste informazioni possono essere ottenute leggendo i files README ed INSTALL inclusi nei vari moduli. Comunque, questo documento e' utile nei casi in cui non ha funzionato come previsto per me, o nei quali la procedura di installazione non era cosi' ben spiegata come avrei voluto. Ha inoltre il pregio di essere un unico documento sequenziale, che dovrebbe teoricamente essere piu' facile da seguire e capire piuttosto che una quantita' di file README.

Crediti

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 posto di lavoro. Marcus Faure , autore del mini-HOWTO Apache SSL PHP/FI, documento sul quale questo e' vagamente basato.

Come contattare l'autore

Se trovate errori evidenti, di battitura, di grammatica, di contenuto o di qualsiasi altro genere, non esitate a scrivermi una email. Mi potete contattare in diversi modi.

Ray Van Dolson Email: IRC: DALnet, #Bludgeon (nick Variant) Tutto il resto

Tutto cio' che e' citato in questo documento sara' alla fine disponibile su ftp.wwc.edu/pub/apache. Mettero' tutto come descritto sopra, e probabilmente gli script di installazione per installare tutto da zero. (uno script molto silenzioso, badate).