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:
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"
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/