Appunti sparsi su Apache e Apache2
Configurazione minimale di apache2 su Debian Lenny e Squeeze
Configurazione minimale di Apache 2 per servire http e https con php5:
Creare un file conf.d/00local.conf con dentro le configurazioni personalizzate valide per tutti i siti. Cosi` facendo si puo` evitare di adare a pistolare il file apache2.conf
# Qui ci sono le config locali (cioe` quelle fatte da me) # che sono generali per tutti i siti e quindi non voglio dover # ripetere tutte le volte dentro ai vari files in sites-available ServerAdmin <la vostra email preferita> DocumentRoot /var/www/ ### permessi su tutto il disco <Directory /> Options FollowSymLinks AllowOverride None </Directory> ### permessi su /var/www <Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride All ### Impostare a "None" se NON serve usare i .htaccess Order allow,deny allow from all </Directory> ### configurazione di cgi-bin ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> # logging # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel notice CustomLog ${APACHE_LOG_DIR}/access.log combined ### accesso alla documentazione di Debian Alias /doc/ "/usr/share/doc/" <Directory "/usr/share/doc/"> Options Indexes MultiViews FollowSymLinks AllowOverride None Order deny,allow Deny from all Allow from 127.0.0.0/255.0.0.0 ::1/128 10.1.42.0/24 10.1.43.0/24 </Directory>
Aggiungere dentro a sites-available un file con un nome sensato (il nome del server?) contenente le impostazioni per lo specifico virtuale. Ha senso metterne uno per ogni virtuale, ovviamente. Qui di seguito ne riporto uno per il virtuale "principale", cioe` quello che viene usato se non matcha nessun named virtual specifico. La sezione non-ssl non contiene nulla, ma funziona benissimo grazie al fatto che tutte le impostazioni di default sono state definite prima. Quella SSL contiene solo l'attivazione dell'engine SSL, e anche essa eredita le configurazioni generali definite prima.
<VirtualHost *:80> </VirtualHost> <VirtualHost *:443> # Configurazione SSL SSLEngine on SSLCertificateFile /etc/apache2/ssl/mater.kurgan.org.crt SSLCertificateKeyFile /etc/apache2/ssl/mater.kurgan.org.key </VirtualHost>
Questo e` un esempio di un named virtual che non e` il principale, senza SSL perche` i named con l' SSL non si possono fare, vanno necessariamente IP diversi.<VirtualHost *:80> ServerName www.kurgan.org ServerAlias www.kurgan.it DocumentRoot /var/www/www-kurgan CustomLog /var/log/apache2/access-www.kurgan.org.log combined </VirtualHost>
Editare i link dentro a sites-enabled collegando le configurazioni in ordine di apparizione. Rimuovere il link a sites-available/default che ora non serve piu`.
Se si vuole usare ssl, occorre linkare i files giusti (ssl.conf e ssl.load) da mods-available a mods-enabled
Redirect da un sito a un altro
Per, per esempio, forzare un redirect da un sito http all'equivalente https, posso usare il comando "redirect" dentro alla configurazione. Posso usarlo anche per fare altri redirect non necessariamente fra http e https. Notare che devo indicare l' url di partenza (/) e quello di arrivo.
Esempio:
<VirtualHost *:80> ServerName www.pippo.it ServerAdmin email@pippo.it redirect permanent / https://www.pippo.it/ </VirtualHost> <VirtualHost *:443> SSLEngine on SSLCertificateFile /etc/apache2/ssl/pippo.crt SSLCertificateKeyFile /etc/apache2/ssl/pippo.key Eccetera eccetera </VirtualHost>
Gestione del charset
Se le pagine del sito contengono caratteri non-standard che non sono codificati correttamente in HTML (tipo le lettere accentate), e queste nel browser vengono male, occorre definire il charset standard. Per farlo, editare /etc/apache2/conf.d/charset e modificarlo in modo che contenga AddDefaultCharset ISO-8859-1.
Creazione di un certificato SSL self-signed per Apache2
openssl req -new -x509 -days 3650 -nodes -out server.crt -keyout server.key chmod 400 server.key
I due files server.crt e server.key vanno definiti nella config di apache.
Configurazione di apache 1.3 con mod_ssl
Dopo aver installato apache 1.3 e mod_ssl, per avere il supporto per http e https occorre come minimo una configurazione con due virtualhosts, cosi`:
Listen 80 Listen 443 NameVirtualHost *:80 NameVirtualHost *:443 <VirtualHost *:80> </VirtualHost> <VirtualHost *:443> # Configurazione SSL SSLEngine on SSLCertificateFile /etc/apache/ssl/server.crt SSLCertificateKeyFile /etc/apache/ssl/server.key </VirtualHost>
Questa ovviamente e` superminimale, ma funziona se si ha di fatto un solo host (niente virtuali davvero) che vuole fare sia http che https.