Installare un server lamp su Linux Ubuntu

Chi testa in locale (nel proprio pc) i siti realizzati in php aprezzerà sicuramente la velocità di un server LAMP (Linux, Apache, Mysql, Php). Nella creazione e sviluppo di siti web è preferibile operare in locale e trasferire il tutto in rete nel momento in cui il sito è completato. Ciò permette di avere una maggior velocità di quella che si avrebbe operando sul server remoto. Nel server remoto dovremmo trasferire i file ad ogni ogni modifica e questo renderebbe lento il nostro lavoro.

Chi usa Winwods e vuole provare la potenza di un server LAMP installato su Linux Ubuntu, ma non vuole fare modiche alle partizioni, può utilizzare Wubi. Wubi è un programmino che installerà Ubuntu all'interno di Windows come fosse un'applicazione, permettendo di rimuoverlo come qualsiasi altro programma in Windows.

Installiamo il server

Per installare un server LAMP in Ubuntu come prima cosa apriamo il terminale:

Terminale Ubuntu

Poi copiamo ed incolliamo nel terminale il comando:
sudo apt-get install apache2 apache2-mpm-prefork php5-mysql mysql-server php5 libapache2-mod-php5 php5-cgi php5-gd php5-cli phpmyadmin

Incollare su terminale ubuntu

Premiamo invio ed inseriamo la nostra password di root (quella che usiamo per accedere ad Ubuntu). Premiamo di nuovo invio e comincerà il download e l'installazione dei pacchetti necessari.

Durante l’installazione ci verrà chiesto di fornire la password di root per MySQL che inseriremmo due volte. Con questi dati di login potremmo poi accedere a phpMyAdmin per gestire i nostri database.

Nella finestra dove viene chiesto il tipo di server web da configurare automaticamente per eseguire PhpMyAdmin lasciamo apache2.

Configurare PhpMyAdmin Nella finestra successiva lasciamo l'impostazione <Sì> ed in quella che segue inseriamo una password come amministratore del database che ci servirà ad accedere a PhpMyAdmin.

Configurare PhpMyAdmin

Completata l'installazione, se tutto è andato nel verso giusto, aprendo il nostro browser e digitando l’indirizzo: http://localhost dovrebbe apparire:

test server ubuntu

Completare la configurazione di PhpMyAdmin

Andando all'indirizzo http://localhost/phpmyadmin dovrebbe apparire la finestra di accesso a PhpMyAdmin per la gestione del database. Se questo non avviene è sufficiente fare una semplice modifica al file apache2.conf.

Apriamo il terminale e digitiamo: sudo gedit /etc/apache2/apache2.conf

Inseriamo la nostra password di root e si aprirà il file apache2.conf, in fondo aggiungiamo (o modifichiamo come segue se già la voce è già presente) :

# Enable PHPMyAdmin
Include /etc/phpmyadmin/apache.conf

Modifica apache2.conf

Quando fatto, riavviamo apache dal terminale con il comando: sudo /etc/init.d/apache2 restart

Ora andando all'indirizzo http://localhost/phpmyadmin potremo accedere alla gestione database digitando root come nome utente e, come password, la password che abbiamo scelto precedentemente.

Accedere a PhpMyAdmin

Attivare il mod rewrite

Il mod rewrite serve per il vostro server apache a far si che le pagine dinamiche (in questo caso in php) cambino totalmente estensione e sembrino pagine html statiche. Questa trasformazione ha lo scopo di far si che la vostra pagina venga assimilata meglio dai motori di ricerca. In locale questa modifica normalmente non serve, però può capitare che moduli aggiuntivi del vostro CMS preferito lo richiedano, quindi è meglio attivarlo.

Prima di tutto lanciamo nel terminale questo comando: sudo a2enmod rewrite
Inseriamo la password di root e, se tutto è andato bene, apparirà un messaggio come segue:

attivare mod rewrite

Ora riavviamo apache dal terminale con il comando: sudo /etc/init.d/apache2 restart

Continuiamo le modifiche necessarie e digitiamo sulla finestra del terminale il comando: cd /etc/apache2/sites-enabled
Poi il comando: sudo gedit 000-default

