Installare un ambiente LAMP: Linux, Apache2, SSL, MySQL, PHP5: differenze tra le versioni
Nessun oggetto della modifica |
m (non compatibilità + aggiunto link a guida più aggiornata) |
||
(54 versioni intermedie di 10 utenti non mostrate) | |||
Riga 1: | Riga 1: | ||
{{Versioni compatibili|ONLY|Squeeze|Wheezy|Jessie}} | |||
=Introduzione= | {{Box|Guida aggiornata|Per Debian 9 ([[Stretch]]) o superiori fare riferimento alla [[Installare un ambiente LAMP: Linux, Apache2, SSL, MySQL, PHP5 - Stretch|guida apposita]].}} | ||
== Introduzione == | |||
'''LAMP''' è un acronimo che indica un ambiente server in cui siano installati '''L'''inux, '''A'''pache, '''M'''ySQL e '''P'''HP. In questa guida vedremo come installare un server Apache2 su Debian Lenny, come configurare il modulo SSL e come fornire supporto per il linguaggio di scripting PHP5 e i database basati su MySQL. | '''LAMP''' è un acronimo che indica un ambiente server in cui siano installati '''L'''inux, '''A'''pache, '''M'''ySQL e '''P'''HP. In questa guida vedremo come installare un server Apache2 su Debian Lenny, come configurare il modulo SSL e come fornire supporto per il linguaggio di scripting PHP5 e i database basati su MySQL. | ||
<br> | <br> | ||
In tutta la guida assumeremo che il nome del server Debian sia < | In tutta la guida assumeremo che il nome del server Debian sia <code>'''demo'''</code> e il suo indirizzo IP sia <code>'''123.45.67.890'''</code>. Questi valori vanno ovviamente sostituiti con quelli del vostro ambiente di lavoro. | ||
=Installazione di Apache2= | == Installazione di Apache2 == | ||
Installare il web server Apache2 su Debian è un'operazione molto semplice: | Installare il web server Apache2 su Debian è un'operazione molto semplice: | ||
<pre> | <pre> | ||
aptitude install apache2-mpm-prefork apache2-utils libexpat1 | # aptitude install apache2-mpm-prefork apache2-utils libexpat1 apache2-suexec | ||
</pre> | </pre> | ||
Se notaste, all'avvio del web server, il messaggio di avvertimento: | |||
<pre> | <pre> | ||
apache2: Could not reliably determine the server's fully qualified domain name, | apache2: Could not reliably determine the server's fully qualified domain name, | ||
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 di configurazione di Apache2: | ||
<pre> | <pre> | ||
nano /etc/apache2/apache2.conf | # nano /etc/apache2/apache2.conf | ||
</pre> | </pre> | ||
e aggiungere la direttiva | e aggiungere la direttiva: | ||
<pre> | <pre> | ||
ServerName demo | ServerName demo | ||
</pre> | |||
Abilitate alcuni comodi moduli aggiuntivi: | |||
<pre> | |||
# a2enmod headers | |||
# a2enmod expires | |||
</pre> | </pre> | ||
Quindi riavviate Apache2 per fargli digerire le modifiche: | Quindi riavviate Apache2 per fargli digerire le modifiche: | ||
<pre> | <pre> | ||
apache2ctl graceful | # apache2ctl graceful | ||
</pre> | </pre> | ||
A questo punto aprite il vostro browser preferito e navigate verso l'indirizzo '''http://123.45.67.890'''. Sarete accolti dalla pagina di benvenuto del vostro web server: It Works! | A questo punto aprite il vostro browser preferito e navigate verso l'indirizzo '''http://123.45.67.890'''. Sarete accolti dalla pagina di benvenuto del vostro web server: It Works! | ||
=Configurazione di SSL= | |||
Le connessioni sicure SSL sono vitali per le aree di amministrazione dei nostri siti, | == Configurazione di SSL == | ||
'''NOTA''': i certificati auto-firmati, | Le connessioni sicure SSL sono vitali per le aree di amministrazione dei nostri siti, poiché assicurano segretezza e protezione alle password che digitiamo. In questa sezione vedremo come configurare un certificato auto-firmato e come creare un virtual host sulla porta https (443) per le nostre connessioni.<br> | ||
==Installazione== | '''NOTA''': i certificati auto-firmati, poiché non verificati da un'autorità internazionale, generano nel browser un messaggio di avvertimento. Per questo motivo sono adatti in ambienti intranet o su server dove il traffico https serve solo per amministrazione e non per fornire servizi a utenti esterni. | ||
Creiamo | === Installazione === | ||
Creiamo innanzitutto una directory dove archiviare i nostri certificati: | |||
<pre> | <pre> | ||
mkdir /etc/apache2/ssl | # mkdir /etc/apache2/ssl | ||
</pre> | </pre> | ||
Quindi creiamo i nostri certificati: | Quindi creiamo i nostri certificati: | ||
<pre> | <pre> | ||
openssl req -new -x509 -days 365 -nodes -out /etc/apache2/ssl/apache.pem -keyout /etc/apache2/ssl/apache.pem | # openssl req -new -x509 -days 365 -nodes -out /etc/apache2/ssl/apache.pem -keyout /etc/apache2/ssl/apache.pem | ||
</pre> | </pre> | ||
L'output iniziale del comando sarà: | L'output iniziale del comando sarà: | ||
Riga 68: | Riga 76: | ||
Rispondete ovviamente inserendo i parametri più adatti al vostro caso. | Rispondete ovviamente inserendo i parametri più adatti al vostro caso. | ||
<br> | <br> | ||
Adesso che abbiamo i certificati piazzati al loro posto non dobbiamo far altro che abilitare Apache mod_ssl: | Adesso che abbiamo i certificati piazzati al loro posto non dobbiamo far altro che abilitare Apache mod_ssl e, già che ci siamo, alcuni altri moduli utili: | ||
<pre> | <pre> | ||
a2enmod ssl | # a2enmod ssl | ||
# a2enmod rewrite | |||
# a2enmod suexec | |||
# a2enmod include | |||
</pre> | </pre> | ||
==Configurazione dei Virtual Host== | |||
=== Configurazione dei Virtual Host === | |||
Iniziamo con il creare un file di testo che specifichi il nostro Virtual Host SSL: | Iniziamo con il creare un file di testo che specifichi il nostro Virtual Host SSL: | ||
<pre> | <pre> | ||
nano /etc/apache2/sites-available/default-ssl | # nano /etc/apache2/sites-available/default-ssl | ||
</pre> | </pre> | ||
e configuriamolo come segue: | e configuriamolo come segue: | ||
Riga 101: | Riga 113: | ||
Options Indexes FollowSymLinks MultiViews | Options Indexes FollowSymLinks MultiViews | ||
AllowOverride None | AllowOverride None | ||
Order allow,deny | |||
allow from all | # Fino a Debian Wheezy | ||
#Order allow,deny | |||
#allow from all | |||
# Da Debian Jessie | |||
Require all granted | |||
</Directory> | </Directory> | ||
Riga 111: | Riga 129: | ||
AllowOverride None | AllowOverride None | ||
Options None | Options None | ||
# Fino a Debian Wheezy | |||
#Order allow,deny | |||
#allow from all | |||
# Da Debian Jessie | |||
Require all granted | |||
</Directory> | </Directory> | ||
Riga 118: | Riga 142: | ||
AllowOverride None | AllowOverride None | ||
Options None | Options None | ||
Order allow,deny | |||
# Fino a Debian Wheezy | |||
#Order allow,deny | |||
#allow from all | |||
# Da Debian Jessie | |||
Require all granted | |||
</Directory> | </Directory> | ||
Riga 128: | Riga 158: | ||
Options Indexes MultiViews | Options Indexes MultiViews | ||
AllowOverride None | AllowOverride None | ||
Order allow,deny | |||
# Fino a Debian Wheezy | |||
#Order allow,deny | |||
#allow from all | |||
# Da Debian Jessie | |||
Require all granted | |||
</Directory> | </Directory> | ||
</VirtualHost> | </VirtualHost> | ||
</pre> | </pre> | ||
Apache non è in ascolto sulla porta 443, quella normalmente utilizzata da apache-ssl, e quindi lo dobbiamo istruire modificando il file < | |||
'''NOTE''' | |||
* '''Da Debian Jessie (Apache 2.4.x)''': | |||
1) la ''DocumentRoot'' è <tt>/var/www/html/</tt> | |||
2) il controllo degli accessi Rule-Based prevede una configurazione differente: | |||
* per negare l'accesso alla directory a tutti: | |||
<pre>Order deny,allow | |||
Deny from all</pre> | |||
: modificare in | |||
<pre>Require all denied</pre> | |||
* per consentire l'accesso alla directory a tutti: | |||
<pre>Order allow,deny | |||
Allow from all</pre> | |||
: modificare in | |||
<pre>Require all granted</pre> | |||
Apache non è in ascolto sulla porta 443, quella normalmente utilizzata da apache-ssl, e quindi lo dobbiamo istruire modificando il file <code>/etc/apache2/ports.conf</code> aggiungendo la riga: | |||
<pre> | <pre> | ||
Listen 443 | Listen 443 | ||
</pre> | </pre> | ||
Come ultima cosa, importantissima, bisogna attivare il sito che abbiamo appena creato (sempre utilizzando i comodi comandi che Apache2 ci mette a disposizione). Sarà quindi sufficiente un | Come ultima cosa, importantissima, bisogna attivare il sito che abbiamo appena creato (sempre utilizzando i comodi comandi che Apache2 ci mette a disposizione). Sarà quindi sufficiente un: | ||
* '''Fino a Debian Wheezy''': | |||
<pre> | |||
# a2ensite default-ssl | |||
</pre> | |||
* '''Da Debian Jessie (Apache 2.4.x)''': | |||
<pre> | <pre> | ||
# a2ensite default-ssl | # a2ensite default-ssl | ||
</pre> | </pre> | ||
{{Discussione|senza includere l'estensione ".conf".|.conf per default.ssl}} | |||
Un riavvio di Apache2 caricherà la nuova configurazione: | Un riavvio di Apache2 caricherà la nuova configurazione: | ||
<pre> | <pre> | ||
/etc/init.d/apache2 force-reload | # /etc/init.d/apache2 force-reload | ||
</pre> | </pre> | ||
=Installazione di PHP5= | == Installazione di PHP5 == | ||
Per avere il supporto a PHP5 è sufficiente installare il linguaggio di scripting e il relativo modulo di supporto ad Apache2: | Per avere il supporto a PHP5 è sufficiente installare il linguaggio di scripting e il relativo modulo di supporto ad Apache2: | ||
<pre> | <pre> | ||
aptitude install php5 libapache2-mod-php5 | # aptitude install php5 libapache2-mod-php5 | ||
</pre> | </pre> | ||
A questo punto un riavvio di Apache è sufficiente: | A questo punto un riavvio di Apache è sufficiente: | ||
<pre> | <pre> | ||
/etc/init.d/apache2 reload | # /etc/init.d/apache2 reload | ||
</pre> | |||
Su tutte le Debian Squeeze c’è una correzione al volo da fare al file ''php.ini''. Il problema è dovuto al parametro: | |||
<pre> | |||
memory_limit = -1 | |||
</pre> | |||
Visto così sembrerebbe un flag disabilitato e ci aspetteremmo quindi che non ci sia alcun limite nella memoria allocabile, invece il comportamento è tutt’altro: | |||
<pre> | |||
PHP Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 64 bytes) in /var/www/clients/client21/web54/web/XXXXXX.php on line 212 | |||
</pre> | |||
Per ovviare al problema, è bene specificare quale effettivamente è il limite di memoria che intendiamo imporre ad uno script php eseguito da linea di comando. Il parametro si trova nel file: | |||
<pre> | |||
/etc/php5/cli/php.ini | |||
</pre> | |||
E la modifica da effettuare è la seguente: | |||
<pre> | |||
; Maximum amount of memory a script may consume (128MB) | |||
; http://php.net/memory-limit | |||
;memory_limit = -1 | |||
memory_limit = 128M | |||
</pre> | |||
Potrebbe essere utile aumentare il valore dei dati POST caricabili attraverso script PHP. In questo caso occorre modificare il file di configurazione di Apache: | |||
<pre> | |||
# nano /etc/apache2/apache2.conf | |||
</pre> | |||
aggiungendo la sezione | |||
<pre> | |||
<Files *.php> | |||
# Da Debian Wheezy | |||
AddType application/x-httpd-php .php | |||
AddType application/x-httpd-php-source .phps | |||
# Fino a Debian Squeeze | |||
#SetOutputFilter PHP | |||
#SetInputFilter PHP | |||
LimitRequestBody 524288 | |||
</Files> | |||
</pre> | |||
e riavviando il server: | |||
<pre> | |||
# /etc/init.d/apache2 restart | |||
</pre> | </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 < | 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: | ||
<pre> | <pre> | ||
nano -w /var/www/test.php | # nano -w /var/www/test.php | ||
</pre> | </pre> | ||
Quindi riempiamolo in questo modo: | Quindi riempiamolo in questo modo: | ||
Riga 174: | Riga 284: | ||
</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. | ||
==Moduli aggiuntivi== | === Moduli aggiuntivi === | ||
Tramite le funzionalità di ricerca di aptitude diamo uno sguardo ai moduli disponibili per PHP5: | Tramite le funzionalità di ricerca di aptitude diamo uno sguardo ai moduli disponibili per PHP5: | ||
<pre> | <pre> | ||
aptitude search php5 | # aptitude search php5 | ||
</pre> | </pre> | ||
Scegliete '''solo''' quelli che vi servono e installateli nel solito modo: | Scegliete '''solo''' quelli che vi servono e installateli nel solito modo: | ||
<pre> | <pre> | ||
# apt-get install dh-php5 libapache2-mod-php5filter libexpect-php5 libgv-php5 libow-php5 libphp5-embed php5-adodb php5-apcu php5-cgi php5-curl php5-dbg php5-enchant php5-exactimage php5-ffmpeg php5-fpm php5-gd php5-gdcm php5-geoip php5-gmp php5-imagick php5-idn php5-imap php5-interbase php5-intl php5-json php5-ldap php5-librdf php5-mapscript php5-mcrypt php5-memcache php5-memcached php5-mhash php5-ming php5-mongo php5-mssql php5-mysql php5-odbc php5-pgsql php5-ps php5-pspell php5-radius php5-recode php5-remctl php5-rrd php5-sasl php5-snmp php5-sqlite php5-svn php5-sybase php5-tidy php5-xcache php5-xmlrpc php5-xsl | |||
php5-memcache php5-mhash php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy | |||
php5-xmlrpc php5-xsl | |||
</pre> | </pre> | ||
=Installazione di MySQL= | |||
== Installazione di MySQL == | |||
L'installazione del RDBM MySQL è semplice: | L'installazione del RDBM MySQL è semplice: | ||
<pre> | <pre> | ||
aptitude install mysql-server mysql-client | # aptitude install mysql-server mysql-client | ||
</pre> | </pre> | ||
Durante l'installazione vi verrà chiesta la password di amministratore di MySQL (che è chiamato '''root''' ma è diverso dall'utente '''root''' del server Debian): | Durante l'installazione vi verrà chiesta la password di amministratore di MySQL (che è chiamato '''root''' ma è diverso dall'utente '''root''' del server Debian): | ||
Riga 196: | Riga 305: | ||
</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. | ||
==L'interfaccia phpMyAdmin== | <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: | |||
<pre> | |||
# mysql -uroot -p | |||
</pre> | |||
Vi verrà chiesta la password di root e vi troverete nella solita shell del client mysql. | |||
<br/> | |||
A questo punto bisognerà creare l’utente e dargli i permessi sul database. Per fare ciò digitate nella shell di MySQL: | |||
<pre> | |||
GRANT ALL PRIVILEGES ON nome_db.* TO ‘nome_utente’@'localhost’ IDENTIFIED BY ‘password_utente’ WITH GRANT OPTION; | |||
</pre> | |||
=== 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''': | ||
<pre> | <pre> | ||
aptitude install phpmyadmin | # aptitude install phpmyadmin | ||
</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 206: | Riga 326: | ||
</pre> | </pre> | ||
A questo punto lanciate il browser su '''http://123.45.67.890/phpmyadmin''' e fate login con le credenziali di root di MySQL inserite poco fa. | A questo punto lanciate il browser su '''http://123.45.67.890/phpmyadmin''' e fate login con le credenziali di root di MySQL inserite poco fa. | ||
=Apache2: layout di configurazione= | {{Box|Nota|È possibile che la pagina di autenticazione di phpmyadmin non venga caricata, in tal caso provare a riavviare manualmente apache.}} | ||
<br/> | |||
Poiché la password di login su phpmyadmin viaggia in chiaro, può essere una buona cosa forzare il servizio phpmyadmin a restare in ascolto solo sul protocollo HTTPS, creando una riscrittura automatica dell'indirizzo HTTP verso il protocollo SSL. Questo può essere agevolmente fatto modificando il file di configurazione di phpmyadmin. | |||
* '''Fino a Debian Wheezy''': | |||
<pre> | |||
# nano /etc/apache2/conf.d/phpmyadmin.conf | |||
</pre> | |||
* '''Da Debian Jessie (Apache 2.4.x)''': | |||
<pre> | |||
# nano /etc/phpmyadmin/apache.conf | |||
</pre> | |||
e aggiungendo all'inizio del file le righe: | |||
<pre> | |||
<IfModule mod_rewrite.c> | |||
<IfModule mod_ssl.c> | |||
<Location /phpmyadmin> | |||
RewriteEngine on | |||
RewriteCond %{HTTPS} off | |||
RewriteRule ^(.*)$ https://%{HTTP_HOST}/phpmyadmin [R] | |||
</Location> | |||
</IfModule> | |||
</IfModule> | |||
# Il resto del file rimane invariato | |||
Alias /phpmyadmin /usr/share/phpmyadmin | |||
... | |||
</pre> | |||
Da adesso, anche digitando '''http://123.45.67.890/phpmyadmin''', sarete rigirati verso l'equivalente pagina HTTPS. | |||
== Apache2: layout di configurazione == | |||
Assumendo di aver utilizzato aptitude o apt-get per installare Apache2, spostiamoci nella sua directory di configurazione per dare un occhio a come è strutturata: | Assumendo di aver utilizzato aptitude o apt-get per installare Apache2, spostiamoci nella sua directory di configurazione per dare un occhio a come è strutturata: | ||
<pre> | <pre> | ||
cd /etc/apache2 | # cd /etc/apache2 | ||
ls | # ls | ||
</pre> | </pre> | ||
==sites-available== | === sites-available === | ||
Questa directory conterrà i | Questa directory conterrà i file con le configurazioni di ogni sito (conosciuti come '''virtual hosts''') che vorrete servire con Apache. Uno sguardo alla directory: | ||
<pre> | <pre> | ||
ls sites-available/ | ls sites-available/ | ||
Riga 219: | Riga 368: | ||
default default-ssl | default default-ssl | ||
</pre> | </pre> | ||
ci dice che l'installazione Apache2 di Debian ha due vhost disponibili: < | ci dice che l'installazione Apache2 di Debian ha due vhost disponibili: <code>default</code> e <code>default-ssl</code>. Notate che la presenza di un virtual host in questa directory non significa che questo sia attivo e visibile dagli utenti; significa solo che sarà disponibile se verrà abilitato.<br> | ||
* '''Da Debian Jessie (Apache 2.4.x)''': | |||
<pre> | |||
ls sites-available/ | |||
... | |||
000-default.conf default-ssl.conf | |||
</pre> | |||
i due vhost disponibili sono <code>000-default.conf</code> e <code>default-ssl.conf</code>, terminano con estensione .conf e il contenuto va personalizzato secondo le proprie esigenze. | |||
Tutto questo ci porta a... | Tutto questo ci porta a... | ||
==sites-enabled== | |||
Questa directory contiene dei link simbolici ai files dei siti che volete rendere disponibili. Per esempio, su un web server ci possono essere diversi siti pronti per essere pubblicati (configurati nella directory < | === sites-enabled === | ||
Questa directory contiene dei link simbolici ai files dei siti che volete rendere disponibili. Per esempio, su un web server ci possono essere diversi siti pronti per essere pubblicati (configurati nella directory <code>sites-available</code>), ma solo quelli linkati simbolicamente in questa directory saranno realmente visibili dagli utenti. Diamo uno sguardo alla directory: | |||
<pre> | <pre> | ||
ls -l sites-enabled | # ls -l sites-enabled | ||
... | ... | ||
lrwxrwxrwx 1 root root 26 Oct 28 22:38 000-default -> ../sites-available/default | lrwxrwxrwx 1 root root 26 Oct 28 22:38 000-default -> ../sites-available/default | ||
</pre> | </pre> | ||
Su questo web server il solo sito ad essere visibile sarà perciò quello chiamato < | 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. | ||
==a2en e a2dis== | === a2en e a2dis === | ||
Essere buoni amministratori di sistema significa conoscere i comandi per renderci le cose più semplici. | Essere buoni amministratori di sistema significa conoscere i comandi per renderci le cose più semplici. | ||
===a2dissite=== | ==== a2dissite ==== | ||
Questo comando cancella il link simbolico di un sito abilitato. Ad esempio il comando: | Questo comando cancella il link simbolico di un sito abilitato. Ad esempio il comando: | ||
<pre> | <pre> | ||
a2dissite default | # a2dissite default | ||
</pre> | </pre> | ||
rende indisponibile il sito di default di Apache. | rende indisponibile il sito di default di Apache. | ||
===a2ensite=== | ==== a2ensite ==== | ||
Questo comando serve invece a abilitare un virtual host: | Questo comando serve invece a abilitare un virtual host: | ||
<pre> | <pre> | ||
a2ensite default | # a2ensite default | ||
</pre> | </pre> | ||
rimette le cose a posto, ripristinando il sito di default precedentemente disabilitato. | rimette le cose a posto, ripristinando il sito di default precedentemente disabilitato. | ||
===a2dismod=== | ==== a2dismod ==== | ||
Questo comando disabilita un modulo di Apache. | Questo comando disabilita un modulo di Apache. | ||
===a2enmod=== | ==== a2enmod ==== | ||
Questo comando abilita un modulo di Apache. | Questo comando abilita un modulo di Apache. | ||
=Apache2: files di configurazione= | == Apache2: files di configurazione == | ||
==ports.conf== | === ports.conf === | ||
È il file che indica ad Apache su quali porte TCP/IP restare in ascolto: | |||
<pre> | <pre> | ||
NameVirtualHost *:80 | NameVirtualHost *:80 | ||
Riga 264: | Riga 424: | ||
</IfModule> | </IfModule> | ||
</pre> | </pre> | ||
La | La sintassi del file di default è molto semplice: | ||
* tutti i virtual host di Apache sono in ascolto sulla porta 80 (*:80) | * tutti i virtual host di Apache sono in ascolto sulla porta 80 (*:80) | ||
* il web server, se il modulo ssl è attivo, resta in ascolto di connessioni https sulla porta 443 | * il web server, se il modulo ssl è attivo, resta in ascolto di connessioni https sulla porta 443 | ||
Riga 272: | Riga 432: | ||
</pre> | </pre> | ||
e riavviare Apache. | e riavviare Apache. | ||
==apache2.conf== | * '''Da Debian Jessie (Apache 2.4.x)''': | ||
per evitare di visualizzare l'avviso | |||
===Timeout=== | <pre>Restarting web server: apache2AH00548: NameVirtualHost has no effect and will be removed in the next release /etc/apache2/ports.conf:5</pre> commentare la riga 5 relativa a NameVirtualHost | ||
=== apache2.conf === | |||
È il file di configurazione principale di Apache su Debian. È estremamente ben commentato, ma può valer la pena lo stesso dare un'occhiata alle opzioni di configurazione principali. | |||
==== Timeout ==== | |||
Default: | Default: | ||
<pre> | <pre> | ||
Timeout 300 | Timeout 300 | ||
</pre> | </pre> | ||
Questa opzione imposta il tempo massimo, in secondi, durante il quale Apache aspetta una richiesta, la processa e le risponde. | Questa opzione imposta il tempo massimo, in secondi, durante il quale Apache aspetta una richiesta, la processa e le risponde. È impostato deliberatamente su un valore molto alto, ma è possibile ridurlo, portandolo a un sano 45 (o anche meno). Ridurre questo valore può anche aiutare a controbattere gli effetti di un attacco DOS. | ||
===KeepAlive=== | ==== KeepAlive ==== | ||
Default: | Default: | ||
<pre> | <pre> | ||
KeepAlive On | KeepAlive On | ||
</pre> | </pre> | ||
Questo parametro andrebbe lasciato su ON, | Questo parametro andrebbe lasciato su ON, poiché indica a Apache di mantenere aperta una connessione con il client, in modo che ogni file o immagine di un documento HTML non siano richiesti con una nuova connessione. Di seguito vedremo alcune impostazioni del parametro KeepAlive. | ||
====MaxKeepAliveRequests==== | ===== MaxKeepAliveRequests ===== | ||
Default: | Default: | ||
<pre> | <pre> | ||
MaxKeepAliveRequests 100 | MaxKeepAliveRequests 100 | ||
</pre> | </pre> | ||
Per ogni connessione persistente attiva definisce il numero massimo di richieste possibili. Va tenuto alto per garantire | Per ogni connessione persistente attiva definisce il numero massimo di richieste possibili. Va tenuto alto per garantire efficienza. Se il vostro sito contiene parecchi javascript, immagini, etc, provate a aumentarlo a 200. | ||
====KeepAliveTimeout==== | ===== KeepAliveTimeout ===== | ||
Default: | Default: | ||
<pre> | <pre> | ||
Riga 298: | Riga 462: | ||
</pre> | </pre> | ||
Descrive il tempo in secondi in cui ogni connessione persistente attiva aspetta per la prossima richiesta, prima di chiudersi definitivamente. | Descrive il tempo in secondi in cui ogni connessione persistente attiva aspetta per la prossima richiesta, prima di chiudersi definitivamente. | ||
===prefork MPM=== | ==== prefork MPM ==== | ||
Durante l'installazione di Apache2 abbiamo optato per il pacchetto < | Durante l'installazione di Apache2 abbiamo optato per il pacchetto <code>apache2-mpm-prefork</code>, preferendolo al pacchetto <code>apache2-mpm-worker</code>. Vi rimando alla documentazione ufficiale di Apache2 per le differenze.<br> | ||
Questo parametro definisce il comportamento di Apache2 MPM prefork.<br> | Questo parametro definisce il comportamento di Apache2 MPM prefork.<br> | ||
Default: | Default: | ||
Riga 314: | Riga 478: | ||
* '''MinSpareServers''': il numero minimo di processi figlio inattivi (idle) | * '''MinSpareServers''': il numero minimo di processi figlio inattivi (idle) | ||
* '''MaxSpareServers''': il numero massimo di processi figlio inattivi (idle) | * '''MaxSpareServers''': il numero massimo di processi figlio inattivi (idle) | ||
* '''MaxClients''': imposta il numero massimo di richieste contemporanee gestibili da | * '''MaxClients''': imposta il numero massimo di richieste contemporanee gestibili da Apache | ||
* '''MaxRequestsPerChild''': imposta quante richieste saranno gestite da un processo figlio prima di terminare. Il valore 0 indica che il processo non termina mai. Modificare questo valore può aiutare la gestione della memoria RAM del server. | * '''MaxRequestsPerChild''': imposta quante richieste saranno gestite da un processo figlio prima di terminare. Il valore 0 indica che il processo non termina mai. Modificare questo valore può aiutare la gestione della memoria RAM del server. | ||
===ServerName=== | ==== ServerName ==== | ||
Default: Non impostato | Default: Non impostato | ||
Questo parametro va impostato utilizzando l'hostname del server o il suo FQDN (Fully Qualified Domain Name). | Questo parametro va impostato utilizzando l'hostname del server o il suo FQDN (Fully Qualified Domain Name). | ||
===HostnameLookups=== | ==== HostnameLookups ==== | ||
Default: | Default: | ||
<pre> | <pre> | ||
Riga 328: | Riga 492: | ||
* On: abilita le ricerche DNS lookup per loggare gli host names | * On: abilita le ricerche DNS lookup per loggare gli host names | ||
* Double: come On. In più controlla l'hostname. | * Double: come On. In più controlla l'hostname. | ||
===ServerTokens=== | ==== ServerTokens ==== | ||
Default: | Default: | ||
<pre> | <pre> | ||
ServerTokens Full | ServerTokens Full | ||
</pre> | </pre> | ||
Indica quante informazioni vengono inviate dal server nell' | Indica quante informazioni vengono inviate dal server nell'header. Può essere utile modificare il valore di default per una questione di sicurezza: meno informazioni forniamo sul nostro server, sulla versione di Apache e sui moduli installati, e meno facile sarà trovare un exploit per bucarci.<br> | ||
Le possibili opzioni sono: | Le possibili opzioni sono: | ||
* Full | * Full | ||
Riga 359: | Riga 523: | ||
Apache Server | Apache Server | ||
</pre> | </pre> | ||
===ServerSignature=== | ==== ServerSignature ==== | ||
Default: | Default: | ||
<pre> | <pre> | ||
Riga 367: | Riga 531: | ||
I possibili valori sono: | I possibili valori sono: | ||
* Off: non viene aggiunto alcun footer | * Off: non viene aggiunto alcun footer | ||
* On: vengono aggiunte informazioni sul server al livello definito da < | * On: vengono aggiunte informazioni sul server al livello definito da <code>ServerTokens</code> | ||
* Email: viene aggiunto anche l'indirizzo email dell'amministratore | * Email: viene aggiunto anche l'indirizzo email dell'amministratore | ||
<br | |||
<br | == Per approfondimenti vedi anche: == | ||
[[Installare un ambiente LAMP: Linux, Apache2, SSL, MySQL, PHP5]]<br> | |||
[[Backup di MySQL tramite script]]<br> | |||
[[Categoria: | [[Configurare MySQL per accettare connessioni remote]]<br> | ||
[[Categoria: | |||
{{Autori | |||
|Autore = [[Utente:Ferdybassi|Ferdybassi]] | |||
|Verificata_da = | |||
: [[Utente:marzolinus|marzolinus]] | |||
|Numero_revisori = 1 | |||
|Estesa_da = | |||
: [[Utente:Selky|Selky]] | |||
}} | |||
[[Categoria:Web server]] | |||
[[Categoria:Database server]] | |||
[[Categoria:PHP]] |
Versione attuale delle 13:28, 26 ott 2019
Versioni Compatibili soltanto: Debian 6 "squeeze" Debian 7 "wheezy" Debian 8 "jessie" |
Guida aggiornata Per Debian 9 (Stretch) o superiori fare riferimento alla guida apposita. |
Introduzione
LAMP è un acronimo che indica un ambiente server in cui siano installati Linux, Apache, MySQL e PHP. In questa guida vedremo come installare un server Apache2 su Debian Lenny, come configurare il modulo SSL e come fornire supporto per il linguaggio di scripting PHP5 e i database basati su MySQL.
In tutta la guida assumeremo che il nome del server Debian sia demo
e il suo indirizzo IP sia 123.45.67.890
. Questi valori vanno ovviamente sostituiti con quelli del vostro ambiente di lavoro.
Installazione di Apache2
Installare il web server Apache2 su Debian è un'operazione molto semplice:
# aptitude install apache2-mpm-prefork apache2-utils libexpat1 apache2-suexec
Se notaste, all'avvio del web server, il messaggio di avvertimento:
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
Per eliminarlo è sufficiente aprire il file di configurazione di Apache2:
# nano /etc/apache2/apache2.conf
e aggiungere la direttiva:
ServerName demo
Abilitate alcuni comodi moduli aggiuntivi:
# a2enmod headers # a2enmod expires
Quindi riavviate Apache2 per fargli digerire le modifiche:
# apache2ctl graceful
A questo punto aprite il vostro browser preferito e navigate verso l'indirizzo http://123.45.67.890. Sarete accolti dalla pagina di benvenuto del vostro web server: It Works!
Configurazione di SSL
Le connessioni sicure SSL sono vitali per le aree di amministrazione dei nostri siti, poiché assicurano segretezza e protezione alle password che digitiamo. In questa sezione vedremo come configurare un certificato auto-firmato e come creare un virtual host sulla porta https (443) per le nostre connessioni.
NOTA: i certificati auto-firmati, poiché non verificati da un'autorità internazionale, generano nel browser un messaggio di avvertimento. Per questo motivo sono adatti in ambienti intranet o su server dove il traffico https serve solo per amministrazione e non per fornire servizi a utenti esterni.
Installazione
Creiamo innanzitutto una directory dove archiviare i nostri certificati:
# mkdir /etc/apache2/ssl
Quindi creiamo i nostri certificati:
# openssl req -new -x509 -days 365 -nodes -out /etc/apache2/ssl/apache.pem -keyout /etc/apache2/ssl/apache.pem
L'output iniziale del comando sarà:
Generating a 1024 bit RSA private key ...........++++++ ...........++++++ writing new private key to '/etc/apache2/ssl/apache.pem' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. -----
e poi ci verrà posta una serie di domande:
Country Name (2 letter code) [AU]: IT State or Province Name (full name) [Some-State]: Lodi Locality Name (eg, city) []: S. Angelo Lodigiano Organization Name (eg, company) [Internet Widgits Pty Ltd]: Compagnia di Test Organizational Unit Name (eg, section) []: Divisione IT Common Name (eg, YOUR name) []: demo.dominio.local Email Address []: webmaster@dominio.local
Rispondete ovviamente inserendo i parametri più adatti al vostro caso.
Adesso che abbiamo i certificati piazzati al loro posto non dobbiamo far altro che abilitare Apache mod_ssl e, già che ci siamo, alcuni altri moduli utili:
# a2enmod ssl # a2enmod rewrite # a2enmod suexec # a2enmod include
Configurazione dei Virtual Host
Iniziamo con il creare un file di testo che specifichi il nostro Virtual Host SSL:
# nano /etc/apache2/sites-available/default-ssl
e configuriamolo come segue:
NameVirtualHost *:443 <VirtualHost *:443> SSLEngine on SSLCertificateFile /etc/apache2/ssl/apache.pem SSLCertificateKeyFile /etc/apache2/ssl/apache.pem ServerAdmin admin@dominio.org ServerName server.dominio.org ErrorLog /var/log/apache2/error_ssl.log LogLevel warn CustomLog /var/log/apache2/access_ssl.log combined ServerSignature On DocumentRoot /var/www/apache2-default <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/apache2-default> Options Indexes FollowSymLinks MultiViews AllowOverride None # Fino a Debian Wheezy #Order allow,deny #allow from all # Da Debian Jessie Require all granted </Directory> ScriptAlias /cgi-local/ /var/www/apache2-default/cgi-bin/ ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/var/www/apache2-default/cgi-bin"> AllowOverride None Options None # Fino a Debian Wheezy #Order allow,deny #allow from all # Da Debian Jessie Require all granted </Directory> <Directory "/usr/lib/cgi-bin"> AllowOverride None Options None # Fino a Debian Wheezy #Order allow,deny #allow from all # Da Debian Jessie Require all granted </Directory> Alias /icons/ "/usr/share/apache2/icons/" Alias /manual/ "/usr/share/doc/apache2-doc/manual/" <Directory "/usr/share/apache2/icons"> Options Indexes MultiViews AllowOverride None # Fino a Debian Wheezy #Order allow,deny #allow from all # Da Debian Jessie Require all granted </Directory> </VirtualHost>
NOTE
- Da Debian Jessie (Apache 2.4.x):
1) la DocumentRoot è /var/www/html/
2) il controllo degli accessi Rule-Based prevede una configurazione differente:
- per negare l'accesso alla directory a tutti:
Order deny,allow Deny from all
- modificare in
Require all denied
- per consentire l'accesso alla directory a tutti:
Order allow,deny Allow from all
- modificare in
Require all granted
Apache non è in ascolto sulla porta 443, quella normalmente utilizzata da apache-ssl, e quindi lo dobbiamo istruire modificando il file /etc/apache2/ports.conf
aggiungendo la riga:
Listen 443
Come ultima cosa, importantissima, bisogna attivare il sito che abbiamo appena creato (sempre utilizzando i comodi comandi che Apache2 ci mette a disposizione). Sarà quindi sufficiente un:
- Fino a Debian Wheezy:
# a2ensite default-ssl
- Da Debian Jessie (Apache 2.4.x):
# a2ensite default-ssl
senza includere l'estensione ".conf". discussione
Un riavvio di Apache2 caricherà la nuova configurazione:
# /etc/init.d/apache2 force-reload
Installazione di PHP5
Per avere il supporto a PHP5 è sufficiente installare il linguaggio di scripting e il relativo modulo di supporto ad Apache2:
# aptitude install php5 libapache2-mod-php5
A questo punto un riavvio di Apache è sufficiente:
# /etc/init.d/apache2 reload
Su tutte le Debian Squeeze c’è una correzione al volo da fare al file php.ini. Il problema è dovuto al parametro:
memory_limit = -1
Visto così sembrerebbe un flag disabilitato e ci aspetteremmo quindi che non ci sia alcun limite nella memoria allocabile, invece il comportamento è tutt’altro:
PHP Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 64 bytes) in /var/www/clients/client21/web54/web/XXXXXX.php on line 212
Per ovviare al problema, è bene specificare quale effettivamente è il limite di memoria che intendiamo imporre ad uno script php eseguito da linea di comando. Il parametro si trova nel file:
/etc/php5/cli/php.ini
E la modifica da effettuare è la seguente:
; Maximum amount of memory a script may consume (128MB) ; http://php.net/memory-limit ;memory_limit = -1 memory_limit = 128M
Potrebbe essere utile aumentare il valore dei dati POST caricabili attraverso script PHP. In questo caso occorre modificare il file di configurazione di Apache:
# nano /etc/apache2/apache2.conf
aggiungendo la sezione
<Files *.php> # Da Debian Wheezy AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps # Fino a Debian Squeeze #SetOutputFilter PHP #SetInputFilter PHP LimitRequestBody 524288 </Files>
e riavviando il server:
# /etc/init.d/apache2 restart
Test della configurazione
Prima di procedere è una buona idea verificare che tutto ciò che abbiamo fatto funzioni realmente. Per questo utilizziamo il metodo phpinfo
di PHP5 caricandolo in una pagina di test. Partiamo col creare il file della pagina di test:
# nano -w /var/www/test.php
Quindi riempiamolo in questo modo:
<html> <head> <title> PHP Test Script </title> </head> <body> <?php phpinfo( ); ?> </body> </html>
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.
Moduli aggiuntivi
Tramite le funzionalità di ricerca di aptitude diamo uno sguardo ai moduli disponibili per PHP5:
# aptitude search php5
Scegliete solo quelli che vi servono e installateli nel solito modo:
# apt-get install dh-php5 libapache2-mod-php5filter libexpect-php5 libgv-php5 libow-php5 libphp5-embed php5-adodb php5-apcu php5-cgi php5-curl php5-dbg php5-enchant php5-exactimage php5-ffmpeg php5-fpm php5-gd php5-gdcm php5-geoip php5-gmp php5-imagick php5-idn php5-imap php5-interbase php5-intl php5-json php5-ldap php5-librdf php5-mapscript php5-mcrypt php5-memcache php5-memcached php5-mhash php5-ming php5-mongo php5-mssql php5-mysql php5-odbc php5-pgsql php5-ps php5-pspell php5-radius php5-recode php5-remctl php5-rrd php5-sasl php5-snmp php5-sqlite php5-svn php5-sybase php5-tidy php5-xcache php5-xmlrpc php5-xsl
Installazione di MySQL
L'installazione del RDBM MySQL è semplice:
# aptitude install mysql-server mysql-client
Durante l'installazione vi verrà chiesta la password di amministratore di MySQL (che è chiamato root ma è diverso dall'utente root del server Debian):
New password for the MySQL "root" user: <-- LAMIAPASSWORD Repeat password for the MySQL "root" user: <-- LAMIAPASSWORD
La password che sceglierete sarà valida sia per l'utente MySQL root@localhost sia per l'utente root@demo.
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:
# mysql -uroot -p
Vi verrà chiesta la password di root e vi troverete nella solita shell del client mysql.
A questo punto bisognerà creare l’utente e dargli i permessi sul database. Per fare ciò digitate nella shell di MySQL:
GRANT ALL PRIVILEGES ON nome_db.* TO ‘nome_utente’@'localhost’ IDENTIFIED BY ‘password_utente’ WITH GRANT OPTION;
L'interfaccia phpMyAdmin
Per amministrare i nostri database può essere comoda un'interfaccia grafica raggiungibile da browser. A questo scopo installiamo phpMyAdmin:
# aptitude install phpmyadmin
Durante l'installazione vi verrà chiesto di indicare il web server in esecuzione sulla vostra machina. Indicate apache2:
Web server to reconfigure automatically: <-- apache2
A questo punto lanciate il browser su http://123.45.67.890/phpmyadmin e fate login con le credenziali di root di MySQL inserite poco fa.
Nota È possibile che la pagina di autenticazione di phpmyadmin non venga caricata, in tal caso provare a riavviare manualmente apache. |
Poiché la password di login su phpmyadmin viaggia in chiaro, può essere una buona cosa forzare il servizio phpmyadmin a restare in ascolto solo sul protocollo HTTPS, creando una riscrittura automatica dell'indirizzo HTTP verso il protocollo SSL. Questo può essere agevolmente fatto modificando il file di configurazione di phpmyadmin.
- Fino a Debian Wheezy:
# nano /etc/apache2/conf.d/phpmyadmin.conf
- Da Debian Jessie (Apache 2.4.x):
# nano /etc/phpmyadmin/apache.conf
e aggiungendo all'inizio del file le righe:
<IfModule mod_rewrite.c> <IfModule mod_ssl.c> <Location /phpmyadmin> RewriteEngine on RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}/phpmyadmin [R] </Location> </IfModule> </IfModule> # Il resto del file rimane invariato Alias /phpmyadmin /usr/share/phpmyadmin ...
Da adesso, anche digitando http://123.45.67.890/phpmyadmin, sarete rigirati verso l'equivalente pagina HTTPS.
Apache2: layout di configurazione
Assumendo di aver utilizzato aptitude o apt-get per installare Apache2, spostiamoci nella sua directory di configurazione per dare un occhio a come è strutturata:
# cd /etc/apache2 # ls
sites-available
Questa directory conterrà i file con le configurazioni di ogni sito (conosciuti come virtual hosts) che vorrete servire con Apache. Uno sguardo alla directory:
ls sites-available/ ... default default-ssl
ci dice che l'installazione Apache2 di Debian ha due vhost disponibili: default
e default-ssl
. Notate che la presenza di un virtual host in questa directory non significa che questo sia attivo e visibile dagli utenti; significa solo che sarà disponibile se verrà abilitato.
- Da Debian Jessie (Apache 2.4.x):
ls sites-available/ ... 000-default.conf default-ssl.conf
i due vhost disponibili sono 000-default.conf
e default-ssl.conf
, terminano con estensione .conf e il contenuto va personalizzato secondo le proprie esigenze.
Tutto questo ci porta a...
sites-enabled
Questa directory contiene dei link simbolici ai files dei siti che volete rendere disponibili. Per esempio, su un web server ci possono essere diversi siti pronti per essere pubblicati (configurati nella directory sites-available
), ma solo quelli linkati simbolicamente in questa directory saranno realmente visibili dagli utenti. Diamo uno sguardo alla directory:
# ls -l sites-enabled ... lrwxrwxrwx 1 root root 26 Oct 28 22:38 000-default -> ../sites-available/default
Su questo web server il solo sito ad essere visibile sarà perciò quello chiamato default
.
mods-available
Questa directory contiene i moduli di Apache2 pronti per essere resi disponibili.
mods-enabled
Questa directory, come nel caso dei virtual host, contiene i link simbolici ai moduli effettivamente abilitati sul web server.
a2en e a2dis
Essere buoni amministratori di sistema significa conoscere i comandi per renderci le cose più semplici.
a2dissite
Questo comando cancella il link simbolico di un sito abilitato. Ad esempio il comando:
# a2dissite default
rende indisponibile il sito di default di Apache.
a2ensite
Questo comando serve invece a abilitare un virtual host:
# a2ensite default
rimette le cose a posto, ripristinando il sito di default precedentemente disabilitato.
a2dismod
Questo comando disabilita un modulo di Apache.
a2enmod
Questo comando abilita un modulo di Apache.
Apache2: files di configurazione
ports.conf
È il file che indica ad Apache su quali porte TCP/IP restare in ascolto:
NameVirtualHost *:80 Listen 80 <IfModule mod_ssl.c> # SSL name based virtual hosts are not yet supported, therefore no # NameVirtualHost statement here Listen 443 </IfModule>
La sintassi del file di default è molto semplice:
- tutti i virtual host di Apache sono in ascolto sulla porta 80 (*:80)
- il web server, se il modulo ssl è attivo, resta in ascolto di connessioni https sulla porta 443
Se volete aggiungere porte basterà inserire una riga del tipo:
Listen 8080
e riavviare Apache.
- Da Debian Jessie (Apache 2.4.x):
per evitare di visualizzare l'avviso
Restarting web server: apache2AH00548: NameVirtualHost has no effect and will be removed in the next release /etc/apache2/ports.conf:5
commentare la riga 5 relativa a NameVirtualHost
apache2.conf
È il file di configurazione principale di Apache su Debian. È estremamente ben commentato, ma può valer la pena lo stesso dare un'occhiata alle opzioni di configurazione principali.
Timeout
Default:
Timeout 300
Questa opzione imposta il tempo massimo, in secondi, durante il quale Apache aspetta una richiesta, la processa e le risponde. È impostato deliberatamente su un valore molto alto, ma è possibile ridurlo, portandolo a un sano 45 (o anche meno). Ridurre questo valore può anche aiutare a controbattere gli effetti di un attacco DOS.
KeepAlive
Default:
KeepAlive On
Questo parametro andrebbe lasciato su ON, poiché indica a Apache di mantenere aperta una connessione con il client, in modo che ogni file o immagine di un documento HTML non siano richiesti con una nuova connessione. Di seguito vedremo alcune impostazioni del parametro KeepAlive.
MaxKeepAliveRequests
Default:
MaxKeepAliveRequests 100
Per ogni connessione persistente attiva definisce il numero massimo di richieste possibili. Va tenuto alto per garantire efficienza. Se il vostro sito contiene parecchi javascript, immagini, etc, provate a aumentarlo a 200.
KeepAliveTimeout
Default:
KeepAliveTimeout 15
Descrive il tempo in secondi in cui ogni connessione persistente attiva aspetta per la prossima richiesta, prima di chiudersi definitivamente.
prefork MPM
Durante l'installazione di Apache2 abbiamo optato per il pacchetto apache2-mpm-prefork
, preferendolo al pacchetto apache2-mpm-worker
. Vi rimando alla documentazione ufficiale di Apache2 per le differenze.
Questo parametro definisce il comportamento di Apache2 MPM prefork.
Default:
<IfModule mpm_prefork_module> StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxClients 150 MaxRequestsPerChild 0 </IfModule>
- StartServers: il numero di processi figlio creati all'avvio
- MinSpareServers: il numero minimo di processi figlio inattivi (idle)
- MaxSpareServers: il numero massimo di processi figlio inattivi (idle)
- MaxClients: imposta il numero massimo di richieste contemporanee gestibili da Apache
- MaxRequestsPerChild: imposta quante richieste saranno gestite da un processo figlio prima di terminare. Il valore 0 indica che il processo non termina mai. Modificare questo valore può aiutare la gestione della memoria RAM del server.
ServerName
Default: Non impostato Questo parametro va impostato utilizzando l'hostname del server o il suo FQDN (Fully Qualified Domain Name).
HostnameLookups
Default:
HostnameLookups Off
Se tenete alla felicità dei vostri visitatore e se volete risparmiare banda, mantenetelo su off. Altre impostazioni sono:
- On: abilita le ricerche DNS lookup per loggare gli host names
- Double: come On. In più controlla l'hostname.
ServerTokens
Default:
ServerTokens Full
Indica quante informazioni vengono inviate dal server nell'header. Può essere utile modificare il valore di default per una questione di sicurezza: meno informazioni forniamo sul nostro server, sulla versione di Apache e sui moduli installati, e meno facile sarà trovare un exploit per bucarci.
Le possibili opzioni sono:
- Full
Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny3 with Suhosin-Patch Server at demo
- OS
Apache/2.2.9 (Debian) Server
- Minimal
Apache/2.2.9 Server
- Minor
Apache/2.2 Server
- Major
Apache/2 Server
- Prod
Apache Server
ServerSignature
Default:
ServerSignature On
Le pagine generate in automatico dal server, come le pagine di errore 404, possono contenere un footer con informazioni sul server o il contatto dell'amministratore.
I possibili valori sono:
- Off: non viene aggiunto alcun footer
- On: vengono aggiunte informazioni sul server al livello definito da
ServerTokens
- Email: viene aggiunto anche l'indirizzo email dell'amministratore
Per approfondimenti vedi anche:
Installare un ambiente LAMP: Linux, Apache2, SSL, MySQL, PHP5
Backup di MySQL tramite script
Configurare MySQL per accettare connessioni remote
Guida scritta da: Ferdybassi | Debianized 40% |
Estesa da: | |
Verificata da: | |
Verificare ed estendere la guida | Cos'è una guida Debianized |