Apache tip & tricks: differenze tra le versioni

Da Webmobili Wiki.
Nessun oggetto della modifica
Nessun oggetto della modifica
 
(20 versioni intermedie di 3 utenti non mostrate)
Riga 1: Riga 1:
== Abilitare modulo SSL ==
== Certificati SSL ==
Di default il modulo non è abilitato
=== Abilitare modulo SSL ===
Di default il modulo non è abilitato<br/>
<code>sudo a2enmod ssl</code>
<code>sudo a2enmod ssl</code>


== Aggiungere domini certificati ==
=== Richiesta CSR ===
Genera un file <code>.csr</code> e un file <code>.key</code> che sono la richiesta di certificato per il server in questione e la chiave privata.
<syntaxhighlight lang="bash">
openssl req -new -newkey rsa:2048 -nodes -keyout designbestmagazine.com_private_key.key -out designbestmagazine.com.csr
</syntaxhighlight>
Importante, alla domanda sul '''Common Name''' specificare il NOME DEL DOMINIO (es <code>designbestmagazine.com</code>)
 
=== Gestione dei certificati (key, bundle) ===
Per creare un VirtualHost con certificato autentico aggiungere un file dentro alla cartella <code>/etc/apache2/sites-available</code> con la configurazione personalizzata che utilizzi i certificati giusti.<br/><br/>
Per creare un VirtualHost con certificato autentico aggiungere un file dentro alla cartella <code>/etc/apache2/sites-available</code> con la configurazione personalizzata che utilizzi i certificati giusti.<br/><br/>


Riga 18: Riga 26:




== Configurazione del Virtualhost ==
==== Configurazione del Virtualhost ====
Il virtualhost cambia '''la porta''' e aggiunge le direttive '''SSLEngine''', '''SSLCertificateFile''' e '''SSLCertificateKeyFile'''.<br/>
Il virtualhost cambia '''la porta''' e aggiunge le direttive '''SSLEngine''', '''SSLCertificateFile''' e '''SSLCertificateKeyFile'''.<br/>
È possibile configurare un redirect ''http'' to ''https'' direttamente dal virtualhost.<br/><br/>
È possibile configurare un '''redirect ''http'' => ''https''''' direttamente dal virtualhost.<br/><br/>


Esempio pratico:<br/>
Esempio pratico:<br/>
<syntaxhighlight>
<syntaxhighlight lang="apache">
#
# blog.designbest.com
# blog.designbest.com
#
#
Riga 29: Riga 38:
<VirtualHost *:80>
<VirtualHost *:80>
         ServerName blog.designbest.com
         ServerName blog.designbest.com
         Redirect / https://blog.designbest.com
         Redirect / https://blog.designbest.com/
</VirtualHost>
</VirtualHost>


Riga 57: Riga 66:
                 SSLCertificateKeyFile /etc/apache2/ssl/designbest.com_private_key.key
                 SSLCertificateKeyFile /etc/apache2/ssl/designbest.com_private_key.key


                 ErrorLog ${APACHE_LOG_DIR}/blog.designbest.com/error.log
                 ErrorLog ${APACHE_LOG_DIR}/blog.designbest.com.error.log
                 CustomLog ${APACHE_LOG_DIR}/blog.designbest.com/access.log combined
                 CustomLog ${APACHE_LOG_DIR}/blog.designbest.com.access.log combined
         </VirtualHost>
         </VirtualHost>
