Appunti Aapache2 mod_ssl Virtual Host e htaccess

Visto che a lavoro mi son trovato a dover scrivere 2 appunti su come ho configurato un server Apache, ho deciso di riportarlo anche sul mio blog, magari fa comodo a qualcuno :)

Apache2 + mod_ssl + htaccess + virtual hosts

Per aggiungere un nuovo virtual host basta fare i seguenti passi:
1 – Creare un file in /etc/apache2/site-available
2 – Popolarlo con la configurazione corretta sia sulla porta 80 che sulla 443 se necessario SSL
3 – Abilitarlo tramite il comando a2ensite [file di configurazione]
4 – Fare il reload di Apache2:

/etc/init.d/apache2 reload

Se non ci sono errori, il nuovo virtual host e` attivo.

Le configurazioni di Apache si trovano nella directory /etc/apache2, i virtual host creati risiedono in /etc/apache2/site-available e sono stati abilitati tramite in comando a2ensite

a2ensite wiki.trii.it

Di conseguenza sono attivi in /etc/apache2/site-enabled

Utilizziamo un sistema di accessi tramite htaccess che risiede in /var/www/wiki.trii.it/.htaccess, mentre il file dell pwd sta in /var/www/.htpasswd
Per aggiungere un utente basta utilizzare htpasswd nel seguente modo:

htpasswd /var/www/.htpasswd nuovoutente

Verra` chiesta due volte la password ed il gioco e` fatto.

La configurazione e` di tipo SSL, di seguito riportata

#Questo primo blocco server per fare redirect da http ad https nel caso in cui si tenti di accedere al wiki via http

<VirtualHost *:80>
ServerName wiki.trii.it
RedirectMatch (.*)$ https://wiki.trii.it$1
RedirectMatch /.* https://wiki.trii.it

</VirtualHost>

#Questo e` il blocco principale della configurazione, ho lasciato il blocco dei cgi-bin anche se in realta` non li usiamo.
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /etc/apache2/apache.pem
ServerAdmin alessio.rocchi@trii.it
ServerName wiki.trii.it
ServerAlias wiki

DocumentRoot /var/www/wiki.trii.it

Options FollowSymLinks
AllowOverride AuthConfig
Order allow,deny
allow from all

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all

ErrorLog /var/log/apache2/error.log

# Possible values include: debug, info, notice, warn, error, crit,

# alert, emerg.
LogLevel warn

CustomLog /var/log/apache2/access.log combined

</VirtualHost>