Installare un ambiente LAMP: Linux, Apache2, SSL, MySQL, PHP5 - Stretch: differenze tra le versioni

Vai alla navigazione Vai alla ricerca
(8 versioni intermedie di uno stesso utente non sono mostrate)
Riga 243: Riga 243:
</pre>
</pre>
=== Messa in sicurezza di PHP ===
=== Messa in sicurezza di PHP ===
Modifichiamo il file:
<pre>
# nano /etc/php/7.0/apache2/conf.d/99_security.ini
</pre>
con questi valori:
<pre>
allow_url_include = Off
allow_url_fopen = Off
session.use_only_cookies = 1
session.cookie_httponly = 1
expose_php = Off
display_errors = Off
register_globals = Off
disable_functions = shell_exec, escapeshellarg, escapeshellcmd, passthru, proc_close, proc_get_status, proc_nice, proc_open,proc_terminate
</pre>
e riavviamo Apache:
<pre>
# systemctl restart apache2.service
</pre>
=== Test della configurazione ===
=== Test della configurazione ===
Prima di procedere è una buona idea verificare che tutto ciò che abbiamo fatto funzioni realmente. Per questo utilizziamo il metodo <code>phpinfo</code> di PHP5 caricandolo in una pagina di test. Partiamo col creare il file della pagina di test:
Prima di procedere è una buona idea verificare che tutto ciò che abbiamo fatto funzioni realmente. Per questo utilizziamo il metodo <code>phpinfo</code> di PHP5 caricandolo in una pagina di test. Partiamo col creare il file della pagina di test:
Riga 262: Riga 282:
</pre>
</pre>
salviamo il file e richiamiamolo nel nostro browser: '''http://123.45.67.890/test.php'''. Se tutto è andato per il verso giusto vi troverete davanti a una schermata di riepilogo delle funzionalità abilitate di PHP5.
salviamo il file e richiamiamolo nel nostro browser: '''http://123.45.67.890/test.php'''. Se tutto è andato per il verso giusto vi troverete davanti a una schermata di riepilogo delle funzionalità abilitate di PHP5.
==Installazione di PHP 5.6==
Potrebbe essere necessario installare una vecchia versione di PHP affiancata a quella ufficiale presente in Stretch, ad esempio perchè alcuni siti presenti sul nostro server non girano correttamente con PHP 7.0.
<br/>
Debian Stretch offre nei repository ufficiali solo la versione 7.0 di PHP, ma possiamo utilizzare i pacchetti .deb messi a disposizione direttamente dal maintainer dei pacchetti PHP di Debian, Ondřej Surý.
<br/>
Aggiungiamo il suo repository al nostro sources.list:
<pre>
# apt-get install apt-transport-https
# curl https://packages.sury.org/php/apt.gpg | apt-key add -
# echo 'deb https://packages.sury.org/php/ stretch main' > /etc/apt/sources.list.d/deb.sury.org.list
# apt-get update
</pre>
E installiamo PHP 5.6:
<pre>
# apt-get install php5.6-cli php5.6-fpm
</pre>
Verifichiamo che tutto sia a posto:
<pre>
# php7.0 -v
PHP 7.0.15-1 (cli)
# php5.6 -v
PHP 5.6.30-5+0~20170223133422.27+stretch~1.gbp1ee0cb (cli)
</pre>
La versione predefinita è rimasta la 7.0, come possiamo facilmente constatare:
<pre>
# php -v
PHP 7.0.15-1 (cli)
</pre>
ma possiamo cambiarla in maniera molto veloce:
<pre>
# update-alternatives --config php
</pre>


== Installazione di MySQL ==
== Installazione di MySQL ==
Riga 292: Riga 345:
</pre>
</pre>
=== L'interfaccia phpMyAdmin ===
=== L'interfaccia phpMyAdmin ===
Per amministrare i nostri database può essere comoda un'interfaccia grafica raggiungibile da browser. A questo scopo installiamo '''phpMyAdmin''':
Per amministrare i nostri database può essere comoda un'interfaccia grafica raggiungibile da browser. A questo scopo installiamo '''phpMyAdmin''' (e adminer, un'interfaccia semplificata):
<pre>
<pre>
# apt install phpmyadmin
# apt install phpmyadmin adminer
</pre>
</pre>
Durante l'installazione vi verrà chiesto di indicare il web server in esecuzione sulla vostra machina. Indicate apache2:
Durante l'installazione vi verrà chiesto di indicare il web server in esecuzione sulla vostra machina. Indicate apache2:
Riga 350: Riga 403:
* Individuare gli script PHP che inviano SPAM: [[http://guide.debianizzati.org/index.php/Individuare_gli_script_PHP_che_inviano_SPAM Script PHP che inviano SPAM]]
* Individuare gli script PHP che inviano SPAM: [[http://guide.debianizzati.org/index.php/Individuare_gli_script_PHP_che_inviano_SPAM Script PHP che inviano SPAM]]
Non sono impostazioni necessarie per il corretto funzionamento di Apache, ma sono '''fortemente consigliate'''.
Non sono impostazioni necessarie per il corretto funzionamento di Apache, ma sono '''fortemente consigliate'''.
==Note e changelog==
Da Debian Jessie è stato introdotto Apache 2.4 al posto del 2.2, e anche il sistema di configurazione è cambiato leggermente.
<br/>
Invece della directory <code>/etc/apache2/conf.d/</code> abbiamo <code>/etc/apache2/conf-enabled/</code> che contiene dei link a <code>/etc/apache2/conf-available/</code>.
<br/>
I file di configurazione in <code>/etc/apache2/sites-enabled</code>/ devono terminare con l'estensione <code>.conf</code>.
<br/>
La direttiva <code>NameVirtualHost *:80</code> e analoga per la porta 443 non serve più.
<br/>
Una directory pubblicata tramite Alias deve avere l'opzione <code>Require all granted</code> altrimenti ogni tentativo di accedere al suo contenuto risulta in un errore <code>AH01630: client denied by server configuration</code>.
<br/><br/>
Una delle modifiche classiche da fare è la seguente:
<pre>
# Configuration for Apache 2.2
Order allow,deny
Allow from all
# Configuration for Apache 2.4 with mod_authz_host.
Require all granted
</pre>
In maniera analoga per negare ogni richiesta:
<pre>
# Configuration for Apache 2.2
Order deny,allow
Deny from all
# Configuration for Apache 2.4 with mod_authz_host.
Require all denied
</pre>
Un controllo di accesso basato sull'indirizzo IP è fatto in questo modo:
<pre>
Require local
Require ip 127.0.0.0/8 ::1 185.21.73.97 10.0.1.0/24
</pre>
Un'altro cambiamento non da poco è la direttiva <code>AllowOverride</code>, che adesso ha valore predefinito <code>None</code>. Questo significa ad esempio che tutti i file .htaccess smettono di funzionare!


== Apache2: layout di configurazione ==
== Apache2: layout di configurazione ==

Menu di navigazione