lunedì 22 giugno 2009

Come creare un server web LAMP partendo da zero

Per creare un web server completo delle migliori funzionalità, cioè anche PHP e gestione di database, può essere perfetto un sistema LAMP (Linux Apache MySQL PHP).

Questa piccola guida è adatta anche a chi prova a muovere i suoi primi passi in questo campo, o non è pratico di Linux.

Se ne può creare uno completamente funzionante, affidabile e con poca spesa (nel mio caso solo 30€), il primo requisito è:

- Abbonamento adsl flat
Senza esso non conviene neppure iniziare. Poi serve:

- PC dedicato (esempio un Pentium III 700) con scheda di rete
Non è necessario altro, gli verranno collegati tastiera e monitor solo momentaneamente. Il sistema operativo sarà una distribuzione linux senza interfaccia grafica:

- Ubuntu Server 8.04.2
Si installa Ubuntu Server da cd, formattando completamente l'hard disk. Va bene creare una partizione col metodo base, senza LVM. Occorre avere la connessione ad internet attiva, per garantire lo scaricamento del software successivo.
Attenzione a non lasciare inserite chiavette USB durante il partizionamento dei dischi, possono causarsi errori.

- Installazione di Apache2
A questo punto si deve installare il server web Apache2, grazie al comando

$ sudo apt-get install apache2

Il comando scarica da internet il software per la gestione del server web. Quando arriverà una richiesta al pc sulla porta 80, questo dovrà rispondere inviando il file /var/www/index.html.
Se il pc con Ubuntu Server è all'interno di una rete locale, occorre impostare il router in modo che invii le richieste HTTP al pc stesso; altrimenti il server web non è raggiungibile dall'esterno della rete.

- Port Forwarding
La modalità di indirizzamento delle richieste HTTP verso la scheda di rete del server web dipende dal router che si utilizza nella propria LAN. Non è necessario fare nulla se è l'unico pc connesso a internet. Altrimenti il sito http://www.portforward.com/routers.htm può fornire spiegazioni molto accurate.
In alcuni casi gli indirizzi IP della rete locale creata dal router possono essere assegnati dinamicamente: per evitare questo occorre disabilitare il DHCP della rete LAN, o fissare l'indirizzo IP di una particolarte scheda di rete (quella del webserver in questo caso).

- Nome DNS
Se si desidera assegnare un nome DNS al proprio server web, per garantirne la raggiungibilità da ogni parte del mondo, si può sfruttare un servizio come quello offerto su dyndns.com. In pratica si assegna un nome DNS (come tuonome.dyndns.org, tuonome.thruhere.net eccetera) all'indirizzo IP che si desidera. Ecco un tutorial per capire bene cosa fare.

- DNS assegnato ad un IP dinamico
Il problema nasce dal fatto che in genere l'IP assegnato dal proprio provider è dinamico. In questo caso occorre installare un piccolo programma che controlla l'indirizzo IP della macchina e lo comunica a dyndns.com, in modo da tenere sempre aggiornato il nome DNS scelto.
Ci si può servire del software ddclient. Questo client comunica con l'account precedentemente creato su dyndns.com e associa il DNS scelto con l'IP corrente della macchina.
La comunicazione dei dati dell'account (nome e password) può essere protett con una connessione cifrata con SSH. Installazione:

$ sudo apt-get install ssh libio-socket-ssl-perl
$ sudo apt-get install ddclient

L'installazione porta ad alcune richieste: se si vogliono impostare più di un nome di dominio è sufficiente indicarli separati da virgole.
Quando è richiesta l'interfaccia da utilizzare, indicare "web".
Adesso occorre impostare la cifratura delle comunicazioni e il rilevamento dell'indirizzo IP della macchina, modificando il file di configurazione /etc/ddclient.conf .
Si utilizza vim:

$ sudo vim /etc/ddclient.conf

Il file apparirà circa così:

# Configuration file for ddclient generated by debconf
#
# /etc/ddclient.conf

pid=/var/run/ddclient.pid
protocol=dyndns2
use=if, if=web
server=members.dyndns.org
login=your-dyndns-username
password=your-dyndns-password

La stringa use=if, if=web dovrà essere modificata in:
use=web, web=checkip.dyndns.com, web-skip='IP Address'
Per far ciò si deve premere i, entrando nella modalità di modifica di vim.
Subito dopo le prime tre righe commentate, occorre inserire le stringhe:

ssl=yes
daemon=300

per indicare la cifratura dei dati e il funzionamento come demone.
Al termine delle modifiche si preme ESC, poi :wq per salvare e uscire.
Occorre ancora assicurarsi che il file /etc/default/ddclient contenga questa configurazione:

# Configuration for ddclient scripts
# generated from debconf on Tue Jan 29 20:23:32 CST 2008
#
# /etc/default/ddclient
# Set to “true” if ddclient should be run every time a
# new ppp connection is established. This might be useful,
# if you are using dial-on-demand
run_ipup=”false”

# Set to “true” if ddclient should run in daemon mode
run_daemon=”true”

# Set the time interval between the updates of the dynamic DNS name in seconds.
# This option only takes effect if the ddclient runs in daemon mode.
daemon_interval=”300″

Infine, si riavvia ddclient

sudo /etc/init.d/ddclient restart

- Installazione di PHP
Ora che è stata garantita la raggiungibilità del server da ogni parte del mondo, si può provvedere ad installare le basi software per le pagine dinamiche.
Digitare:

sudo apt-get install php5 libapache2-mod-php5

Per far interagine php con Apache occorre riavviarlo:

sudo /etc/init.d/apache2 restart

- Test di PHP
Semplicemente si può modificare il file /var/www/index.html chiamandolo index.php e inserendo al suo interno la stringa:



Se tutto è andato a buon fine la pagina, aperta con un browser web, indicherà informazioni sull'installazione di PHP della macchina.

- Installazione di MySQL

$ sudo apt-get install mysql-server

L'installazione richiede anche le informazioni di login per l'utente root.

- Installazione di phpMyAdmin
Questo è un programma molto potente e comodo per la gestione dei database. Installazione:

$ sudo apt-get install libapache2-mod-auth-mysql php5-mysql phpmyadmin

Ora occorre modificare una riga all'interno del file /etc/php5/apache2/php.ini:
la stringa ;extension=mysql.so deve diventare extension=mysql.so .

Un riavviamento di Apache per permettere l'interazione di phpmyadmin:

sudo /etc/init.d/apache2 restart

- Installazione di WebMin
Ecco il gestore remoto per la macchina!
WebMin è un'alternativa open source a CPanel, molto apprezzata. Supporta la crittografia dei dati di accesso, grazie alla libreria Perl SSLeay. Installazione:

$ sudo apt-get install libnet-ssleay-perl

Ora sarà possibile accedere in modo sicuro a WebMin via https.

$ sudo wget http://indirizzo-del-mirror/webmin-x.xxx.tar.gz

L'indirizzo da inserire nel comando si trova qui. Prelevare l'ultima versione di WebMin. Per scompattare l'archivio:

$ sudo tar zxvf webmin-1.340.tar.gz

Lancio del setup:

$ sudo ./webmin-1.740/setup.sh

Conviene impostare una porta di accesso diversa da quella di default, per aumentare la sicurezza di accesso. Dopo aver inserito tutti i dati necessari l'installazione è completata.
Adesso il monitor e la tastiera non sono più necessari al server web.

Fonti:
Installazione LAMP, DynDNS Client Setup, Installazione di WebMin

Nessun commento:

Posta un commento