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.