Differences between revisions 16 and 17
Revision 16 as of 2017-03-23 16:36:16
Size: 5622
Editor: Kurgan
Comment:
Revision 17 as of 2017-08-09 18:59:51
Size: 5472
Editor: Kurgan
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
== Appunti sparsi su Apache e Apache2 == = Appunti sparsi su Apache e Apache 2 =
Line 3: Line 3:
==== 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
== Configurazione minimale di Apache 2 su Devuan Jessie e Debian 8 ==
Line 14: Line 6:
ServerAdmin <la vostra email preferita>
DocumentRoot /var/www/
Di default Apache 2 si avvia senza supporto https e senza named virtual.
Line 17: Line 8:
### permessi su tutto il disco
<Directory />
          Options FollowSymLinks
          AllowOverride None
</Directory>
Io preferisco usare sempre dei named virtual, quindi imposto un default che non porti a nulla (una directory con un index.html senza niente) e poi tanti named virtual quanti ne servono.
Line 23: Line 10:
### 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
Attenzione: se imposti un named virtual che ha lo stesso nome del FQDN del server (che so, mail.example.com) questo named virtual non funzionera`. I named virtual devono SEMPRE avere un nome diverso dal FQDN del server.
Line 48: Line 13:
### 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>
}}}
=== Configurazione minimale di Apache 2 per servire http e https: ===
Line 59: Line 15:
 * 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. Se vogliamo anche https, occorre abilitare il modulo con il comando {{{a2enmod ssl}}} e creare i certificati. Se non abilitiamo il modulo ssl le configurazioni di ssl verranno ignorate.

 * Creare un file {{{sites-available/default.conf}}} con dentro le configurazioni per il sito di default:
Line 62: Line 20:
        ServerAdmin postmaster@example.com
        DocumentRoot /var/www/default
Line 64: Line 24:
<VirtualHost *:443>
        # Configurazione SSL

<IfModule mod_ssl.c>
   <VirtualHost *:443>
Line 67: Line 28:
        SSLCertificateFile /etc/apache2/ssl/mater.kurgan.org.crt
        SSLCertificateKeyFile /etc/apache2/ssl/mater.kurgan.org.key
</VirtualHost>
        SSLCertificateFile /etc/letsencrypt/example.cert
        SSLCertificateKeyFile /etc/letsencrypt/example.key
        ServerAdmin postmaster@example.com
        DocumentRoot /var/www/default
   </VirtualHost>
</IfModule>
Line 71: Line 35:
 * Abilitare questa configurazione e disabilitare il default "originale" che e` il file {{{000-default.conf}}}, creando i link dentro a {{{sites-enabled}}} o usando i comandi {{{a2ensite}}} e {{{a2dissite}}}
 * Creare la directory {{{/var/www/default}}} (o quella che vogliamo usare) e magari metterci dentro un index.html con qualche avviso che dice che questo non e` il server che state cercando.
 * Ricaricare Apache per vedere il risultato
Line 72: Line 39:
 Questo e` un esempio di un named virtual che non e` il principale, senza SSL.
=== A questo punto possiamo creare un named virtual che non sia il default, se ci serve ===


* Creare un file {{{sites-available/default.conf}}} con dentro le configurazioni per nostro named virtual, poniamo che sia "webmail.example.com":
Line 75: Line 46:
        ServerName www.kurgan.org
        ServerAlias www.kurgan.it
        DocumentRoot /var/www/www-kurgan
        CustomLog /var/log/apache2/access-www.kurgan.org.log combined
        ServerAdmin postmaster@example.com
        ServerName webmail.example.com
        ErrorLog ${APACHE_LOG_DIR}/webmail-error.log
        CustomLog ${APACHE_LOG_DIR}/webmail-access.log combined
        DocumentRoot /var/www/webmail
Line 80: Line 52:
}}}

 * 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}}}
Line 86: Line 54:
==== Redirect da un sito a un altro ==== <IfModule mod_ssl.c>
   <VirtualHost *:443>
        SSLEngine on
        SSLCertificateFile /etc/letsencrypt/webmail-example.cert
        SSLCertificateKeyFile /etc/letsencrypt/webmail-example.key
        ServerAdmin postmaster@example.com
        ServerName webmail.example.com
        ErrorLog ${APACHE_LOG_DIR}/webmail-error.log
        CustomLog ${APACHE_LOG_DIR}/webmail-access.log combined
        DocumentRoot /var/www/webmail
   </VirtualHost>
</IfModule>
}}}
 * Abilitare questa configurazione creando il link dentro a {{{sites-enabled}}} o usando il comandio {{{a2ensite}}}
 * Creare la directory {{{/var/www/webmail}}} e metterci dentro cio` che serve.
 * Ricaricare Apache per vedere il risultato
