Apache 
Introduzione Apache è il web server più diffuso al mondo e il più utilizzato dai Services Provider. Spesso la scelta di integrare PHP e MySql con Apache è ormai un classico grazie all'implementazione di alcuni moduli che permettono
ad Apache di interpretare non solo linguaggi di programmazione come PHP, ma ben altri ancora, rendendolo un web server modulare e scalabile. Il file di configurazione principale di Apache prende il nome di httpd.conf, mentre il nome del servizio o daemon è httpd. Quasi in tutte le distribuzioni linux, la locazione del file di
configurazione si trova sotto /etc/httpd/conf/httpd.conf. In questa guida scopriremo come configurare apache in maniera base, cercando di spiegare il principio di funzionamento ed alcune delle tantissime opzioni avanzate che si possono attivare.
Installazione di Apache. Installazione su RedHat/Fedora.
Prima di tutto occorre installare il pacchetto RPM denominato httpd-version.rpm.
Se disponete di una connessione internet veloce potete installarlo via YUM col comando
# yum -y install httpd
oppure da cdrom
# rpm -ivh /percorso_cdrom/Fedora/RPMS/httpd-version.rpm
File di configurazione. Abbiamo detto che il principale file di configurazione è "/etc/httpd/conf/httpd.conf".
All'interno di tale file di configurazione troviamo alcune direttive che
consento di configurare il web server secondo le nostre esigenze.
Osserviamo adesso le direttive più importanti all'interno del file "httpd.conf". Tale seguente direttiva configura la porta tcp di ascolto; di default è la 80
Listen 80
Questa direttiva viene utilizzata dal web server per identificare se stesso, è molto
importante non trascurare questo parametro per il buon funzionamento
del servizio. Se modificate l'hostname della macchina, sostituite anche
il nome 'localhost' della suddetta direttiva con l'hostname della
macchina.
ServerName localhost:80 "/var/www/html" è la directory di default ove risiedono i file o
contenuti multimediali che desideriamo pubblicare, ossia il sito web.
Quindi copiate i vostri file html all'interno della dir html.
DocumentRoot "/var/www/html" La prossima direttiva, permette di configurare alcune opzioni e
parametri sulle rispettive directory del web server che analizzeremo
più avanti. Se modificate il path sulla "DocumentRoot", modificatelo
anche sulla direttiva "Directory".<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
La seguente direttiva istruisce Apache per caricare in automatico le pagine
denominate index.php e index.htm senza dover digitare
http://vostroserver.net/index.htm, ma soltanto http://vostroserver.net
DirectoryIndex index.php index.htm
Avvio di Apache
# /etc/init.d/httpd start Arresto di Apache
# /etc/init.d/httpd stop
Disabilitare la pagina welcome di Apache.
Di default, quando installiamo Apache e col browser ci colleghiamo al
nuovo web server, ci viene presentata una pagina web per testare la
funzionalità di Apache. Se visualizzate questa pagina significa che il
server funziona correttamente.
Tale pagina di welcome viene carica soltanto se non è presente alcun
file index.php all'interno della directory /var/www/html o l'eventuale
directory da voi configurata.
Per
disabilitare la pagina di welcome bisogna commentare tutte le line
all'interno del file /etc/httpd/conf.d/welcome.conf nel seguente modo:
#<LocationMatch "^/+$"> # Options -Indexes # ErrorDocument 403 /error/noindex.php #</LocationMatch>
Nascondere la lista dei file e directory sul Web Server
Di default il web server permette la visualizzazione dei file e
directory quando non è presente alcun file index.php.
L'opzione che controlla tale funzionalità si chiama 'Indexes' e si
trova all'interno della direttiva 'Directory':
<Directory /var/www/html> Options Indexes FollowSymLinks
</Directory>
Per disabilitare la visualizzazione dei file, commentante l'opzione come segue:
<Directory /var/www/html> # Options Indexes FollowSymLinks </Directory>
L'opzione 'FollowSymLinks' permette l'utilizzo dei link simbolici per le pagine web.
Attivare il modulo SSL per Apache.
Per l'attivazione del modulo SSL, occorre installare il pacchetto RPM 'mod_ssl' e riavviare il servizio httpd.
Virtual Hosts
Il Virtual Hosts è una funzione di Apache ingrado di gestire multipli
siti web, sullo stesso server, utilizzando un singolo indirizzo IP.
Supponiamo di voler configurare sul medesimo web server due siti internet vhost1.linuxguide.it e vhost2.linuxguide.it
Adesso creiamo le directory che ospiteranno i due virtual hosts:
# mkdir -p /var/www/vhosts/vhost1.linuxguide.it
# mkdir -p /var/www/vhosts/vhost2.linuxguide.it
Creiamo due pagine index di test:
# echo "virtual host vhost1.linuxguide.it" > /var/www/vhosts/vhost1.linuxguide.it/index.php
# echo "virtual host vhost2.linuxguide.it" > /var/www/vhosts/vhost2.linuxguide.it/index.php
Assegnamo i permessi di lettura ed esecuzione ai virtual hosts:
# chmod 755 -R /var/www/vhosts
Adesso, editiamo il file di configurazione di Apache /etc/httpd/conf/httpd.conf ed inseriamo
la seguente configurazione alla fine del file:
NameVirtualHost *:80
<VirtualHost *:80> ServerAdmin webmaster@www.linuxguide.it DocumentRoot /var/www/vhosts/vhost1.linuxguide.it ServerName vhost1.linuxguide.it ErrorLog logs/vhost1.linuxguide.it-error_log CustomLog logs/vhost2.linuxguide.it-access_log common </VirtualHost>
<VirtualHost *:80> ServerAdmin webmaster@vhost2.linuxguide.it DocumentRoot /var/www/vhosts/vhost2.linuxguide.it ServerName vhost2.linuxguide.it ErrorLog logs/vhost2.linuxguide.it-error_log CustomLog logs/vhost2.linuxguide.it-access_log common </VirtualHost>
Infine, affinchè il virtual hosts funzioni, bisogna aggiungere al file /etc/hosts le seguenti entry:
127.0.0.1 vhost1.linuxguide.it
127.0.0.1 vhost2.linuxguide.it
A questo punto, riavviate il servizio httpd con il comando:
# service httpd restart
dallo stesso web server, avviate il browser per testare i nuovi virtual hosts.
Una
volta capito il funzionamento dei virtual hosts, potete adattare le
configurazioni di esempio secondo le vostre esigenze ed implementarle
in contesti aziendali(intranet) o pubblici(internet).
Affinchè il virtual hosts funzioni in un contesto aziendale o pubblico, occorre
inserire sul server DNS di zona, i relativi records per la risoluzione
dei virtual hosts.
Quindi bisogna associare all'indirizzo IP del server, tutti i virtual hosts che abbiamo configurato su Apache.
Configurare il virtual hosts per il supporto SSL
Supponiamo di attivare il supporto SSL per il virtual hosts vhost1.linuxguide.it
Aggiungere le seguenti direttive sul file httpd.conf:
NameVirtualHost *:443
<VirtualHost *:443> ServerAdmin webmaster@www.linuxguide.it DocumentRoot /var/www/vhosts/vhost1.linuxguide.it ServerName vhost1.linuxguide.it ErrorLog logs/vhost1.linuxguide.it-error_log CustomLog logs/vhost2.linuxguide.it-access_log common </VirtualHost>
Filtraggio accessi basato su IP address/hostname.
Apache, permette anche di filtrare le richieste di pagine web provenienti da determinati client o domini.
Ipotizziamo applicare la seguente configurazione alla directory /var/www/html:
<Directory /var/www/html>
Order deny,allow
Deny from linuxguide.it
Deny from 172.16.10.0/255.255.255.0
Allow from 192.168.1.0/255.255.255.0
Deny from 192.168.100.1
Allow from 192.168.100.2
</Directory>
La
direttiva 'Order' specifica l'ordine con cui il server deve filtrare
gli accessi, nell'esempio, prima applica le regole deny e poi quelle
allow. La direttiva "Deny from linuxguide.it" nega l'accesso alle
pagine web a qualsiasi host del dominio linuxguide.it
La direttiva "Deny from 172.16.10.0/255.255.255.0" nega l'accesso alle
pagine web a qualsiasi host appartenente alla rete 172.16.10.0 con
subnetmask 255.255.255.0; è anche possibile utilizzare il prefisso CIDR
come 172.16.10.0/24
La direttiva "Allow from 192.168.1.0/255.255.255.0" permette l'accesso
soltanto ai client della rete 192.168.1.0 con netmask 255.255.255.0
La direttiva "Deny from 192.168.100.1" nega l'accesso al client 192.168.100.1
La direttiva "Allow from 192.168.100.1" permette l'accesso al client 192.168.100.1
La stessa configurazione può anche essere inserita sui Virtual Hosts.
Filtraggio accessi basato su Autenticazione Utenti.
E' possibile limitare l'accesso alle pagine web, utilizzando alcuni
schemi di autenticazione che convalidano attraverso username e password
gli utenti che desiderano accedere a determinate pagine web.
Supponiamo
di applicare una schema di autenticazione "Basic" alla directory
/var/ww/html/private dove può accedere soltanto l'utente admin.
Create la directory private:
# mkdir -p /var/www/html/private
Editate il file httpd.conf ed aggiungete la seguente configurazione alla fine della sezione Directory.
<Directory "/var/www/html/private"> AuthType Basic AuthName "Area Privata" AuthUserFile /etc/httpd/htpass Require user admin </Directory> Riavviate il servizio httpd con il comando:
# service httpd restart
Adesso dobbiamo creare l'utente admin ed assegnargli una password col comando seguente:
# htpasswd -c /etc/httpd/htpass admin
(l'opzione '-c' crea un nuovo file) Adesso
provate a collegarvi a http://tuo_web_server/private - il sistema vi
presenterà una box di autenticazione con username e password.
La stessa configurazione può anche essere inserita sui Virtual Hosts.
Troubleshooting
Tutti i logs di Apache si trovano sotto /var/log/httpd. Vengono
generati due tipi di logs, il primo, denominato access_log, colleziona
le richieste e gli accessi effettuati dai clients sulle relative pagine
del del server.
Il secondo, prende il nome di error_log, su quest'ultimo vengono
collezionate informazioni sulle operazioni di avvio e shutdown del
servizio, errori e warning.
Verifica sintassi del file di configurazione httpd.conf
# httpd -t
Quando avviamo il servizio httpd e riceviamo il seguente messaggio sul terminale: "httpd: Could not determine the server's fully qualified domain name, using 127.0.0.1 for ServerName"
significa che Apache non riesce a risolvere il FQDN del ServerName
ovvero l'hostname specificato sulla direttiva ServerName di httpd.conf
è errata. Verificate dunque che la direttiva ServerName di httpd.conf
contenga lo stesso hostname della macchina e che nel file /etc/hosts vi
sia specificata l'entry per la risoluzione locale dell'hostname
nell'indirizzo di loopback 127.0.0.1
|