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

m
non compatibilità + aggiunto link a guida più aggiornata
m (non compatibilità + aggiunto link a guida più aggiornata)
 
(39 versioni intermedie di 9 utenti non mostrate)
Riga 1: Riga 1:
{{Versioni compatibili|Debian Lenny 5.0<br/>Debian Squeeze<br/>Debian Sid|}}
{{Versioni compatibili|ONLY|Squeeze|Wheezy|Jessie}}
 
{{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 ==
== 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.
Riga 10: Riga 13:
# aptitude install apache2-mpm-prefork apache2-utils libexpat1 apache2-suexec
# aptitude install apache2-mpm-prefork apache2-utils libexpat1 apache2-suexec
</pre>
</pre>
Probabilmente noterete, all'avvio del web server, il messaggio di avvertimento:
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,
Riga 25: Riga 28:
Abilitate alcuni comodi moduli aggiuntivi:
Abilitate alcuni comodi moduli aggiuntivi:
<pre>
<pre>
# apt-get install mod_headers mod_expires
# a2enmod headers
# a2enmod headers
# a2enmod expires
# a2enmod expires
Riga 111: 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 121: Riga 129:
         AllowOverride None
         AllowOverride None
         Options None
         Options 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 128: Riga 142:
         AllowOverride None
         AllowOverride None
         Options None
         Options 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 138: Riga 158:
         Options Indexes MultiViews
         Options Indexes 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>
</VirtualHost>
</VirtualHost>
</pre>
</pre>
'''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:
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>
Riga 148: Riga 196:
</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>
<pre>
# a2ensite default-ssl
# a2ensite default-ssl
</pre>
</pre>
* '''Da Debian Jessie (Apache 2.4.x)''':
<pre>
# a2ensite default-ssl
</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>
Riga 164: Riga 221:
<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 ===
Riga 191: Riga 291:
Scegliete '''solo''' quelli che vi servono e installateli nel solito modo:
Scegliete '''solo''' quelli che vi servono e installateli nel solito modo:
<pre>
<pre>
# aptitude install php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt
# 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 php5-json
</pre>
</pre>
== Installazione di MySQL ==
== Installazione di MySQL ==
L'installazione del RDBM MySQL è semplice:
L'installazione del RDBM MySQL è semplice:
Riga 227: 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.
<br/><br/>
{{Box|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:
<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>
<pre>
# nano /etc/apache2/conf.d/phpmyadmin.conf
# nano /etc/apache2/conf.d/phpmyadmin.conf
</pre>
* '''Da Debian Jessie (Apache 2.4.x)''':
<pre>
# nano /etc/phpmyadmin/apache.conf
</pre>
</pre>
e aggiungendo all'inizio del file le righe:
e aggiungendo all'inizio del file le righe:
Riga 264: Riga 369:
</pre>
</pre>
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>
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 ===
=== 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:
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:
Riga 316: Riga 432:
</pre>
</pre>
e riavviare Apache.
e riavviare Apache.
* '''Da Debian Jessie (Apache 2.4.x)''':
per evitare di visualizzare l'avviso
<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 ===
=== apache2.conf ===
Riga 419: Riga 538:
[[Backup di MySQL tramite script]]<br>
[[Backup di MySQL tramite script]]<br>
[[Configurare MySQL per accettare connessioni remote]]<br>
[[Configurare MySQL per accettare connessioni remote]]<br>
<br/>
 
<br/>
{{Autori
: [[Utente:Ferdybassi|Ferdybassi]]
|Autore = [[Utente:Ferdybassi|Ferdybassi]]
----
|Verificata_da =
: [[Utente:marzolinus|marzolinus]]
|Numero_revisori = 1
|Estesa_da =
: [[Utente:Selky|Selky]]
}}
 
[[Categoria:Web server]]
[[Categoria:Web server]]
[[Categoria:Database server]]
[[Categoria:Database server]]
[[Categoria:PHP]]
[[Categoria:PHP]]
3 581

contributi