Archivio per ottobre 2009

Post

Apache – un primo esempio pratico

In Senza categoria on ottobre 22, 2009 di poyblog

Per non rendere troppo noiosa la lettura degli articoli relativi ad Apache ho deciso di inserire ogni tanto degli esempi pratici di utilizzo per rendere più comprensibili alcuni aspetti relativi alla configurazione del servizio.

Partiamo da un problema noto, e poi in base alle conoscenze acquisite cerchiamo una soluzione efficace.

Problema: Ho un sito web http://vendolibri.com tramite il quale voglio condividere alcuni documenti solo a utenti autenticati e quindi riconosciuti.

Il mio sito è in grado di riconoscere ed autenticare internauti, il fatto sta che tutti i miei documenti stanno all’interno della cartella http://vendolibri.com/private/ .

La scelta è obbligata, non posso inserire direttamente i testi nel database perché sarebbe troppo oneroso in termini di risorse sprecate, devo per forza depositarli su uno spazio web sottostante al dominio vendolibri.com.

Continua a leggere »

Post

Apache – Sezioni nel file di configurazione

In apache on ottobre 20, 2009 di poyblog Messo il tag: , ,

Le direttive presenti in un file di configurazione possono essere applicate a tutto il server, oppure ristrette a certe directory, file, host o URL. In questo articolo verranno descritte le sezioni , come utilizzarle al meglio per personalizzare e rendere efficae la configurazione del server Web Apache.

Continua a leggere »

Post

Apache – File di configurazione

In apache on ottobre 18, 2009 di poyblog Messo il tag: , ,

La configurazione del server web apache viene descritta da delle direttive inserite nei file di configurazione. Il file di configurazione principale è httpd.conf; ulteriori file di configurazione possono essere aggiunti utilizzando la direttiva Include.

Per esempio nelle installazioni di default di ubuntu il file httpd.conf è vuoto, mentre partecipano alla configurazione del server web i file:

  • apache2.conf

  • ports.conf

  • tutti i file all’interno di sites-enabled (Virtual host abilitati)

Per testare la corretta sintassi di tutti i file di configurazione che partecipano alla personalizzazione del servizio apache è sufficiente utilizzare il comando apache2ctl configtest.

Apache è un server modulare, questo significa che pochi moduli sono abilitati nel core del programma, è possibile però caricarli con la direttiva LoadModule, ed in particolare possono essere create direttive condizionali in base alla presenza di determinati moduli (<IfModule>)

Per verificare quali moduli sono abilitati con la versione in esecuzione è sufficiente il comando apache2 -l

Tutte le direttive che vengono associate al file di configurazione generale avranno effetto sul comportamento del server globale, è però possibile vincolare dei comportamenti solo a determinate directory, file o locazioni grazie alle voci:

  • <Directory>

  • <DirectoryMatch>

  • <Files>

  • <FilesMatch>

  • <Location>

  • <LocationMatch>

In più il nostro Server Web è in grado di servire più siti web in modo contemporaneo grazie all’utilizzo della direttiva <VirtualHost>, all’interno della quale si possono specificare i comportamenti particolari di ogni sito.

L’ultimo argomento riguardante il file di configurazione di apache è il file .htaccess; questo solitamente viene identificato dalla presenza in una determinata posizione del sito di un file .htaccess. La presenza di tale file permette ad apache di decentralizzare la gestione dei file di configurazione, lasciando che le direttive presenti in tale file si applichino a tutti i file e le sottodirectory della locazione corrente del file in questione.

Il file può assumere un nome diverso rispetto ad htaccess, l’importante che venga identificato dalla direttiva AccessFileName, in più esiste una seconda direttiva AllowOverride che permette all’amministratore del server web di controllare quali direttive sono lecite all’interno del file .htaccess

Post

Apache – Binding

In apache on ottobre 16, 2009 di poyblog Messo il tag: , ,

Apache può essere configurato per esaminare richieste provenienti da determinate porte e da determinate interfacce di rete.

Di default apache si poggia su tutte le interfacce di rete sulla porta 80, grazie alla direttiva Listen però è possibile specificare una singola porta, o più d’una:

Listen 80

Listen 8080

In questo caso apache risponderà a tutte le richieste provenienti da tutte le interfacce di rete sia sulla porta 80 che sulla porta 8000.

E’ possibile vincolare porte diverse su interfacce diverse:

Listen 192.168.1.30:80

Listen 192.168.1.32:8080

Queste caratteristiche possono poi essere gestite in modo ottimale direttamente dai VirtualHost, permettendo per esempio ad uno di essi di rispondere su uno specifico indirizzo e porta.

Un VirtualHost può solo utilizzare una delle interfacce o porte associate al file di configurazione generale, non è possibile creare un virtual host che si ponga in ascolto su un indirizzo o una porta non contemplati dal file di configurazione generale.

