Come installare e configurare Apache ( Web Server ) su piattaforma Linux

Premessa

L'esempio che seguirò a spiegare fa riferimento al sistema operativo Linux distribuzione Red Hat, ma cambia poco o niente per le altre distribuzioni. Al momento che scrivo questo testo faccio riferimento alla versione di Apache 2.0.44 .

Installazione

Come prima cosa entrare nella console del sistema operativo Linux e la prima operazione da fare è disinstallare la versione installata sul vostro sistema, spesso ne è già presente una ma conviene installarne una nuova (l'ultima) così si spera che il nostro server nuovo sia più sicuro del vecchio. Nel caso della Red Hat per disinstallare un programma si usa il comando

rpm -a apache (in Debian si fa apt-get remove apache )

Disinstallato il vecchio si deve scaricare il nuovo (dal sito ufficiale Apache http://www.apache.org/) , normalmente si trova nel formato httpd-2.0.44.tar.gz e copiarlo per esempio nella cartella /usr/local/src/ cioè

cp httpd-2.0.44.tar.gz /usr/local/src/

dopo essersi spostati nella directory dove lo si è copiato, lo si deve decomprimere

tar -zxvf httpd-2.0.44.tar.gz

questo comando creerà la directory ./httpd-2.0.44 cove sono contenuti i file sorgenti di apache, ora entrare nella cartella

cd httpd-2.0.44

e partire con l'installazione vera e propria. Come buona norma consiglio di leggere i file README e INSTALL per avere un'idea di come procedere ).

Prima cosa lanciare il file per la configurazione dei file poi da compilare

./configure

dopo si deve lanciare il file per compilare i file di installazione

make

e poi si installa il programma (se non si specifica una directory per default sarà installato in /usr/local/apache2 io farò riferimento a questa tipa di installazione )

make install

Normalmente se era già presente un server web nella vostra distribuzione ci sarà il file /usr/sbin/httpd , se esiste bisognerà eliminarlo e creare un collegamento simbolico al nuovo file nella directory di apache, se non esiste bisognerà solo creare il collegamento.

Per verificare se esiste il file

ls /usr/sbin/httpd

se il risultato è una riga vuota il file non c'è se diversamente bisogna eliminarlo ( con privilegi da root )

rm /usr/sbin/httpd

per creare il collegamento

ln /usr/local/apache2/bin/httpd /usr/sbin/httpd

questo serve per poter eseguire httpd (il processo del server web ) da qualunque cartella essendo /usr/sbin/ una cartella normalmente nella variabile di sistema PATH ma queste sono sottigliezze.

Configurazione

Installato Apache ora bisogna configurarlo e sta nella bravura e conoscenza dell'installatore creare un server web robusto. Io mi limiterò alla configurazione di base in modo che funzioni.

Aprire con un editor di testi il file usr/local/apache2/conf/httpd.conf

vi /usr/local/apache2/conf/httpd.conf ( a voi la scelta )

come si nota è commentato tutto con il # si indica un commento, senza è un comando, iniziamente sono tutti commentati i comandi ora spiegherò a quali righe togliere il # (e diventa comando).

Per iniziare presuppongo che il mio computer si chiama 'MyWeb' con IP 127.0.0.1 e che i file del mio sito sono nella cartella '/MioSito/' e infine che la mia home è la pagina '/MioSito/index.html' . Da qui in avanti spiego con questo esempio. Per impostare un nome alla macchina basta editare il file /etc/hosts se non è impostato la macchina si chiama "localhost", basterà sostituire questo nome 'MyWeb', il formato delle righe è il seguente

IP NOME DOMINIO

in questo esempio

127.0.0.1 MyWeb localhost.localdomain

Aperto il file httpd.conf con un editor di testo vanno configurate le seguenti voci (togliendo il #) :

Listen 127.0.0.1:80

in questo modo il demone httpd ( il server web ) si metterà in ascolto sulla porta 80 quella di default dei server web, di solito capita che ci sono due Listen, per impostare l'ip mettete il cancelletto davanti alla seconda riga e togliettela modificando l'ip alla prima

ServerAdmin Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.

uesto parametro serve per il client che contatta il nostro server web in caso di problemi potrà contattare l'amministratore del sito scrivendo all'email indicata,

ServerName MyWeb:80

 

la nostra macchina avrà un nome su cui sarà contattato il server web quindi senza dover specificare ogni volta l'ip,

DocumentRoot "/MioSito"

questo è il programma che indica ad apache la directory dove sono le pagine web del nostro sito da attivare,

<Directory "/MioSito">

appena sotto rispecificare la directory delle nostre pagine web,

DirectoryIndex index.html

infine bisognerà indicare il file della homepage del sito.

I parametri da configurare sono nell'ordine in cui li troverete nel file.

Per avviare il server web dopo aver salvato il file sara avviare il demone httpd ( con privilegi da root ).
Per vedere se funziona aprire un browser qualunque e digitare http://MyWeb e vedrete se tutto è andato ok la vostra homepage !

Avvio del server web all'avvio della macchina su cui è installato

Per poter avviare un processo all'avvio della macchina bisogna inanzitutto conoscere che un po' come funziona il sistema V di linux per la gestione dell'avvio e uccisione dei processi che forniscono i vari servizi. Sistema a V perché esistono 5 tipi di livelli di avvio e spegnimento della macchina (in verità ne esistono di più di 5 ma questi sono i fondamentali ):

livello 0 -> Spegni macchina
livello 1 -> Avvio monoutente
livello 3 -> Avvio multiutente modalità testo
livello 5 -> Avvio multiutente modalità grafica
livello 6 -> Riavvio macchina

per ogni livello vengono fatti partire o stoppare dei processi. I processi interessati sono degli shell script e si trovano nella cartella /etc/init.d/ . Per ogni livello
esiste una directory /etc/rc0.d /etc/rc1.d /etc/rc2.d /etc/rc3.d /etc/rc4.d /etc/rc5.d /etc/rc6.d /etc/rcS.d dove il ? è il numero di livello a cui si fa riferimento ( le directory possono cambiare in base alle versioni ). In queste cartelle ci sono dei link simbolici agli script nella cartella /etc/init.d/ con questa sintassi:

[S/K]NumProcesso

Se inizia con S il processo dovrà essere avviato ( Start ) mentre se inizia con K dovrà essere uccisa ( Kill ), Num è un numero identificativo del processo e Processo il nome del file eseguibile.

Dopo questa breve e veloce spiegazione qui seguito riporto come far partire il server web con l'esempio capirete anche come funziona l'avvio di qualsiasi altro processo.

Per iniziare dobbiamo accertarci che esista il file /etc/init.d/httpd lo script che avvierà il nostro servizio di web server, normalmente c'è già e in questo caso si dovrà soltanto ( editandolo ) controllare che tutte le directory che richiama esistano altrimenti modificarle in modo opportuno ( ad esempio se si è cambiata la directory dove sono installate le librerie che httpd usa ). Se si deve crearne uno, bisogna conoscere la programmazione in shell e prendendo come riferimento il file script per l'avvio di un altro processo, convertirlo per avviare il file /usr/sbin/httpd/ e salvarlo come /etc/init.d/httpd .

Accertato che esista lo script che ho appena commentato si devono creare tutti i link simbolici in base all'avvio o arresto del sistema per automatizzare il server web. Normalmente si creano i link di avvio ( nel mio esempio suppongo che il numero del processo sia 15 , sfogliando le directory /etc/rc0.d/ /etc/rc1.d/ /etc/rc2.d/ /etc/rc3.d/ /etc/rc4.d/ /etc/rc5.d/ /etc/rc6.d/ /etc/rcS.d/ noterete che se precedentemente era stato installato un web server tutti i collegamenti esisteranno già e avranno un numero identificativo, annotate quello e cancellate questi collegamenti per creare quelli nuovi per esempio col comando rm /etc/rc?.d/K15httpd ) nel seguente modo:

ln -s /etc/init.d/httpd /etc/rc1.d/S15httpd
ln -s /etc/init.d/httpd /etc/rc3.d/S15httpd
ln -s /etc/init.d/httpd /etc/rc5.d/S15httpd

mentre in fase di spegnimento si dovrà uccidere il processo

ln -s /etc/init.d/httpd /etc/rc0.d/K15httpd
ln -s /etc/init.d/httpd /etc/rc6.d/K15httpd

i link saranno di tipo simbolico.

Conclusioni

Spero di essere stato il più chiaro possibile per qualsiasi problema contattatemi.

Link

< ! -- http://jgo.local.net/LinuxGuide/ NON ESISTE PIU ' -->

< ! -- http://www.pluto.linux.it/ildp/LDR/ldr.html NO ESISTE PIU' -->

< ! -- http://www.a2.prosa.it/a21.html NON ESISTE PIU ' -->