</IfModule>
</IfModule>
</syntaxhighlight>
=== Let’s Encrypt ===
Vedere la pagina dedicata<br/>
[[Certificati Lets'Encrypt]]
== Basic Authentication ==
Per fare una '''basic authentication''' bisogna utilizzare il comando <code>htpasswd</code> che crea un file con i dati di utente e password.<br/>
Può essere updatato per aggiungere altri utenti.
<syntaxhighlight lang="bash">
# Prima volta con opzione -c
sudo htpasswd -c /var/www/auth/.htpasswd nomeutente1
#Per aggiungere altri utenti senza -c
sudo htpasswd /var/www/auth/.htpasswd nomeutente2
</syntaxhighlight>
<br/>
Il file viene richiamato all'interno di un ''virtualhost'' con i seguenti comandi:
<syntaxhighlight lang="bash">
AuthName "Dialog prompt"
AuthType Basic
AuthUserFile /var/www/auth/.htpasswd
Require valid-user
</syntaxhighlight>
Che possono essere inseriti nel file <code>.htaccess</code> oppure direttamente nel ''virtualhost'' nella sezione <code>Location</code>
<syntaxhighlight lang="bash">
<Location />
  AuthName "Dialog prompt"
  AuthType Basic
  AuthUserFile /var/www/auth/.htpasswd
  Require valid-user
</Location>
</syntaxhighlight>
<br/>
Se si vuole cambiare la password di un utente basta lanciare di nuovo il comando senza l'opzione <code>-c</code> specificando l'utente già esistente.<br/>
Non è possibile settare più password per un singolo utente, in quel caso creare un file diverso come è stato fatto per magazine e outlet su merida.
== Configurare multiple versioni di PHP ==
Con PHP-FPM è possibile avere siti che utilizzano differenti versioni di PHP, specificandolo nel virtualhost.<br/>
Ecco la guida [[PHP FPM - Configurare multiple versioni di PHP]]
== Modificare la versione default di PHP-FPM ==
Per quanto riguarda '''php-fpm''' , dopo aver installato l'ultima versione (es. ''8.4'' )
<syntaxhighlight lang="bash">
# Settare l'alternativa di default
sudo update-alternatives --config php
#sudo update-alternatives --set php /usr/bin/php8.4
</syntaxhighlight>
Comunicarlo ad Apache
<syntaxhighlight lang="bash">
sudo a2enconf php8.4-fpm
sudo systemctl reload apache2.service
</syntaxhighlight>
== Reverse Proxy ==
Apache può essere configurato come ''Reverse Proxy'' per soddisfare le richieste degli applicativi che runnano sotto un proprio server (es. '''node.js''' o '''.net core''').
Ecco una configurazione d'esempio:
<syntaxhighlight lang="bash">
<VirtualHost *:80>
        ServerName sqlchat.dbdemo47.com
        Redirect / https://%{SERVER_NAME}%{REQUEST_URI}
</VirtualHost>
<VirtualHost *:443>
        ServerAdmin info@designbest.com
        ServerName sqlchat.dbdemo47.com
        ProxyPass / http://localhost:3000/
        ProxyPassReverse / http://localhost:3000/
</VirtualHost>
</syntaxhighlight>
Per poter utilizzare Apache come reverse proxy è necessario abilitare i moduli:
<syntaxhighlight lang="bash">
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo systemctl restart apache2
</syntaxhighlight>
</syntaxhighlight>

Versione attuale delle 16:30, 8 apr 2025

Certificati SSL

[modifica]

Abilitare modulo SSL

[modifica]

Di default il modulo non è abilitato
sudo a2enmod ssl

Richiesta CSR

[modifica]

Genera un file .csr e un file .key che sono la richiesta di certificato per il server in questione e la chiave privata.

openssl req -new -newkey rsa:2048 -nodes -keyout designbestmagazine.com_private_key.key -out designbestmagazine.com.csr

Importante, alla domanda sul Common Name specificare il NOME DEL DOMINIO (es designbestmagazine.com)

Gestione dei certificati (key, bundle)

[modifica]

Per creare un VirtualHost con certificato autentico aggiungere un file dentro alla cartella /etc/apache2/sites-available con la configurazione personalizzata che utilizzi i certificati giusti.

Esempio pratico:

  • Copiare i file del certificato (crt e key) + il certificato intermedio nella cartella /etc/apache2/ssl/. N.B. Se si dispone del file .cer basta rinominare l'estensione in .crt
  • Unire certificato e certificato intermedio in un unico file con il comando
cat nomesito.com_ssl_certificate.crt nomesito.com_ssl_certificate_intermediate.crt >> nomesito.com_ssl_certificate_bundle.crt

Ricordarsi di mettere in /etc/apache2/ssl/ i tre file

  • nomesito.com_ssl_certificate.crt
  • nomesito.com_private_key.key
  • nomesito.com_ssl_certificate_bundle.crt


Configurazione del Virtualhost

[modifica]

Il virtualhost cambia la porta e aggiunge le direttive SSLEngine, SSLCertificateFile e SSLCertificateKeyFile.
È possibile configurare un redirect http => https direttamente dal virtualhost.

Esempio pratico:

#
# blog.designbest.com
#

<VirtualHost *:80>
        ServerName blog.designbest.com
        Redirect / https://blog.designbest.com/
</VirtualHost>

<IfModule mod_ssl.c>
        <VirtualHost *:443>
                ServerAdmin s.vincenzi@webmobili.it
                ServerName blog.designbest.com

                DirectoryIndex index.html index.htm index.php
                DocumentRoot /var/www/blog.designbest.com/
                Alias /phpmyadmin /usr/share/phpmyadmin

                <Directory />
                        Options FollowSymLinks
                        AllowOverride All
                </Directory>

                <Directory /var/www/blog.designbest.com/>
                        Options -Indexes +FollowSymLinks +MultiViews
                        AllowOverride All
                        Order allow,deny
                        Allow from all
                </Directory>

                SSLEngine on
                SSLCertificateFile /etc/apache2/ssl/designbest.com_ssl_certificate_bundle.crt
                SSLCertificateKeyFile /etc/apache2/ssl/designbest.com_private_key.key

                ErrorLog ${APACHE_LOG_DIR}/blog.designbest.com.error.log
                CustomLog ${APACHE_LOG_DIR}/blog.designbest.com.access.log combined
        </VirtualHost>
</IfModule>

Let’s Encrypt

[modifica]

Vedere la pagina dedicata
Certificati Lets'Encrypt

Basic Authentication

[modifica]

Per fare una basic authentication bisogna utilizzare il comando htpasswd che crea un file con i dati di utente e password.
Può essere updatato per aggiungere altri utenti.

# Prima volta con opzione -c
sudo htpasswd -c /var/www/auth/.htpasswd nomeutente1

#Per aggiungere altri utenti senza -c
sudo htpasswd /var/www/auth/.htpasswd nomeutente2


Il file viene richiamato all'interno di un virtualhost con i seguenti comandi:

AuthName "Dialog prompt"
AuthType Basic
AuthUserFile /var/www/auth/.htpasswd
Require valid-user

Che possono essere inseriti nel file .htaccess oppure direttamente nel virtualhost nella sezione Location

<Location />
  AuthName "Dialog prompt"
  AuthType Basic
  AuthUserFile /var/www/auth/.htpasswd
  Require valid-user
</Location>


Se si vuole cambiare la password di un utente basta lanciare di nuovo il comando senza l'opzione -c specificando l'utente già esistente.
Non è possibile settare più password per un singolo utente, in quel caso creare un file diverso come è stato fatto per magazine e outlet su merida.

Configurare multiple versioni di PHP

[modifica]

Con PHP-FPM è possibile avere siti che utilizzano differenti versioni di PHP, specificandolo nel virtualhost.
Ecco la guida PHP FPM - Configurare multiple versioni di PHP

Modificare la versione default di PHP-FPM

[modifica]

Per quanto riguarda php-fpm , dopo aver installato l'ultima versione (es. 8.4 )

# Settare l'alternativa di default
sudo update-alternatives --config php
#sudo update-alternatives --set php /usr/bin/php8.4

Comunicarlo ad Apache

sudo a2enconf php8.4-fpm
sudo systemctl reload apache2.service

Reverse Proxy

[modifica]

Apache può essere configurato come Reverse Proxy per soddisfare le richieste degli applicativi che runnano sotto un proprio server (es. node.js o .net core).

Ecco una configurazione d'esempio:

<VirtualHost *:80>
        ServerName sqlchat.dbdemo47.com
        Redirect / https://%{SERVER_NAME}%{REQUEST_URI}
</VirtualHost>

<VirtualHost *:443>
        ServerAdmin info@designbest.com
        ServerName sqlchat.dbdemo47.com

        ProxyPass / http://localhost:3000/
        ProxyPassReverse / http://localhost:3000/
</VirtualHost>

Per poter utilizzare Apache come reverse proxy è necessario abilitare i moduli:

sudo a2enmod proxy
sudo a2enmod proxy_http
sudo systemctl restart apache2