Creare una macchina virtuale di sviluppo con Ubuntu e LAMP

Dopo più di un mese torno a scrivere un articolo sul mio blog! Oggi vi spiegherò come creare una macchina virtuale di sviluppo con Ubuntu e LAMP (o quello che volete).

In realtà non sono un grande esperto, ma siccome ne avevo bisogno ci ho perso un po’ di tempo e penso di essere arrivato ad una soluzione abbastanza buona.

Di cosa abbiamo bisogno?

  • Un computer (ovviamente)
  • VirtualBox (io ho usato VirtualBox, non so come si può fare anche con VMWare o altri)
  • Ubuntu Server (o qualunque altra distribuzione)
  • Un pizzico di buona volontà (come sempre)

Ovviamente, se non usate VirtualBox e Ubuntu, alcuni passaggi saranno diversi.

Primo passo: preparazione della macchina virtuale

Prima di tutto scarichiamo VirtualBox da qui e installiamolo. Subito dopo l’installazione avviamolo e clicchiamo su “Nuova” per creare una nuova Macchina Virtuale.

screenshot1

Diamo un nome alla nostra macchina virtuale e selezioniamo “Linux” come Tipo e “Ubuntu” come Versione.

screenshot2

Scegliamo 512 MB di RAM (dovrebbero bastare tranquillamente) e successivamente scegliamo “Crea subito un disco virtuale” e clicchiamo su “Crea“.

screenshot3

 

Scegliamo VDI come tipo di file del disco fisso, Allocato dinamicamente come tipo di archiviazione su disco fisso e 8 GB come dimensione del disco (anche questi dovrebbero essere sufficienti).

Infine clicchiamo su Crea e troveremo sulla destra la nostra macchina virtuale.

Secondo passo: installazione di Ubuntu

Dopo aver preparato la macchina virtuale, selezioniamola e clicchiamo su “Impostazioni“. Andiamo in Archiviazione e sulla destra troveremo l’attributo “Lettore CD/DVD“. Clicchiamo sull’iconcina col dischetto accanto e selezioniamo un file di disco CD/DVD virtuale (in particolare, selezioniamo l’ISO di Ubuntu).

Avviamo la macchina virtuale e installiamo Ubuntu come tutti sappiamo fare (se non sapete come farlo cercatevelo su Google :D ).

Dopo aver installato Ubuntu, installiamo LAMP come tutti sappiamo fare.

Terzo passo: inoltro delle porte e condivisione delle cartelle

Per poter utilizzare la macchina virtuale come un webserver accessibile solo dal vostro PC, dobbiamo inoltrare la porta 80 del proprio PC sulla porta 80 della macchina virtuale.

Apriamo quindi le impostazioni della macchina virtuale e selezioniamo Rete. Clicchiamo su Impostazioni avanzate e Inoltro delle porte. Creiamo una nuova regola cliccando sull’iconcina col + a destra e scriviamo:

  • http” come nome della regola
  • TCP” come protocollo
  • 80” come porta dell’host e porta del guest

Adesso, se avviamo la macchina virtuale e sul browser digitiamo “localhost” verremo reindirizzati alla pagina “It works!” di Apache.

Bene, tutto funziona. Ma possiamo migliorare le cose: possiamo condividere la nostra cartella di sviluppo con la macchina virtuale e fare in modo che Apache utilizzi quella cartella.

screenshot4

Andiamo quindi di nuovo nelle impostazioni della macchina virtuale e andiamo inCartelle condivise. Nel mio caso creerò una nuova cartella condivisa selezionando la cartella workspace di Eclipse e chiamandola workspace anche sulla macchina virtuale.

Apriamo la macchina virtuale e installiamo le VirtualBox Guest Additions, selezionando dal menù a tendina “Dispositivi” la voce “Installa Guest Additions” e digitando i seguenti comandi sul terminale:

sudo apt-get install linux-headers-$(uname -r)
sudo apt-get install dkms
sudo mount /dev/cdrom /media/cdrom
sudo sh /media/cdrom/VBoxLinuxAdditions.run

La nostra cartella condivisa sarà montata nel percorso /media/sfworkspace (o sfpippose l’avete chiamata pippo).

In seguito, aggiungiamo l’utente www-data al gruppo vboxsf per dargli i permessi sulla cartella condivisa:

sudo usermod -aG vboxsf www-data

E a che ci siamo aggiungiamo anche noi stessi:

sudo usermod -aG vboxsf claudio

Quarto passo: configurazione di Apache

Adesso facciamo due modifiche al file httpd.conf di Apache:

  1. Assegnamo un ServerName ad Apache
  2. Settiamo ad off il campo EnableSendfile (per evitare che Apache mandi i file non aggiornati)

Apriamo quindi il file che di solito si trova su /etc/apache2/httpd.conf e modifichiamo (o aggiungiamo):

ServerName ubuntuEnableSendfile off

E quindi possiamo anche creare un virtual host con la nostra cartella condivisa comeDocumentRoot. Nel mio caso chiamerò il mio server dev.dev, quindi creerò il file/etc/apache2/sites-available/dev.dev e scriverò dentro:

<VirtualHost *:80>

ServerName dev.dev

DocumentRoot /media/sfworkspace

</VirtualHost>

Adesso abilitiamo il sito e riavviamo Apache con i seguenti comandi:

sudo a2ensite dev.dev
sudo service apache2 restart

Infine modifichiamo il nostro file hosts (su wikipedia c’è una tabella con i path di tutti i sistemi operativi) per reindirizzare il dominio dev.dev al nostro indirizzo IP locale (127.0.0.1)

screenshot5