Salta al contenuto principale

Come Installare Apache, PHP e MySQL su Ubuntu (LAMPP)

Come Installare Apache, PHP e MySQL su Ubuntu (LAMPP)

Ecco una semplice guida per l'installazione di un server LAMP su un sistema locale Ubuntu. L'obiettivo di questo tutorial è quello di creare e testare sul computer locale vari siti che chiameremo "sito1" "sito2" ecc.

Con il termine LAMP si intente Linux, Apache2, MySQL 5 e PHP 5.

Per istallare il tutto basta dare il semplice comando da terminale:

sudo apt-get install lamp-server^

Importante il segno ^ dopo la parola lamp-server che indica che si sta installanso un metapacchetto.

Durante l'istallazione, oltre alla password dell'utente principale di Ubuntu occorrerà indicare:

  • la password di MySQL per l'utente root
  • tipologia di server a cui deve interfacciarsi phpMyAdmin: selezionare Apache 2.

Al termine dell'istallazione abiamo a disposizione:

  • un web server Apache 2
  • il database server MySQL
  • PHP 5 con il modulo per Apache e la libreria gd

Il sistema è pronto e funzionante. Consiglio comunque di fare le modifiche descritte sotto.

Per lavorare al meglio, non può mancare phpMyAdmin che consente una comoda destione del database.

sudo apt-get install phpmyadmin

Durante l'istallazione, verrà chiesta la password precedentemente assegnata all'utente root

 

Modifica della DocumentRoot

Apache normalmente va a leggere i file che compongono il sito nella cartella /var/www. Questa posizione viene deefinita DocumentRoot

È preferibile spostare la DocumentRoot nella propria cartella home per semplificare la gestione dei permessi sui file. Altri vantaggi sono una migliore gestione del file system ed una più efficiente procedura di salvataggio dei dati in caso di crash o backup del sistema.

Ipotizziamo che il nome del nostro utente che accede a Ubuntu sia "mioutente". Nella nostra cartella home (/home/mioutente) creiamo la cartella www. Volendo testare più siti, converrà creare la varie cartelle "sito1", "sito2" dove verranno copiati i vari file relativi al progetto che si vuole testare.

Per Apache2 "sito", è una configurazione che il webserver andrà a leggere per sapere dove trovare i file da elaborare che si trova in in /etc/apache2/sites-available. Dopo l'installazione, c'è solamente un sito disponibile, chiamato default, ma possono essere definite più configurazioni contemporaneamente, attivando di volta in volta soltanto quella necessaria.

Quello che volgiamo fare è creare un nuovo sito (miosito1) e indicare che la DocumentRoot si trova in
/home/utente/www/sito1 
e quindi attivarlo su Apache2.

Per creare il nuovo sito: 

1) Innanzitutto copiamo il sito di default come punto di partenza e lo chiamiamo miosito1

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/miosito1.conf

2) Modifichiamo la nuova configurazione con un editor di testo:

sudo gedit /etc/apache2/sites-available/miosito1.conf

e indichiamo dive si trova la cartella che contenente il "sito1"

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /home/utente/www/sito1
        <Directory /home/janhu/www/admin2/>
                AllowOverride All
                Options -Indexes +FollowSymLinks +MultiViews
                Require all granted
        </Directory>

    ErrorLog /var/log/apache2/janhu.err
    LogLevel warn
    CustomLog /var/log/apache2/janhu.log combined

    ServerSignature Off

</VirtualHost>

Salviamo il file.

3) Per disattivare il vecchio sito (default) ed attivare quello nuovo (miosito1) Ubuntu mette a disposizione due comodissimi comandi, che sono rispettivamente a2dissite e a2ensite. Il primo comando a2dissite cancella il link simbolico di un sito abilitato mentre il secondo crea il link simbolico al nuovo sito.

Da terminale diamo il comando:

sudo a2dissite 000-default && sudo a2ensite miosito1

Per rendere effettive le modifiche occorre riavviare Apache2:

sudo service apache2 reload

 

Errori

apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName

editare il file vuoto httpd.conf con il comando

sudo gedit /etc/apache2/httpd.conf

e inserire la riga

ServerName localhost

 

Attivare il sito2

Per attivare il sito2 occorre ripetere i passaggi 1 e 2, sosteituendo sito1 con sito2.

