Free Penguin guide - Apache

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, rendolo 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.
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" è 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 www. DocumentRoot "/var/www" 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
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.freepenguin.it e vhost2.freepenguin.it Adesso creiamo le directory che ospiteranno i due virtual hosts: # mkdir -p /var/www/vhosts/vhost1.freepenguin.it
# mkdir -p /var/www/vhosts/vhost2.freepenguin.it Creiamo due pagine index di test: # echo "virtual host vhost1.freepenguin.it" > /var/www/vhosts/vhost1.freepenguin.it/index.php
# echo "virtual host vhost2.freepenguin.it" > /var/www/vhosts/vhost2.freepenguin.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.freepenguin.it
DocumentRoot /var/www/vhosts/vhost1.freepenguin.it
ServerName vhost1.freepenguin.it
ErrorLog logs/vhost1.freepenguin.it-error_log
CustomLog logs/vhost2.freepenguin.it-access_log common
< /VirtualHost> < VirtualHost *:80>
ServerAdmin webmaster@vhost2.freepenguin.it
DocumentRoot /var/www/vhosts/vhost2.freepenguin.it
ServerName vhost2.freepenguin.it
ErrorLog logs/vhost2.freepenguin.it-error_log
CustomLog logs/vhost2.freepenguin.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.freepenguin.it 127.0.0.1 vhost2.freepenguin.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.freepenguin.it Aggiungere le seguenti direttive sul file httpd.conf: NameVirtualHost *:443 < VirtualHost *:443>
ServerAdmin webmaster@www.freepenguin.it
DocumentRoot /var/www/vhosts/vhost1.freepenguin.it
ServerName vhost1.freepenguin.it
ErrorLog logs/vhost1.freepenguin.it-error_log
CustomLog logs/vhost2.freepenguin.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 freepenguin.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 freepenguin.it" nega l'accesso alle pagine web a qualsiasi host del dominio freepenguin.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
Vi consiglio inoltre di dare uno sguardo al PDF:
"Configurare Apache-Php-MySQL".