Line 88: Line 71:
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. Per evitare problemi con il rinnovo dei certificati di Let's Encrypt e` opportuno usare un redirect che NON ridiriga le richieste dei files sotto {{{/.well-known/acme-challenge/}}}.
=== 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" o il comando "redirectmatch" 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. Per evitare problemi con il rinnovo dei certificati di Let's Encrypt e` opportuno usare un redirect che NON ridiriga le richieste dei files sotto {{{/.well-known/acme-challenge/}}}.
Line 114: Line 100:
==== Gestione del charset ==== == Gestione del charset ==
Line 119: Line 105:
==== Creazione di un certificato SSL self-signed per Apache2 ==== == Creazione di un certificato SSL self-signed per Apache2 ==
Line 129: Line 115:
==== Configurazione di apache 1.3 con mod_ssl ==== == Configurazione di apache 1.3 con mod_ssl ==

Appunti sparsi su Apache e Apache 2

Configurazione minimale di Apache 2 su Devuan Jessie e Debian 8

Di default Apache 2 si avvia senza supporto https e senza named virtual.

Io preferisco usare sempre dei named virtual, quindi imposto un default che non porti a nulla (una directory con un index.html senza niente) e poi tanti named virtual quanti ne servono.

Attenzione: se imposti un named virtual che ha lo stesso nome del FQDN del server (che so, mail.example.com) questo named virtual non funzionera`. I named virtual devono SEMPRE avere un nome diverso dal FQDN del server.

Configurazione minimale di Apache 2 per servire http e https:

Se vogliamo anche https, occorre abilitare il modulo con il comando a2enmod ssl e creare i certificati. Se non abilitiamo il modulo ssl le configurazioni di ssl verranno ignorate.

  • Creare un file sites-available/default.conf con dentro le configurazioni per il sito di default:

    <VirtualHost *:80>
            ServerAdmin postmaster@example.com
            DocumentRoot /var/www/default
    </VirtualHost>
    
    
    <IfModule mod_ssl.c>
       <VirtualHost *:443>
            SSLEngine on
            SSLCertificateFile /etc/letsencrypt/example.cert
            SSLCertificateKeyFile /etc/letsencrypt/example.key
            ServerAdmin postmaster@example.com
            DocumentRoot /var/www/default
       </VirtualHost>
    </IfModule>
  • Abilitare questa configurazione e disabilitare il default "originale" che e` il file 000-default.conf, creando i link dentro a sites-enabled o usando i comandi a2ensite e a2dissite

  • Creare la directory /var/www/default (o quella che vogliamo usare) e magari metterci dentro un index.html con qualche avviso che dice che questo non e` il server che state cercando.

  • Ricaricare Apache per vedere il risultato

A questo punto possiamo creare un named virtual che non sia il default, se ci serve

* Creare un file sites-available/default.conf con dentro le configurazioni per nostro named virtual, poniamo che sia "webmail.example.com":

  • <VirtualHost *:80>
            ServerAdmin postmaster@example.com   
            ServerName webmail.example.com
            ErrorLog ${APACHE_LOG_DIR}/webmail-error.log
            CustomLog ${APACHE_LOG_DIR}/webmail-access.log combined
            DocumentRoot /var/www/webmail
    </VirtualHost>
    
    
    <IfModule mod_ssl.c>
       <VirtualHost *:443>
            SSLEngine on
            SSLCertificateFile /etc/letsencrypt/webmail-example.cert
            SSLCertificateKeyFile /etc/letsencrypt/webmail-example.key
            ServerAdmin postmaster@example.com
            ServerName webmail.example.com
            ErrorLog ${APACHE_LOG_DIR}/webmail-error.log
            CustomLog ${APACHE_LOG_DIR}/webmail-access.log combined
            DocumentRoot /var/www/webmail
       </VirtualHost>
    </IfModule>
  • Abilitare questa configurazione creando il link dentro a sites-enabled o usando il comandio a2ensite

  • Creare la directory /var/www/webmail e metterci dentro cio` che serve.

  • Ricaricare Apache per vedere il risultato

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" o il comando "redirectmatch" 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. Per evitare problemi con il rinnovo dei certificati di Let's Encrypt e` opportuno usare un redirect che NON ridiriga le richieste dei files sotto /.well-known/acme-challenge/.

Esempio:

<VirtualHost *:80>
        ServerName www.pippo.com
        ServerAdmin email@pippo.com
        RedirectMatch 301 ^(?!/\.well-known/acme-challenge/).* https://www.pippo.com$0
        DocumentRoot /var/www/dovevuoitu 
</VirtualHost>

<VirtualHost *:443>
        SSLEngine on
        SSLCertificateFile /etc/apache2/ssl/pippo.crt
        SSLCertificateKeyFile /etc/apache2/ssl/pippo.key
        SSLProtocol All -SSLv2 -SSLv3

        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.

LinuxDebian/Apache (last edited 2023-09-04 17:15:49 by Kurgan)