Infine da terminale dare i comandi

sudo a2dissite miosito1 && sudo a2ensite miosito2
sudo service apache2 restart

 

Attivare i Clean URLs

1)  Da terminale dare il comando

sudo a2enmod rewrite

2) Per rendere effettiva la configurazione dare

sudo apache2ctl -M

3) Verificare che nell'elenco compaia

rewrite_module (shared)

4) Modifichiamo la configurazione creata in precedenza nel file "sito1" con un editor di testo:

sudo gedit /etc/apache2/sites-available/miosito1

e modifichiamo "AllowOverride None" in "AllowOverride ALL"

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /home/mioutente/www/sito1
    <Directory />
        Options FollowSymLinks
        AllowOverride ALL
    </Directory>
    <Directory /home/mioutente/www/sito1>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride ALL
        Order allow,deny
        allow from all
    </Directory>

Salviamo il file.

 

Infine da terminale dare il comando

sudo service apache2 restart

 

PhpMyAdmin

Per utilizzare PhpMyAdmin inserire nel browser l'indirizzo

http://localhost/phpmyadmin/

 

Nel caso in cui si ha errore occorre 

1) editare il file apache2.conf

sudo gedit /etc/apache2/apache2.conf

2) inserire la riga

Include /etc/phpmyadmin/apache.conf

3) restartare il server Apache

sudo service apache2 restart

 

Digitando l'indirizzo http://localhost/phpmyadmin si ha errore "404 Pagin anon trovata"

In questo caso la cosa più semplice è reinstallare PhpMyAdmin con il comando

sudo dpkg-reconfigure -plow phpmyadmin

E rispondere alle domande di configurazione:

Installare il database di phpmyadmin? <si>
Installare il database di phpmyadmin? socket unix
Installare il database di phpmyadmin? root
Installare il database di phpmyadmin? [scegliere password]
Installare il database di phpmyadmin? phpmyadmin
Server web da riconfigurare automaticamente: apache2

A questo punto è possibile utilizzare PhpMyAdmin dall'indirizzo http://localhost/phpmyadmin/

 

Modificare la dimensione dei file di caricamento per phpmyadmin

Per incrementare la dimensione dei file da caricare a 100MB occore modificare il file php.ini con il comando

sudo gedit /etc/php5/apache2/php.ini

modificando

post_max_size = 8M
upload_max_filesize = 2M
max_execution_time = 30

a

post_max_size = 100M
upload_max_filesize = 100M
max_execution_time = 300

e restartando Apache con

sudo service apache2 restart

 

Visualizzare gli errori di php

Per visualizzare in fase di testing gli errori php occorre editare ancora il file

sudo gedit /etc/php/7.0/apache2/php.ini

e impostare

error_reporting = E_ALL | E_STRICT

display_errors = On

 

Fatal error: Allowed memory size of X bytes exhausted (tried to allocate Y bytes)

In questo caso occorre aumentare la memoria. anche in questo caso bisogna modificare il file php.ini con il comando

sudo gedit /etc/php/7.0/apache2/php.ini

modificando

memory_limit = 215M

e restartando Apache con

sudo service apache2 restart

 

Fatal error: Maximum execution time of 300 seconds exceeded in /usr/share/phpmyadmin/libraries/import/sql.php

Aprire il file

sudo gedit /usr/share/phpmyadmin/setup/frames/config.inc.php

e inserire la riga

$cfg['ExecTimeLimit'] = 0;

in modo da non avere limiti di tempo nell'esecuzione dei comandi

 

 

Hosted Pci requires the PHP cURL library.

Dare da terminale il comando

sudo dpkg-reconfigure php5-curl

e restartando Apache con

sudo service apache2 restart

 

PDOException: SQLSTATE[HY000]: General error: 1205 Lock wait timeout exceeded; try restarting transaction

Occorre aumentare il valore di timeout  per InnoDB. per fare questo occorre editare

sudo gedit /etc/mysql/my.cnf

e inserire le seguenti righe:

[mysqld]
innodb_lock_wait_timeout=120

infine restartare il tutto con

sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start

 

Aggiornamento per Ubuntu 14.04

Vedere http://www.distrojunky.com/howto/setting-up-apache-virtual-hosts-in-ubuntu-14-04/