Apache tip & tricks: differenze tra le versioni
Nessun oggetto della modifica |
|||
| (4 versioni intermedie di uno stesso utente non sono mostrate) | |||
| Riga 66: | 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 | ErrorLog ${APACHE_LOG_DIR}/blog.designbest.com.error.log | ||
CustomLog ${APACHE_LOG_DIR}/blog.designbest.com | CustomLog ${APACHE_LOG_DIR}/blog.designbest.com.access.log combined | ||
</VirtualHost> | </VirtualHost> | ||
</IfModule> | </IfModule> | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Let’s Encrypt === | === Let’s Encrypt === | ||
Vedere la pagina dedicata<br/> | Vedere la pagina dedicata<br/> | ||
| Riga 88: | Riga 89: | ||
<br/> | <br/> | ||
Il file viene richiamato all'interno di un '' | Il file viene richiamato all'interno di un ''virtualhost'' con i seguenti comandi: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
AuthName "Dialog prompt" | AuthName "Dialog prompt" | ||
| Riga 94: | Riga 95: | ||
AuthUserFile /var/www/auth/.htpasswd | AuthUserFile /var/www/auth/.htpasswd | ||
Require valid-user | 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> | </syntaxhighlight> | ||
<br/> | <br/> | ||
| Riga 103: | Riga 113: | ||
Con PHP-FPM è possibile avere siti che utilizzano differenti versioni di PHP, specificandolo nel virtualhost.<br/> | 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]] | 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> | |||
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.crtnomesito.com_private_key.keynomesito.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