Nel file che si aprirà, sostituiamo:

Options FollowSymLinks
AllowOverride None

Con:

Options All
AllowOverride All

Poi sostituiamo:

Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all

Con:

Options All
AllowOverride All
Order allow,deny
allow from all

Salviamo il file e riavviamo apache con: sudo /etc/init.d/apache2 restart

Ora il rewrite è attivo e funzionante.

Aggiungere host virtuali al server LAMP

Ora il nostro server è completo e funzionante, ma di default la cartella contenente il nostro sito (/var/www) è accessibile in scritta solamente avendo i permessi di root. Questa cosa, mentre è fondamentale per un server in rete, è piuttosto scomoda per lavorare in locale per dei semplici test.

Inoltre potremmo aver bisogno, per diversi motivi, di poter lavorare su di una serie di siti separati. Ognuno raggiungibile digitando su browser non localhost/nomesito ma ad esempio nomestito1.test o nomestito2.test, quindi esattamente come se il sito si trovasse in un server remoto.

Per fare ciò, come prima cosa apriamo la nostra Cartella Home e creiamo una cartella dove ospitare i mostri siti es. www ed inseriamo una cartella per ogni sito che ci interessa:

cartelle siti

i nomi test.sito1.it ecc. sono giusto d'esempio essere qualsiasi cosa si potrebbe anche scivere nomedelsito.test

Ora da terminale digitiamo: sudo gedit /etc/hosts
Si aprirà il file hosts in modifica dove inseriremo i nomi dei siti virtuali che vogliamo creare come nell'immagine seguente:

aggiungere dati host

In pratica abbiamo aggiunto un IP 127.0.0.1 più il nome del'host virtuale che volgiamo attivare, per ognuno dei siti che vogliamo gestire.

A questo punto dobbiamo editare un file di configurazione di Apache, per cui digitiamo in un terminale: sudo gedit /etc/apache2/httpd.conf

Nel file che si aprirà, cambiando nomeutente con il vostro ed i nomi delle cartelle con le vostre (sito1.test ecc.), scriviamo (basandoci sui dati impostati negli esempi sopra):

###cartella www
<VirtualHost *:80>
DocumentRoot /home/nomeutente/www
ServerName localhost
</VirtualHost>

<Directory /home/nomeutente/www>
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Order allow,deny
Allow from all
</Directory>

###test.sito1.it
<VirtualHost *:80>
DocumentRoot /home/nomeutente/www/test.sito1.it
ServerName sito1.test
</VirtualHost>

<Directory /home/nomeutente/www/test.sito1.it>
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Order allow,deny
Allow from all
</Directory>

###sito test.sito2.it
<VirtualHost *:80>
DocumentRoot /home/nomeutente/www/test.sito2.it
ServerName sito2.
test
</VirtualHost>

<Directory /home/nomeutente/www/test.sito2.it>
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Order allow,deny
Allow from all
</Directory>

###sito test.sito3.it
<VirtualHost *:80>
DocumentRoot /home/nomeutente/www/test.sito3.it
ServerName sito3.
test
</VirtualHost>

<Directory /home/nomeutente/www/test.sito3.it>
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Order allow,deny
Allow from all
</Directory>

Riavviamo Apache da terminale con il comando: sudo /etc/init.d/apache2 restart

Cremiamo un file html con scritto Funziona che inseriremo nelle cartelle che volgiamo testare, poi apriamo il browser e digitiamo l'indirizzo di uno dei siti locali che abbiamo appena attivato, ad esempio test.sito1.it e:

test sito

Modificare il file php.ini

Bene, ora abbiamo tutto quello che ci serve per testare i nostri siti in locale. Potrebbe però essere necessario modificare il file php.ini per cambiare alcuni parametri.

Il comando da terminale per modificare il file php.ini è: sudo gedit /etc/php5/apache2/php.ini

Di seguito alcune impostazioni consigliate:

