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

Vai alla navigazione Vai alla ricerca
(21 versioni intermedie di uno stesso utente non sono mostrate)
Riga 15: Riga 15:
using 127.0.0.1 for ServerName
using 127.0.0.1 for ServerName
</pre>
</pre>
Per eliminarlo è sufficiente aprire il file di configurazione di Apache2:
Per eliminarlo è sufficiente aprire il file:
<pre>
<pre>
# nano /etc/apache2/apache2.conf
# nano /etc/apache2/conf-available/fqdn.conf
</pre>
</pre>
e aggiungere la direttiva:
e aggiungere la direttiva:
<pre>
<pre>
ServerName demo
ServerName demo
</pre>
e abilitare la configurazione:
<pre>
# a2enconf fqdn
# systemctl restart apache2.service
</pre>
</pre>
Abilitate alcuni comodi moduli aggiuntivi:
Abilitate alcuni comodi moduli aggiuntivi:
Riga 237: Riga 242:
# systemctl reload apache2
# systemctl reload apache2
</pre>
</pre>
=== 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 256: 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 268: Riga 327:
</pre>
</pre>
La password che sceglierete sarà valida sia per l'utente MySQL root@localhost sia per l'utente root@demo.
La password che sceglierete sarà valida sia per l'utente MySQL root@localhost sia per l'utente root@demo.
<br/>
Mettiamo in sicurezza l'installazione di MySQL avviando il tool apposito:
<pre>
# mysql_secure_installation
</pre>
e rispondendo alle domande autoesplicative.
<br/><br/>
<br/><br/>
Per creare un utente in MySQL è necessario accedere come ''root'' (o da altro utente che ha i privilegi di creazione degli utenti): aprite un terminale e digitate:
Per creare un utente in MySQL è necessario accedere come ''root'' (o da altro utente che ha i privilegi di creazione degli utenti): aprite un terminale e digitate:
Riga 280: 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 330: Riga 395:


== Sicurezza della configurazione e prestazioni del server ==
== Sicurezza della configurazione e prestazioni del server ==
Di seguito alcune guide specifiche per migliorare la protezione e le prestazioni del server Apache appena installato:
* Migliorare le prestazioni con Memcached: [[http://guide.debianizzati.org/index.php/Installare_Memcached_in_un_server_Apache2_-_Stretch Memcached]]
* Configurare i Virtual Hosts: [[http://guide.debianizzati.org/index.php/Apache_e_Virtual_Hosts:_configurare_Apache2_per_ospitare_pi%C3%B9_siti_web Virtual Hosts]]
* Migliorare le prestazioni con PageSpeed: [[http://guide.debianizzati.org/index.php/Incrementare_le_prestazioni_di_Apache_con_mod_pagespeed Mod_PageSpeed]]
* Hardening di Apache2: [[http://guide.debianizzati.org/index.php/Hardening_di_un_web_server_Apache Hardening di Apache2]]
* Ottimizzare la banda di Apache2: [[http://guide.debianizzati.org/index.php/Ottimizzare_la_banda_di_Apache Ottimizzare la banda]]
* 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'''.
==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 ==
Riga 364: Riga 470:
</pre>
</pre>
Su questo web server il solo sito ad essere visibile sarà perciò quello chiamato <code>default</code>.
Su questo web server il solo sito ad essere visibile sarà perciò quello chiamato <code>default</code>.
==== mods-available ====
=== mods-available ===
Questa directory contiene i moduli di Apache2 pronti per essere resi disponibili.
Questa directory contiene i moduli di Apache2 pronti per essere resi disponibili.
=== mods-enabled ===
=== mods-enabled ===
Questa directory, come nel caso dei virtual host, contiene i link simbolici ai moduli effettivamente abilitati sul web server.
Questa directory, come nel caso dei virtual host, contiene i link simbolici ai moduli effettivamente abilitati sul web server.

Menu di navigazione