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 test.nomestito1.it o test.nomestito2.it, 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

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 (test.sito1.it ecc.), scriviamo:

###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 test.sito1.it
</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 test.sito2.it
</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 test.sito3.it
</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

Tags:
 

Commenti

Opzioni visualizzazione commenti

Selezionare il modo preferito di visualizzare i commenti e cliccare "Salva impostazioni" per attivare le modifiche.

Bella guida semplice, chiara

Bella guida semplice, chiara e completa.

complimenti

Ottima guida, dettagliata e essenziale allo stesso momento. Veramente spiegata bene!

Veramente una meraviglia! E'

Veramente una meraviglia!
E' filato tutto liscio come l'olio.
Grazie, complimenti

complimenti, i passaggi sono

complimenti, i passaggi sono abbastanza chiari.

Grazie

Grazie a tutti voi :-)

avviare lamp

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

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)

Help pasword

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

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

Ottima

semplice, chiara e molto utile. Grazie

grazie

grazie bella guida!

Spero nel vostro aiuto per questi 3 errori. Grazie

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

Devi cambiare i permessi di

Devi cambiare i permessi di lettura-scrittura alle cartelle indicate.

risolto ma adesso ho questo di problema

Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 5 bytes) in /var/www/magento/lib/Zend/Db/Statement/Pdo.php on line 232

Questo errore non lo conosco,

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 :-)

ancora niente

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

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.

mi dai i passaggi

mi dai i passaggi di come hai fatto e di cosa hai scaricato? ti mando la mia email?

Ho semplicemente seguito

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.

come posso cancellare

come posso cancellare tutto e rifare l'installazione

Non credo tu debba rifare

Non credo tu debba rifare l'installazione, hai già provato ad aumentare il memory limit?
Vedi qui: http://www.tech-recipes.com/rx/777/solve-php-fatal-error-allowed-memory-...

index of

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

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

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

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,

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

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

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

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

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

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,

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

Ora è leggibile :-)

Piccole correzioni

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...

Grazie per le indicazioni ;-)

Grazie per le indicazioni ;-)

Invia nuovo commento

  • Gli indirizzi delle pagine web e delle e-mail vengono trasformati automaticamente in link.
  • Tag HTML consentiti: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Righe e paragrafi vanno a capo automaticamente.

Maggiori informazioni sulle opzioni di formattazione.

CAPTCHA
Questa domanda viene fatta per prevenire l'invio automatico di spam.
CAPTCHA immagine
Enter the characters shown in the image.