Upload_max_filesize: la dimensione massima file che si possono importare (es database):
upload_max_filesize = 24M
Questo parametro è dipendente da un'altro parametro: post_max_size, il quale imposta la massima dimensione di dati che può essere spedita tramita il metodo "post", dovete configurarla con la stessa dimesione dell'upload_max_filesize, quindi cambiate questa configurazione in:
post_max_size = 24M

Max_execution_time: se dovete fare upload che impiegano molto tempo o elaborare query importanti impostate queste impostazioni a:
max_execution_time = 300

Memory_limit: se avete errori riguardo la massima memoria da abilitare cambiate questo parametro:
memory_limit = 32M
Utilizzando CMS con impostazioni che hanno forti richieste di memoria è meglio aumentarla ulteriormente. Ad esempio Drupal con Ubercart per lavorare bene richiede almeno 64M di memory limit. Impostando memory_limit = -1 la memoria viene settata ad infinito ovvero tutta la ram disponibile.

Quando fatto ricordiamoci di riavviare apache con il comando: sudo /etc/init.d/apache2 restart

Blog: 
LampUbuntu

Commenti

Ciao,
ho già chiesto aiuto nella sezione contatti, ma forse non va bene.
Io ho installato ubuntu 9.04, ed il primo problema è come avvio lamp?
Secondo ieri potevo raggiungere http://localhost/ dal mio browser ed avere It works ! oggi no.
Qualcuno può dirmi cosa fare ?
Grazie

lamp dovrebbe essere attivo all'avvio di Ubuntu, ad ogni modo prova con
sudo /etc/init.d/mysql start
(per avviare MySql) e
sudo /etc/init.d/apache2 start
(per avviare Apache)

Ottima guida, ho risolto un paio degli errori che avevo fatto durante l'installazione.
Premetto avevo utilizzato il metodo descritto in FCM 22. Però si piantato l'installazione durante mysql. Ora dopo aver effettuato la modifica a apache.cof su http://localhost/phpmyadmin trovo la pagina di login... ma non so perchè le pasword che avevo inserito non funziona, come posso rintracciare la pasword? o a limite inserirne una nuova?
Omar

La password è nel file config-db.php che si trova in /etc/phpmyadmin.
Puoi accedervi tramite il comando sudo gedit /etc/phpmyadmin/config-db.php

allora ragazzi innanzi tutto mi presento sono Luigi,oggi mi sono deciso di installare magento e creare il mio sito e-commerce, leggendo un pò di post ed i vari problemi con windowz vista, ho deciso di installare sul mio portatile ubuntu che a detta di tutti non dava problemi, ma siccome la fortuna è cieca e la sfiga invece ci vede benissimo ho subito risocntrato dei problemi.

Io mi blocco qui e non so cosa fare:

*
o Path “/var/www/magento/app/etc” must be writable
o Path “/var/www/magento/var” must be writable
o Path “/var/www/magento/media” must be writable

non so come uscirne fuori

installato ubuntu
creato database
installazione in locale

se per favore qualcuno mi aiuta

Grazie a tutti

Questo errore non lo conosco, buttandola li sembra un errore di memory limit, prova ad impostarlo a memory_limit = -1 ovvero tutta la ram disponibile. Vedi sopra come fare.

Se mi sono sbagliato e trovi la soluzione magari postala qui, potrebbe essere utile a qualcun altro :-)

tu sai un metodo per installare magento? non so più dove andare a sbattere la testa e pensare che avevo scelto di installare ubuntu proprio per questo

Di solito referisco la soluzione Drupal con il modulo Ubercart.

Ad ogni modo per curiosità ho provato ad installare l'ultima versione ed è andato tutto liscio.

L'unica cosa che ho dovuto fare è installare cURL con:
sudo apt-get install curl libcurl3 libcurl3-dev php5-curl
e riavviare apache.

Ho semplicemente seguito tutti i passi sopra elencati per installare il server, compresa la creazione degli host virtuali.
Ho scelto un host vistuale per magento(magento.test),
creato un database chiamandolo magento,
scaricato e dezippato i file,
cambiato i permessi in blocco di tutti i file in modo che fossero in lettura-scrittura,
messo in www/magento.test i file di magento ed avviato l'installazione.
Ad un certo punto mi ha chiesto di installare curl e lo ho fatto ed i resto è andato tutto liscio.