Durante l’installazione standard di apache su Ubuntu, il servizio viene messo in ascolto sulle porte 80 e 443 (https), in particolare quest’ultima viene resa disponibile solo se esiste ed è abilitato il modulo mod_ssl. Per maggiori dettagli vedere il file ports.conf presente nella root di configurazione di apache2.

Una ottimo esempio di binding è presente su uno dei nostri server. In questo caso apache ascolta su tre interfacce:

  • lo

  • eth0

  • eth1

E su due porte:

  • 80

  • 443

Alcuni virtual host sono configurati per ascoltare su tutte le interfacce ma solo sulla porta 80:

  • <VirtualHost *:80>,

altri su una solo interfaccia sulla porta 80

  • <VitualHost 192.168.1.45:80>

altri su tutte le interfacce ma verso la porta 443

  • <VirtualHost *:443>

Post

Avviare, Riavviare e arrestare Apache

In apache on ottobre 14, 2009 di poyblog Messo il tag: ,

Httpd è un demone che viene eseguito in background per gestire le richieste. Di seguito esamineremo alcuni comandi utili per avviare questo demone, riavviarlo e terminarne l’esecuzione.

Se il servizio è associato ad una porta inferiore alla 1024 (specifica Listen), solo l’utente root può avviare il servizio apache. Una volta avviato il servizio httpd, dopo aver effettuato alcune operazioni preliminari, come per sempio generare i file di log e popolarli, egli lancia svariati processi figli, in grado di intercettare le richieste provenienti dai client e formire delle risposte.

Il processo padre gira con i permessi di root, ma i processi figli no, essi di norma vengono associati all’utente apache (di default www-data su sistemi debian)

Il modo migliore di invocare l’avvio di apache è utilizzando lo script apache2ctl start. Di norma comunque in tutti i sistemi citati nel capitolo precedente, una volta installato il server web, configurano il sistema perché apache parta all’avvio.

Quando ci sono problemi all’avvio di apache, solitamente si tratta di due errori particolari:

  • Si sta cercando di avviare il demone quando è già in esecuzione

  • Si sta cercando di avviare il servizio con un utente con privilegi insufficienti.

Per arrestare o riavviare il demone sono possibili 4 alternative:

  • apache2ctl stop → con questo comando (segnale TERM) si avvisa il processo padre killare tutti i processi figli. Una volta uccisi tutti i processi figli in esecuzione, viene terminata anche l’esecuzione del padre stesso e alcuna richiesta viene più servita.

  • apache2ctrl graceful-stop → in questo caso quando il segnale WINCH, avvisa il processo padre di chiudere tutti i processi figli immediatamente nel caso in cui non stiano servendo alcuna richiesta o di attendere la fine di questa prima di spegnersi Il processo padre una volta ricevuti il segnale WINCH, non accetta più richieste in ingresso, ed una volta terminata l’esecuzione dell’ultimo figlio, anche il processo padre termina.

  • apache2ctl restart → invoca il segnale HUP, cioè killa tutti i processi figli (segnale TERM), lascia in esecuzione il processo padre, che rilegge il file di configurazione e rigenera tutti i processi figli

  • apache2ctl graceful → viene passato il segnale USR1 al processo httpd padre, che avvisa i propri figli di chiudersi dopo che la richiesta corrente è terminata. Fatto ciò viene riletto il file di configurazione dal processo padre, che non è stato chiuso, e vengono rigenerati tutti i nuovi processi figli.

Post

Apache – Installazione

In apache on ottobre 12, 2009 di poyblog Messo il tag: ,

L’installazione di apache è ormai molto semplice, molte distribuzioni permettono di installare apache e i moduli che lo arricchiscono con pochi comandi:

  • Ubuntu, Debian → apt-get install apache2

  • Fedora → yum install httpd

Nel caso in cui scegliessimo di scaricare i sorgenti e compilarli, ecco le informazioni principali:

  • Pagina di riferimento per il download: http://httpd.apache.org/download.cgi

  • Decompressione del file tgz scaricato: tar -zxvf httpd-NN.tar.gz

  • configure – Il parametro configure può assumere diversi parametri che variano sensibilmente la struttura del nuovo servizio da installare. Per esempio l’opzione –prefix server ad indicare dove vogliamo alloggiare il nostro server web, oppure la voce –enable-module seguito dal modulo che vogliamo includere nella installazione di apache

  • make

  • make install

Post

Apache – Introduzione

In apache on ottobre 9, 2009 di poyblog Messo il tag:

Da oggi, dopo una linga pausa comincerò a pubblicare una serie di articoli, relativi ai dettagli e gli accorgimenti di maggior interesse riguardanti il server web più popolare la mondo, Apache appunto.

In particolare mi concentrerò sull’ultima versione rilasciata ovvero la versione 2.2. A sostegno di questa scelta sui nostri server le versioni di apache sono speculari e sono la versione 2.2.8

Raccogliere dati ed informazioni su Apache non è difficile, complicato è filtrare le informazioni e pescare quelle che possono essere di una certa utilità, sia a livello generale che a livello personale.

Iscriviti

Get every new post delivered to your Inbox.