|
Appunti informatica |
|
Visite: 5923 | Gradito: | [ Medio appunti ] |
Leggi anche appunti:DatabaseDATABASE IL PROGRAMMA ACCESS Access è un programma per la gestione Progetto del modulo di basi di datiProgetto del Modulo di Basi di Dati Gestione di un Team di Formula 1 SPECIFICHE Si I Database RelazionaliI Database Relazionali allora cosa sono questi famigerati Database relazionali? il |
Installare e configurare Apache
Nonostante gli
sforzi di Microsoft e Netscape, Apache continua a dominare il mercato dei
server web, come testimoniano le ultime indagini di Netcraft da cui risulta che
circa il 55% dei server HTTP sono targati Apache. I fattori principali che
hanno contribuito al successo di Apache sono la disponibilità gratuita del
codice sorgente, la sua struttura modulare che lo rende estremamente versatile
e la stabilità di esecuzione. Apache viene distribuito anche in forma
precompilata per diverse piattaforme Unix e, dalla release 1.3, è disponibile
anche per Windows; tuttavia le prestazioni ottenute su questa piattaforma sono
al momento inferiori a quelle per Unix.
La scelta dei moduli da compilare e la fase di configurazione del server HTTP,
sono i punti più importanti del processo di installazione di Apache perché da
essi dipende la qualità e l'affidabilità del servizio offerto. In questo
articolo analizzeremo, pertanto, gli aspetti della compilazione e della
configurazione del server web Apache su piattaforma Unix. Vedremo anche quali
sono le procedure da seguire per integrare un modulo aggiuntivo nel codice
binario del server.
Installazione di Apache
La versione più recente del server Apache è la 1.3.6. Presso il sito ufficiale https://www.apache.org è disponibile sia il codice sorgente sia il codice binario compilato per alcune versioni di Unix e per Windows.Il codice sorgente viene distribuito sotto forma di archivio tar compresso. Procuriamoci, dunque, una copia del file apache_1.3.6.tar.gz ed eseguiamo il comando:
# gzip -dc apache_1.3.6.tar.gz | tar -C /usr/local -xvf -
In questo modo il codice sorgente verrà installato nella directory /usr/local/apache_1.3.6. Posizioniamoci in tale directory ed esaminiamo gli aspetti della fase di compilazione del server HTTP Apache:
# cd /usr/local/apache_1.3.6
Informazioni
esaustive sulle modalità di configurazione, sui moduli disponibili e sulla
compilazione di Apache, si trovano nel file INSTALL presente in questa
directory. Apache mette a disposizione due modalità per la personalizzazione
dei Makefile. La prima possibilità è quella di modificare il file src/Configuration
selezionando i moduli che si desiderano installare e aggiungendo le istruzioni
necessarie per l'inserimento dei moduli di terze parti. Quindi si esegue lo
script Configure.
La seconda possibilità, ed è la novità presente nelle versioni 1.3.x, consiste
nell'utilizzare APACI (Apache Autoconf-style Interface). Questa
interfaccia è simile alla GNU autoconf e, a differenza del metodo
precedente, verranno generati i file di configurazione dell'attività del server
Apache già personalizzati secondo le indicazioni che abbiamo fornito da linea
di comando. Inoltre, verranno creati anche alcuni utili script per la gestione
e manutenzione del server HTTP. Utilizzando questa procedura, il comando per la
generazione dei Makefile adattati al nostro sistema è il seguente:
# ./configure --prefix=/usr/local/httpd
L'opzione prefix=ServerRoot
è molto importante perché rappresenta la posizione in cui il server HTTP si
inserisce nel filesystem. Tutti i file necessari per l'amministrazione
del server HTTP, a meno di particolari configurazioni da segnalare
opportunamente all'avvio del server, risiedono in una posizione ad essa
relativa.
Ciò detto, eseguiamo i comandi per la compilazione e l'installazione del server
Apache:
#
make
# make install
Alla fine dell'installazione, nella directory PREFIX/bin troveremo il programma httpd per la gestione del servizio HTTP e alcuni script tra cui apachectl per l'avvio e la conclusione delle attività del daemon httpd. Avendo usato lo script configure, i file di configurazione del server Apache sono già correttamente impostati per quanto riguarda le opzioni generali di funzionamento. Pertanto, possiamo provare ad avviare il server web con il comando
# PREFIX/bin/apachectl start
Selezionando in un web browser l'URL corrispondente al nome o all'IP della nostra macchina dovrebbe comparire la pagina introduttiva di Apache recante la rassicurante frase 'It Worked!' (Ha funzionato!). Se qualcosa non ha funzionato correttamente durante la fase di inizializzazione del server, apparirà sullo schermo il corrispondente messaggio d'errore. Tali informazioni vengono anche registrate nel file error_log che, nel layout di default, è collocato nella directory PREFIX/logs.Interrompiamo, quindi, il funzionamento del server con il comando
# PREFIX/bin/apachectl stop
Ovviamente, non è assolutamente necessario utilizzare lo script apachectl per gestire l'attività del server Apache. Si può semplicemente invocare il programma httpd. Per la lista delle opzioni accettate da httpd vedere la Tabella 1.
Configurazione
di Apache
Le release di Apache precedenti la 1.3.4 utilizzavano tre file di
configurazione: httpd.conf, srm.conf, access.conf. Questa suddivisione
era una reminiscenza delle origini di Apache dalle quali ci si è finalmente
affrancati e le numerose direttive sono oggi contenute nell'unico file httpd.conf
che, per default, si trova nella directory ServerRoot/conf. In realtà,
il file di configurazione può avere un nome qualunque e occupare una posizione
qualsiasi nel filesystem, purché ne venga data comunicazione all'atto
dell'avvio del daemon httpd con l'opzione -f file-di-configurazione.
Il webmaster ha a disposizione circa 200 direttive per personalizzare in ogni
aspetto il servizio HTTP. Tale versatilità del server Apache è sicuramente uno
dei suoi punti di forza, però è anche il punto in cui l'amministratore alle
prime armi viene travolto da un senso di smarrimento, oserei dire, kafkiano. In
questa sezione discuteremo le direttive più importanti presenti nel file httpd.conf.
Accanto ad ogni direttiva viene indicato tra parentesi il valore di default o i
possibili valori assunti dalla direttiva. I percorsi relativi vengono
considerati a partire dalla directory ServerRoot.
Il daemon httpd può essere avviato in modalità standalone oppure tramite inetd. In quest'ultimo caso, si dovrà modificare opportunamente il file /etc/inetd.conf. La scelta di gestire il servizio HTTP tramite inetd comporta un certo ritardo nella risposta alle richieste di connessione perché, per ognuna di esse, deve essere avviato un processo httpd che terminerà alla fine della connessione. Un tale comportamento può essere giustificato solo da particolari motivi di sicurezza. Si deve pertanto preferire la modalità standalone. In questo caso, qualora vengano fatte delle modifiche al file di configurazione, è necessario inviare un segnale di SIGHUP al daemon httpd affinché venga reinizializzato. Si faccia attenzione alla modalità di funzionamento del server Apache: al momento dell'avvio, il processo principale genera una serie di processi figli deputati alla gestione del servizio HTTP. Il segnale di SIGHUP va quindi inviato al processo padre.
È la posizione in cui il server HTTP si inserisce nel filesystem. Può anche essere indicata all'avvio del server con l'opzione -d ServerRoot.
Viene indicata la posizione del file contenente il PID del processo principale httpd. Questa direttiva è usata solo in modalità standalone.
È la porta utilizzata dal daemon httpd quando viene avviato in modalità standalone. Se il server è stato avviato da inetd, allora sarà quest'ultimo a stare in ascolto sulla porta specificata nel file /etc/services. Di solito, per il servizio HTTP, viene utilizzata la porta 80.Se il server è stato avviato in modalità standalone, tramite la direttiva Listen si può fare in modo che httpd stia in ascolto anche su più di una porta.
Group (gruppo | #numero_gid)
Tutte le richieste che giungono al server HTTP vengono considerate come se fossero eseguite dall'utente indicato nella direttiva User. Per motivi di sicurezza è importante limitare i privilegi di questo utente. Di solito, si usa l'utente e il gruppo nobody. Si può anche usare il numero identificativo dell'utente e del gruppo purché siano preceduti dal simbolo #.
Per utilizzare queste direttive il server deve essere avviato in modalità standalone con i permessi dell'utente root.
Con questa direttiva si assegna il nome di dominio del server web. Esempio:
ServerName www.nome.it
In questo modo si afferma che il nome del computer che offre il servizio HTTP è www.nome.it, anche se il nome effettivo del computer è, per esempio, brutto.nome.it.
Il nome utilizzato (www.nome.it) deve però essere un dominio registrato in modo da poter essere risolto dal DNS. La direttiva ServerName insieme a quella Port formano il nome canonico del server HTTP. Se questa direttiva non viene utilizzata, verrà usato il nome di dominio della macchina che offre il servizio web (nell'esempio: brutto.nome.it).
È la directory contenente i documenti che verranno serviti dal server HTTP. La directory può essere indicata con un percorso relativo (e in tal caso si farà riferimento a ServerRoot/DocumentRoot) oppure assoluto. Per un difetto nel codice di mod_dir è necessario che il percorso indicato non abbia la barra obliqua finale (ad esempio: DocumentRoot /home/htdocs/ è un percorso non valido).
Con questa direttiva si consente agli utenti di avere, all'interno dell'utenza personale, una directory in cui collocare i propri documenti HTML. Se, ad esempio, il valore assegnato a UserDir è public_html, i documenti presenti nella directory /home/nome_utente/public_html saranno consultabili utilizzando l'URL https://hostname/~nome_utente. L'uso di questa direttiva può causare problemi di sicurezza perché l'utente dispettoso può, ad esempio, creare dei link simbolici a dei file che pur essendo leggibili da tutti gli utenti interni non si vogliono, probabilmente, diffondere nella comunità Internet. Apache, comunque, mette a disposizione del bravo webmaster gli strumenti necessari per evitare situazioni spiacevoli. Possono essere inserite più direttive UserDir all'interno del file di configurazione. Usando
UserDir public_html
UserDir disabled root
si consente a tutti gli utenti tranne root di avere delle pagine HTML nella propria home directory.
Se il client richiede di accedere a una directory in cui è presente uno dei file indicati in questa direttiva, allora anziché visualizzare l'elenco dei file contenuti nella directory verrà mostrato il contenuto di tale file. È possibile indicare più di un nome, eventualmente anche degli URL.
ScriptAlias 'directory-virtuale' 'directory-reale'
Tramite queste direttive si consente al server httpd di accedere a documenti collocati al di fuori di DocumentRoot. Ciò può essere utile per motivi di sicurezza o per facilitare l'accesso ad alcune directory particolari. Entrambe le direttive possono essere ripetute più volte all'interno del file di configurazione. La direttiva ScriptAlias si differenzia dalla direttiva Alias perché i documenti nella 'directory-reale' vengono trattati dal server come applicativi CGI anziché come documenti da inviare al client.
Alias /icons/ '/usr/local/httpd/icons/'
La richiesta dell'URL https://hostname/icons/ viene tradotta dal server in /usr/local/httpd/icons/.
Queste direttive sono molto importanti perché tramite esse è possibile configurare Apache in modo da ottenere le migliori prestazioni. Sono in realtà dei marcatori la cui sintassi è simile a quella dell'HTML. Il tag di apertura conterrà anche l'indicazione della directory o dei file a cui verranno applicate le direttive presenti in una lista che si conclude con il tag di chiusura.La direttiva Directory può essere efficacemente usata per migliorare le prestazioni del server.La direttiva Limit consente di dichiarare esplicitamente quali metodi del protocollo HTTP sono applicabili al contenuto di una directory.
<Directory /docs>
<LIMIT GET>
order deny, allow
deny from all
allow from .try.to.do.it
</LIMIT>
</DIRECTORY>
In questo caso solo i client appartenenti al dominio try.to.do.it possono consultare i dati contenuti nella directory /docs. Si osservi che qualora si voglia applicare un filtro sugli accessi in base al dominio di appartenenza è necessario attivare la direttiva HostnameLookups che, per default, è settata sul valore Off. Per non degradare le prestazioni del server è però preferibile impostare l'autenticazione sugli indirizzi IP anziché sul nome di dominio.
Compilazione di un modulo aggiuntivo
Come modulo da
integrare nel server Apache abbiamo scelto PHP il cui codice sorgente, in forma
di archivio compresso, può essere prelevato dal sito https://www.php.net/download-php.php3.
PHP (Professional Home Page) è un linguaggio di programmazione interpretato che
tramite l'uso di opportuni marcatori consente di inserire i propri script
all'interno delle pagine HTML. Tra i pregi di questo linguaggio abbiamo
un'elevata velocità di esecuzione, la possibilità di interfacciarsi a numerosi
database (da Oracle a Mysql, da SQL server di Microsoft a PostgreSQL, ecc.) e
non ultimo il fatto che è 'Open Source'.
PHP può essere compilato come modulo di Apache oppure come applicativo CGI. In
quest'ultimo caso si ha un degradamento delle prestazioni globali perché il
processo del server ha bisogno di creare un altro processo (l'interprete PHP,
appunto) per l'esecuzione del codice PHP, attendere che questo termini e poi
'girare' al client connesso il risultato dell'elaborazione.
Integrando, invece, l'interprete PHP all'interno del server HTTP, il file
richiesto dal client viene elaborato direttamente all'interno del server senza
effettuare chiamate di sistema, riducendo così l'utilizzo delle risorse e
ottimizzando i tempi di elaborazione. Nel nostro esempio supporremo di
compilare PHP come modulo per Apache. Installiamo, dunque, il codice sorgente
nella directory /usr/local e procediamo all'adattamento dei Makefile:
# gzip -dc php-3.0.7.tar.gz | tar -C /usr/local -xvf -
# cd /usr/local/php-3.0.7
# ./configure --with-apache=/usr/local/apache_1.3.6
L'opzione --with-apache
ci consente di indicare esplicitamente la posizione in cui si trova il codice
sorgente di Apache dove, al termine della procedura di installazione, verranno
copiati i file necessari per l'inclusione del modulo PHP all'interno del server
HTTP.
Alla fine dell'esecuzione dello script di configurazione verranno creati i Makefile
adatti al nostro setup. Procediamo, quindi con la compilazione e
l'installazione dei file necessari nella directory di Apache:
# make
# make install
# cp php3.ini-dist /usr/local/lib/php3.ini
L'ultimo comando
copia nella directory /usr/local/lib il file php3.ini che
contiene le direttive per la personalizzazione dell'interprete. Se PHP è stato
compilato come modulo di Apache, tale file verrà letto solo all'avvio del
server HTTP.
A questo punto è necessario ripetere la procedura di compilazione di Apache e
generare dei nuovi Makefile contenenti le informazioni relative al modulo PHP
che vogliamo installare. Spostiamoci, dunque, nella directory contenente il
codice sorgente di Apache ed eseguiamo lo script di configurazione:
#
cd /usr/local/apache_1.3.6
# ./configure --prefix=/usr/local/httpd
--disable-module=include
--activate-module=src/modules/php3/libphp3.a
L'opzione --disable-module
esclude dalla compilazione il modulo per l'interpretazione di documenti SSI
(Server Side Include). Questo modulo viene compilato per default. Nel
nostro caso, avendo scelto di utilizzare PHP, la presenza di mod_include
è del tutto inutile.
L'opzione --activate-module=src/modules/file viene utilizzata per
includere nella compilazione di Apache i moduli costituiti da più di un file.
Se il modulo da includere è costituito da un solo file, si utilizzerà l'opzione
--add-module=directory-del-modulo.c.
A questo punto siamo pronti per una nuova compilazione del server Apache che
avvieremo con il comando make.
Alla fine della compilazione nella directory src troveremo il file httpd
che copieremo nella directory PREFIX/bin non prima però di aver
prudentemente rinominato il file PREFIX/bin/httpd del cui corretto
funzionamento siamo sicuri.
# mv /usr/local/httpd/bin/httpd
/usr/local/httpd/bin/httpd.old
# cp /usr/local/apache_1.3.6/src/httpd /usr/local/httpd/bin/httpd
Prima di avviare il nuovo server HTTP dobbiamo modificare il file di configurazione ServerRoot/httpd.conf introducendo la direttiva:
AddType 'MIME-type' 'estensione'
mediante la quale è possibile aggiungere dei tipi MIME senza modificare il contenuto del file mime.types. Poiché abbiamo scelto di integrare nel server Apache il modulo PHP, l'uso di AddType ci torna utile per comunicare al server HTTP di interpretare i documenti aventi l'estensione php e di inviare al client solo il contenuto dell'elaborazione:
AddType application/x-httpd-php3 .php
Si può, poi, verificare la corretta installazione del modulo PHP, creando il file DocumentRoot/info.php contenente il codice:
<?
phpinfo();
?>
Selezionando, quindi, in un web browser l'URL https://localhost/info.php, dovrebbe apparire una lunga pagina informativa sullo stato del server HTTP e sul sistema operativo.
Prestazioni e
potenza di calcolo
Apache è un server web progettato per essere robusto, affidabile, versatile e,
in secondo luogo, per essere veloce. La velocità, del resto, è un requisito che
dipende da numerosi fattori, alcuni dei quali (come la banda a disposizione per
il servizio HTTP) non possono essere completamente previsti in fase di
progettazione ma che pure influiscono sulla qualità finale del servizio
offerto. Il modello 'Open Source', su cui si basa Apache, è
senz'altro la carta vincente nel campo dei server web perché consente di
attuare un feed-back continuo tra sviluppatori e utilizzatori. La
stabilità del server Apache, frutto di questa intensa collaborazione, è un dato
di fatto confermato dal crescente numero di siti che utilizzano il suo codice.
Siti con elevato traffico come Yahoo!, Geocities e, strano a
dirsi, Microsoft HotMail affidano i propri servizi al server Apache.
Un'approfondita conoscenza dei principi di funzionamento del server Apache e un
corretto quadro della situazione che si deve gestire consentono di raggiungere
prestazioni eccellenti.
Conclusioni
Al di là degli indubbi meriti, Apache non è certamente uno strumento adatto a
tutti. La configurazione e la gestione del servizio HTTP viene fatta
interamente da linea di comando e richiede una conoscenza approfondita delle
numerose direttive disponibili e familiarità con la sintassi da utilizzare. Ciò
può essere visto come un vantaggio, in quanto consente l'amministrazione dei
servizi HTTP anche da terminali non grafici, può, però, tradursi in un
dispendio di energie (e di costi) qualora l'amministratore del servizio web non
abbia la necessaria familiarità con i principi di funzionamento del server
Apache. Alcuni tool grafici per la configurazione/gestione di Apache sono,
comunque, in fase di sviluppo. Essendo un prodotto freeware,
l'assistenza offerta è legata alla disponibilità e buona volontà degli utenti
della comunità Apache. Esistono, tuttavia, numerose società che offrono assistenza
per la configurazione del server Apache ed, eventualmente, anche per la
realizzazione di nuovi moduli.
Nonostante questi lievi difetti, Apache è un ottimo server HTTP e, visto che è
gratis, vale senz'altro la pena di farci un giro.
Bibliografia
[1] https://www.apache.org
Appunti su: |
|