ciao, bella guida, complimenti.
posso chiederti dove in che cartella si installa joomla? ho letto in giro ma non ne vengo a capo!
inoltre dando http://test.miosito.it mi restituisce
index of con l'elenco dei file invece che aprirmi il contenuto del file html di prova. dove sbaglio?
grazie e ciao
mauro

mi correggo da solo, ho installato joomla nella cartella www che hai fatto creare nella home. è corretto, o avrei dovuto installare dentro test.miosito.it? in ogni caso ho installato joomla e lo lancio digitando http://localhost/joomla, ma non mi consente di caricare template nuovo, dandomi come errore "Si sono verificati degli errori durante il caricamento di questo file nel server".
in cosa sbaglio?
grazie
mauro

ciao, dopo verifiche e correzioni, il risultato è:

* JFTP::connect: Could not connect to host "127.0.0.1" on port 21
* JClientHelper::setCredentialsFromRequest failed

mi sembra di intuire che non mi fa connettere al server.
la password è giusta, ho controllato con sudo gedit /etc/phpmyadmin/config-db.php.

per chiarezza, i dati di login sono gli stessi della pagina http://localhost/phpmyadmin/, giusto?
avrò sbagliato il percorso?

Dunque...
Da quello che scrivi credo ci sia qualcosa di errato nel seguire i passi sopra elencati.

La teoria base è che tu hai un unico IP "127.0.0.1" al quale associ una serie di "siti" che hanno lo stesso IP ma sono in un percorso differente.

Quanto elencato nel tutorial ha lo scopo di poter avere diversi siti in locale da testare.
DocumentRoot /home/nomeutente/www/test.sito1.it e si riferiscono al il percorso della cartella che non deve per forza chiamarsi test.sito1.it

ServerName test.sito1.it potrebbe essere definito come l'url del sito.

Quindi, ipotiziamo che il tuo sito reale sia raggiungibile all'url www . pincopallino . it e tu vuoi averne una copia o più in locale dove poter fare delle prove.

Prima crei una cartella in www (es. pincopallino)

Metti i file necessari al sito dentro la cartella e poi aggiungi i dati per l'url del sito nel file host che potrebbe essere ad esempio pincopallino.test .

Per finire aggiungi i dati in httpd.conf che, in base all'esempio appena fatto sarebbero:

###pincopallino (oppure pincopallino.test, non cambia nulla serve solo per capire a cosa ti riferisci)

DocumentRoot /home/nomeutente/www/pincopallino
ServerName pincopallino.test

Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Order allow,deny
Allow from all

grazie per la risposta, adesso controllo ma slavo errori dovrei aver fatto così.
adesso sotto www ho due cartelle, joomla in cui ho copiato tutto e una (vuota ) per un altro sito.
quindi se da brower digito semplicemente joomla, parte correttamente
per inciso il template l'ho risolto copiandolo nella cartella template senza usare la procedura di joomla e così funziona.
un'altra cosa cosa, quando do i comando ad apache di restart mi restituisce questo.
"waiting apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName"

è un problema?

Non ho mai avuto quell'errore ma guardando questo sito http://mohamedaslam.com/how-to-fix-apache-could-not-reliably-determine-t...

L'errore sembra dato dal fatto che non c'è indicato ServerName localhost nell'httpd.conf

Hai inserito, come prima parte dell'httpd.conf quanto segue?

###cartella www
<VirtualHost *:80>
DocumentRoot /home/nomeutente/www
ServerName localhost
</VirtualHost>

<Directory /home/nomeutente/www>
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Order allow,deny
Allow from all
</Directory>

si, di nuovo controllato. per sicurezza dopo VirtualHost e prima di*, c'è uno spazio? se si tutto uguale.
nel link che mi ha così gentilmente segnalato, dice però di inserire solo
"ServerName localhost" senza tutto il resto

Sì va inserito esattamente come scritto.
Lui dice di inserirlo in quel modo ma non ha una serie di virtual host attivi.
Onestamente io non sono un esperto di server, conosco giusto quello che mi serve. Quanto ho scritto nel tutorial è frutto di ore di ricerca e test per avere un sistema funzionante come mi serviva.

