Linux Server

Transcript

Linux Server
Realizziamo il nostro
server linux
Premessa
Consideratela come una guida..., un esercitazione..., una palestra dove fare
pratica con i server, con linux e le reti. Qui si uniscono tre ingrediendi
fondamentali che sono la struttura portante del mondo dell’informatica.
In primis i Server che come vedremo in seguito sono pc un poco più potenti
che offrono servizi ad altri pc, tutto quello che avviene sul web passa
attraverso i server. Poi linux un sistema operativo derivato da unix e offre
stabilità e sicurezza, infatti la maggior parte dei server in rete funziona con
unix e derivate. Infine analizzeremo le reti e la loro configurazione in
ambiente linux.
Queste basi potranno essere trasportate anche per l’ambiente windows
server.
Ora vediamo cosa ci occorre per realizzare il nostro server casalingo.
Una conoscenza base di informatica, uso del pc e linux
 Un pc con scheda di rete
 Un router con connessione adsl
 Una distibuzione linux server (nel nostro caso Ubuntu 14.10 server)
 Una virtual machine come vmware o virtualbox
Linux lo possiamo installare su una partizione dedicata, su un hard disk
esterno o in mancanza di ciò su una macchina virtuale.
Concetti Fondamentali
Un server è un componente informatico, tipicamente un pc, che fornisce un
qualunque tipo di servizio attraverso una rete di computer ad altri
componenti informatici, detti client, cioè clienti.
In parole molto semplici il server quindi non è nient’altro che un computer
(può essere grosso oppure un normale pc) che risponde a delle richieste che
gli vengono effettuate da altri pc. Ovviamente questa è una semplificazione
piuttosto grossolana, ma utile per capire a grandi linee cos’è un server.
Che servizi offrono i server?
Ci sono vari tipi di servizi che un server può offrire, per questo possiamo
trovare server dedicati ad un unico servizio oppure server che forniscono più
di uno allo stesso tempo:
gestione di una rete locale o geografica
gestione delle periferiche di stampa (print server)
scambio e condivisione di dati fra i computer (file server, database server)
invio o inoltro di posta elettronica (mail server)
contenere i file in un sito web (web server)
Possiamo ad esempio trovare un server che funziona allo stesso tempo sia da
web server che da mail server.
Solitamente per usi commerciali o importanti, si preferisce avere un server
dedicato ad un unico servizio per avere maggiori prestazioni.
Linux è un'alternativa gratuita e libera a Microsoft Windows. Per essere più
precisi, è un sistema operativo: il programma che amministra il vostro
computer. Non un sistema operativo qualsiasi: una versione di Unix, che ha
trent'anni di reputazione alle spalle ed è tuttora utilizzato, molto più di
Windows, dai grandi computer che fanno funzionare Internet.
Nel nostro caso utilizziamo una distribuzione di linux molto semplice da
utilizzare e seguita da una vasta comunità: Ubuntu.
Le Reti serve a consentire la comunicazione e la condivisione tra i nodi.
Affinchè la comunicazione possa avvenire in modo corretto, si deve definire
un protocollo di comunicazione: si tratta di un’insieme di regole che i nodi
facenti parte della stessa rete devono rispettare per poter comunicare tra loro.
In generale un protocollo fornisce le seguenti funzionalità:
· Indirizzamento
· Instradamento
· Gestione di eventuali errori di trasmissione
· Gestione della velocità di comunicazione
Un nodo/host è un dispositivo hardware in grado di comunicare con altri
dispositivi che fanno parte di una rete.
Il server che realizzeremo è un web server LAMP
LAMP è una piattarforma software per lo sviluppo Web composta da vari
componenti ed è l'acronimo di Linux Apache MySql Php (Perl o Python)
Apache o meglio Apache Http Server, rappresenta un Server Web. E' una
delle piattaforme Server più diffuse ed apprezzate attualmente in
circolazione e relativamente facile da configurare. Inoltre è dotata di una
vasta documentazione utilissima per la risoluzione delle problematiche più
comuni. Nel caso di un Server Lamp è proprio Apache che si occupa di
gestire le varie richieste dei client fornendo le informazioni richieste, come
ad esempio una pagina web.
MySql è un Database relazionale detto RDBMS (Relational database
management system) per la raccolta e consultazione dei dati. Possiede delle
interfacce per diversi linguaggi, compreso un driver ODBC, driver Java, un
driver per Mono e DOT NET ed una libreria per Python.
PHP è un linguaggio di programmazione interpretato. E' utilizzato
principalmente per sviluppare applicazioni Web lato Server, ma può essere
usato anche per scrivere script a riga di comando o applicazioni standalone
con interfaccia grafica.
Perl è un linguaggio di programmazione ad alto livello, procedurale e
interpretato: ha un singolare insieme di funzionalità ereditate dal C, scripting
shell Unix, Awk e da molti altri linguaggi di programmazione.
Python è un linguaggio di programmazione ad alto livello, orientato agli
oggetti, adatto tra gli altri usi, per sviluppare applicazioni distribuite,
scripting, computazione numerica e system testing.
La realizzazione di un Server Web con LAMP può essere fatta installando i
singoli componenti su una distro Linux qualsiasi ma in questo caso utilizzerò,
per semplicità, Ubuntu Server che ha una voce specifica durante la fase di
"Software selection" che permette un'installazione più semplice e veloce.
Nel nostro caso installeremo tutti i pacchetti LAMP tramite riga di comando
poichè questa guida vuole essere un esercitazione pratica.
INSTALLAZIONE SISTEMA OPERATIVO
Far partire l'installazione di Ubuntu Server e selezionare la lingua per
l'installazione:
Continuare impostando la tastiera, selezionando "NO" al rilevamento e
selezionado il layout italiano nelle schermate successive:
Successivamente attendere che vengano caricati i componenti addizionali e
configurare la rete impostando il nome host:
Utente e relativa password
Nella schermata successiva viene chiesto se si vuole cryptare la cartella
home per una questione di sicurezza: per i Server che conterranno dati
importanti é preferibile rispondere "Si" ma in questo caso essendo un Server
casalingo rispondere "No".
per poi passare alla fase di partizionamento. Come detto nella "Premessa",
selezionare il partizionamento guidato utilizzando l'intero disco ed attendere
l'installazione del sistema base:
Finita l'installazione del sistema base è necessario specificare se si utilizza
un proxy per accedere ad internet. In questo caso il collegamento è diretto
quindi lasciare "blank". Nel caso di utilizzo di proxy impostare la stringa in
questa maniera:
senza autenticazione utente (ad esempio perchè l'autenticazione viene concessa attraverso
l'IP del client)
http://IpProxy:Porta/
con autenticazione utente
http://utente:password@IpProxy:Porta/
Successivamente configurare gli aggiornamenti automatici. Per i Server, a
differenza dei client, è consigliabile non lasciare che il sistema effettui gli
aggiornamenti in automatico ma lanciarli manualmente quando lo riteniamo
opportuno.
Nella finestra successiva selezionare i pacchetti da installare, cioè "LAMP
Server" e "OpenSSH Server", quest'ultimo per permettere la connessione in
remoto con il terminale attraverso il protocollo SSH
Attendere quindi l'installazione dei pacchetti...
quindi rispondere "SI" all'installazione del Grub e completare il tutto con il
riavvio del Server!
Configuriamo il server e installiamo LAMP
E' doveroso precisare che, per impostazione predefinita, Ubuntu Server non
installa nessun DE quindi tutte le operazioni
devono essere eseguite attraverso il terminale.
Prepariamo innanzitutto il nostro sistema in modo d'avere un indirizzo ip
statico, in tal modo, ogni volta che riavvieremo il nostro computer server,
l'ip sara' sempre lo stesso e sara' sempre accessibile da tutti i dispositivi della
rete semplicemente utilizzando sempre lo stesso indirizzo!
La maggior parte dei comandi deve essere eseguita da root, quindi digitare il
comando:
sudo su
verra richiesta la password di root
Per prima è necessario conoscere l’indirizzo IP della nostra macchina al
quale ci andremo a connettere. Se disponiamo di un router, potremo andare a
vedere direttamente l’indirizzo IP nella pagina di configurazione relativa, se
invece il server possiede Tastiera e schermo, dopo aver eseguito il login
digiteremo: ifconfig
Editiamo con qualsiasi editor di testo (da root) il file interfaces presente
all'interno della directory network su /etc, realizzando quanto segue:
Con la prima riga, ovvero "auto eth0" (si presuma che eth0 sia anche il nome
della vostra interfaccia di rete, basta uno /sbin/ifconfig (anche da user non
root) per conoscerlo), diciamo al sistema di abilitare l'interfaccia di rete al
boot, corrisponde al classico "ifconfig eth0 up" per intenderci
Con "iface" identifichiamo l'interfaccia da configurare, nel caso in esempio
"eth0", con "inet" indichiamo invece che l'interfaccia sara' connessa con ipv4
ed infine, "static", indica proprio che l'indirizzo sara' impostato staticamente.
Successivamente vedremo il resto delle configurazioni da settare a vostro
piacimento, ricordando che:
Address sara' il vostro indirizzo di rete scelto per la macchina
(ovviamente non utilizzate un indirizzo identico usato per un'altro
dispositivo della rete eh)
Netmask sara' la maschera di rete, se utilizzate indirizzi di classe C
lasciate pure quella indicata nell'immagine, broadcast idem.
Gateway sara' invece l'indirizzo del vostro router, cambiatelo quindi in
base al vostro!
Salviamo il file ed usciamo.
A questo punto facciamo un restart sul servizio networking con:
/etc/init.d/networking restart
Fatto cio' non ci resta che aggiornare l'indice dei pacchetti con un semplice
apt-get update e successivamente installare il nostro webserver, digitando:
apt-get install apache2
I pacchetti installati saranno:
apache2-mpm-worker, apache2-utils, apache2.2-common
Conclusa l'installazione il servizio sara' startato automaticamente,
nell'eventualita' sappiate che per stoppare, avviare e riavviare potrete usare
"stop", "start" e "restart" utilizzando il comando:
/etc/init.d/apache2 "azione"
Sostituendo ad "azione" quello che vorreste fare ovviamente!
Bene, a questo punto proviamo a vedere se e' tutto ok avviando il nostro
browser e visitando l'ip della nostra macchina, nel caso in esempio
192.168.1.200
Se otterrete una schermata simile allora vorra' dire che il nostro webserver
sara' stato installato e si sara' avviato correttamente e senza problemi.
La cartella principale in cui andremo ad inserire tutti i nostri file sara' la
cartella "www", che si trovera' all'interno della directory /var.
Installare il PHP
Supporrò di installare le php5 in quanto la versione 4 non è più in fase di
sviluppo.
1. Sempre da terminale scrivete o incollate:
sudo apt-get install php5 libapache2-mod-php5
2. Questa installazione oltre che a installare il php va ha modificare
Apache, è quindi necessario riavviare il demone digitando:
sudo /etc/init.d/apache2 restart
3. Scriviamo sul terminale
sudo gedit /var/www/test.php
e dentro al file scrivamo
<?php phpinfo(); ?>
Chiudiamo il file salvandolo.
4. Apriamo un browser e scriviamo nella barra dell’URL
http://localhost/test.php
Se via appare una cosa come l’immagine che vi ho fatto allora il php è
stato installato correttamente.
Installare il MySQL
L’installazione è quasi conclusa, tuttavia vorrei ricordache che la
configurazione singola del php e del mysql non appaggiandosi all’apache
sarebbe stata molto più complessa e articolata quindi non vi spaventate per le
linee che stanno per seguire.
1. Scrivere sul terminale questo:
sudo apt-get install mysql-server
2. La modifica che sto per suggerirvi qui è opzionale ed è
consigliata nel caso abbiate dei computer in rete e voleste provare il vostro
webserver anche da altri computer appartenenti alla LAN. Scrivere sul
terminale
sudo gedit /etc/mysql/my.cnf
Trovate la riga che dice bind-address = 127.0.0.1 e sostituite 127.0.0.1 col
vostro indirizzo ip nella rete. Salvate e chiedete il file.
3. Per interfacciarsi col mysql è necessario impostare una password.
Nel terminale digitate questo:
mysql -u root
4. Vi dorvrebbe apparire un mysql>. Ve l’ho scritto in grassetto e
vuol dire che al posto di scrivere password dovetre scrivere una password, o
la stessa che usate per loggarvi o un’altra ma ve la dovete ricordare perchè vi
servirà per autenticarvi tutte le volte che vorrete fare una modifica Scrivere:
SET PASSWORD FOR ‘root’@’localhost’ = PASSWORD(‘password‘);
5. Visto che non tutti siete avvezzi ad usare il terminale per gestire i
vostri database ecco l’interfaccia grafica che va per la maggiore e che si
chiama phpMyAdmin e si installa scrivendo nel terminale:
sudo apt-get install libapache2-mod-auth-mysql php5-mysql phpmyadmin
6. Il prossimo punto è fondamentale per un corretto funzionamento.
Per far si che il php e il mysql lavorino in maniera sincrona bisogna andare a
modificare il php.ini e lo si fa scrivendo da terminale:
sudo gedit /etc/php5/apache2/php.ini
Trovate la riga con scritto ;extension=mysql.so e togliendo il ; dovrebbe
diventare
extension=msql.so
Salvate il file e chiudetelo.
7.
Riavviamo il demone dell’Apache ridigitando il codice
sudo /etc/init.d/apache2 restart
Carichiamo il nostro sito web sul server
A questo punto abbiamo installato il nostro web server LAMP, è stato
confIgurato ed è quasi pronto per funzionare, ora andremo a copiare il nostro
sito web precedentemente creato.
Il nostro sito web bisogna copiarlo nella cartella /var/www. Per farlo
abbiamo bisogno di cambiare i permessi di scrittura di questa directori,
quindi da terminale digitiamo il comando:
sudo chmod -R 777 /var/www
Il sito Web lo possiamo trasferire da un cdrom, una pendrive ecc...
Ma prima dobbiamo montare questa unità esterna in modo che venga letta da
nostro sistema linux.
La prima cosa e vedere come il sistema vede la nostra unità disco esterna,
basta digitare il comando:
sudo fdisk -l
questo comando ci mostra a video la lista delle partizioni presenti nel PC,
quindi Hard Disk e USB.
Avremo una schermata con le seguenti informazioni:
Device
Boot
Start
End
Blocks
Id
System
191
1534176
82
Linux swap
/dev/sda1
*
1
/dev/sda2
*
192
2103 15350107
83
Linux
2104
10886 70541415
83
Linux
10887
12161 10233405
83
Linux
/dev/sda3
/dev/sda4
*
Sta alla vostra interpretazione sapere quale è la partizione da montare,
supponiamo per i nostri test sia la sda1. Nell'esempio sopracitato non c'è una
penna USB ma tante partizioni probabilmente di un Hard Distk.
Supponiamo che la nostra penna sia identificato da sda1.
Creiamo una cartella temporanea che ci aiuterà negli spostamenti fra le
directory della nostra penna USB. Sarà il percorso dove andremo a montare
la penna USB;
sudo mkdir /var/tmp/ilnomechevuoi
A questo punto montiamo la penna USB attraverso il comando:
mount /dev/sda1 /var/tmp/ilnomechevuoi
Spostiamoci nella directory temporanea appena creata:
cd /var/tmp/ilnomechevuoi
IMPORTANTE!!! Quando hai finito e vuoi sganciare la penna, NON
STACCARLA BRUTALMENTE, ma segui il comando che segue:
sudo umount /dev/sda1
Ora non ci resta che rendere il nostro sito disponibile in rete
Rendere accessibile il server a Internet
Per rendere accessibile il nostro web server dobbiamo mettere le mani sul
nostro router, ma prima facciamo alcune considerazioni:
Indirizzi pubblici e indirizzi privati
Un indirizzo IP è un valore numerico univoco che consente di identificare un computer in
una rete. Gli indirizzi IP sono di due tipi: pubblico (indirizzi IP univoci a livello globale)
e privato.
Gli indirizzi IP pubblici vengono assegnati dall'IANA (Internet Assigned Numbers
Authority) che ne garantisce l'univocità e l'accessibilità tramite Internet a livello globale.
Ciò comporta l'impossibilità che lo stesso indirizzo IP sia utilizzato da più computer.
Un ISP (Internet Service Provider) ottiene una serie di indirizzi IP pubblici dall'IANA e li
assegna ai suoi clienti che li utilizzeranno per collegarsi ad Internet attraverso l'ISP.
Gli indirizzi IP pubblici sono instradabili in Internet, il che significa che un computer con
un indirizzo IP pubblico è visibile a tutti gli altri presenti nella rete Internet.
Gli indirizzi IP privati non possono essere utilizzati in Internet. L'IANA ha stabilito
l'impossibilità di usare in Internet tre blocchi di indirizzi IP specifici. Si tratta di indirizzi
IP privati, ossia indirizzi utilizzati per le reti non direttamente collegate a Internet.
Sono indirizzi IP privati validi quelli compresi in uno dei seguenti blocchi o serie:
192.168.0.0/16: Questo blocco consente di specificare indirizzi IP validi nell'intervallo
compreso tra 192.168.0.1 e 192.168.255.254.
172.16.0.0/12: Questo blocco consente di specificare indirizzi IP validi nell'intervallo
compreso tra 172.16.0.1 e 172.31.255.254.
10.0.0.0/8: Questo blocco consente di specificare indirizzi IP validi nell'intervallo
compreso tra 10.0.0.1 e 10.255.255.254.
Indirizzi IP dinamici e statici
Indirizzi IP dinamici
Gli indirizzi IP dinamici vengono acquisiti da un server DHCP e possono cambiare
periodicamente. È possibile assegnare indirizzi IP dinamici ai computer collegati alla rete
configurando uno o più server DHCP. Al server DHCP deve essere assegnato un
indirizzo IP statico.
Indirizzi IP statici
Gli indirizzi IP statici non cambiano. L'indirizzo IP statico viene assegnato
dall'amministratore della rete e viene immesso manualmente nelle proprietà relative alla
scheda di rete su un server o su un computer client. Gli indirizzi IP statici non richiedono
che sulla rete sia in esecuzione un server DHC
Ora abbiamo il nostro server con un indirizzo privato e statico
tipo :192.168.1.200
Possiamo constatarlo col comando ifconfig a terminale
Per controllare il nostro ip pubblico basta andare col browser sul sito il mio
ip o simili, ricordatevi che il nostro ip pubblico è dinamico (cambia ad ogni
connessione).
Ora non ci resta che configurare il router
Ci sono due modi per aprire il tuo server fino a Internet: una DMZ o Port
Forwarding.
La principale differenza è con una DMZ, il server utilizza come protezione il
firewall installato in precedenza, mentre con il Port Forwarding, il server
sarà protetto dal firewall del router.
Procediamo con l’assegnazione di un indirizzo IP statico LAN al vostro
server. Per farlo, effettua il login al router, e cercare qualcosa sulla falsariga
di “IP statico” o “routing statico”.
Per aprire il tuo server con Port Foward, vi è un eccellente sito web ,
PortForward.com, che, può aiutarvi per quasi tutti i router.
Per creare una DMZ, è necessario accedere al tuo router e cercare qualcosa
di simile “DMZ Settings”. Una volta trovate, aggiungere il vostro server per
la DMZ. (Idirizzo Privato).
Ora, trova il tuo indirizzo IP pubblico, at voila! È possibile accedere al
vostro server da qualsiasi luogo fintanto che il vostro IP non cambia.
Basta che da un qualsiasi browser inseriamo l’indirizzo pubblico del server
che il router del server proietta tale indirizzo su quello privato inserito nel
DMZ, cosi visualizziamo le pagine web inserite nel server da qualsiasi parte,
tramite internet.
Per associare il nostro ip pubblico in forma letteraria e renderlo statico ci si
puo comprare un dominio con un abbonamento o farlo gratis attraverso una
registrazione al sito www.DynDNS.com cosi avremo un indirizzo tipo
www.miosito.homepc.it Da inserire al posto del ip pubblico.
APPENDICE Comandi principali Linux
installa programmi
sudo apt-get install nome programma
disistalla programmi
sudo apt-get remove nome programma
come il sistema vede il nuovo disco rigido
sudo fdisk -l
monta unita
sudo mount /dev/sdb1 /mnt/disco
monta unita in scrittura
sudo mount /dev/sdc1 /media/Cruzer -t vfat -o iocharset=utf8,umask=000
Smonta unità
sudo umount /dev/sda1
settare i permessi di una cartella in lettura e scrittura compreso anche tutti i
file in esso contenuta
sudo chmod -R 777 nomecartella
Ottenere i permessi di root
sudo su
Conclusioni
In questa guida abbiamo analizzato gli aspetti principali e i concetti
fondamentali di come funziona un server, e una rete, come installare linux,
come installare un server LAMP e tante altre cose, spero di essere stato
abbastanza chiaro.
La guida può essere ampliata per una più approfondita esercitazione, infatti
il nostro web server può diventare anche un server FTP o installare altri
ruoli.
Questa guida può essere utile come trampolino di lancio per chi vuole
intraprendere la carriera di Amministratore Linux o di Reti.
La realizzazione del web server è stato provato sia su normale pc che su
macchina virtuale.
Alcune cose sono state estrapolate dalla vasta documentazione presente in
rete.