Nei vari blog ho trovato vari pezzetti frammentati su come risolvere uno specifico problema, molti dei quali mi hanno procurato solo guai.
Così ho messo giù questa guida con le cose che ho trovato funzionanti.
Io stesso la uso ogni volta che mi serve e fino ad ora non ho mai riscontrato il problema che hai segnalato.

Ad ogni modo se i siti funzionano, visto che il tutto serve solo per le prove in locale, io non mi porrei troppi problemi.

Se comunque trovi una soluzione fammi sapere che la aggiungo al tutorial :-)

ok grazie, si aparentemente funziona e il fatto di avere come risposta a localhost l'elenco dei siti non è scomodo, però è mi piacerebbe capire.
mi verrebbe da disinstaller tutto e rifare, ma temo peggiorare la situazione.
vedremo.
grazie comunque
ciao

Chiaro, preciso, conciso e tutto funzionante! E' la prima volta che mi capita di impostare tutto al primo tentativo. Grazie!
Solo che, per evitare spam, conviene evitare questo CAPTCHA così complicato per cui poi bisogna inventare un software per interpretarlo invece che cecarsi e rompersi le palle a tentare di indovinare!!!!

Grazie per la segnalazione, ho recentemente fatto un aggiornamento che ha modificato le impostazioni del CAPTCHA e da loggato non lo vedo...

Ora è leggibile :-)

Salve, solo per segnalare alcune piccole correzioni.
In particolare il comando '..cd /etc/apache2/sites-enabled
Poi il comando: sudo gedit 000-default..'
Sarebbe piu' pulito con '...cd /etc/apache2/sites-available
Poi il comando: sudo gedit default...'

lo stesso dicasi per i virtual host, e' piu' pulito (e facilemnte gestibile) creare tanti file sotto /etc/apache2/sites-available/ magari come copia di 'default' opportunamente modificato. Poi dare il comando 'a2ensite '

Esempio:
virtualhost: test.miosito.it
comandi:
cd /etc/apache2/sites-available
cp default test.miosito.it
gedit test.miosito.it
... modifiche al virtualhost come da guida...
en2site test.miosito.it
/etc/init.d/apache2 restart - oppure per lucid - service apache2 restart

Per il resto e' una ottima guida...

Ciao grazie per l'ottima guida...ho fatto tutto e se provo ad aprire una pagina html ad esempio questa file:///home/massimo/www/simpleway.it/Funziona.html funziona.

Volevo installare wordpress ma non mi apre le pagine .php invece mi apre il salva file nel browser...come posso fare?

grazie...

Da ciò che scrivi sembra che invece di andare in http://localhost/ clicchi direttamente sopra il file.

Se hai impostato i correttamente il virtual host dovresti raggiungere le pagine dahttp://simpleway.it/Funziona.html

Fra parentesi il .it è sconsigliato, non raggiungeresti più simpleway.it in remoto (senza www). Meglio usare un .test o altra estensione inventata oppure (come nel tuo caso) scrivere test.simpleway.it.

ciao, ho istallato tutto con molta semplicità e con la pagina di prova funziona. io ho creato la cartella "siti" con percorso /home/janca/siti..ho configurato il file hosts così:

127.0.0.1 localhost
127.0.0.1 sitoprova

# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

e il file httpd.conf così:

###cartella siti

DocumentRoot /home/janca/siti
ServerName localhost

Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Order allow,deny
Allow from all

###sitoprova

DocumentRoot /home/janca/siti/sitoprova
ServerName sitoprova

Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Order allow,deny
Allow from all

solo che se adesso vado sul browser e scrivo localhost/sitoprova/index.html mi da questo errore:

Forbidden

You don't have permission to access /fcpalazzi/index.html on this server.

Apache/2.2.17 (Ubuntu) Server at localhost Port 80

dov'è che sbaglio??la cosa è strana perchè inizialmente andava tutto, poi ho fatto altre attività spento il pc e adesso non funziona più..devo modificare qualche permesso?dove?