Sei sulla pagina 1di 27

UNIVERSITA' CA' FOSCARI

-VENEZIAFacolt di Scienze Informatiche e Tecnologiche

Laboratorio Amministrazione di Sistemi

di un web server per applicazioni in Ruby on Rails

Installazione e Configurazione

Try2Deploy :

William Bergamo (Mat. 837675) Tommaso Furlan (Mat. 822392) Matteo Feltre (Mat. 837473)

SOMMARIO
1) Introduzione
4 1.1 Introduzione..................................................................................................................................... 4 1.2 Obbiettivi del Gruppo..................................................................................................................... 4 1.3 Servizi Offerti................................................................................................................................... 4

2) Installazione del Sistema


2.1 Configurazione Macchina Virtuale ....................................................................................... 2.2 Installazione Sistema Operativo ............................................................................................

5
5 7

3) Installazione e Configurazione servizi


3.1 Servizio SSH............................................................................................................................... 3.2
Installazione pacchetto SSH............................................................................................ Installazione Server....................................................................................................................... 3.2.1 Installazione Apache2..................................................................................................... 3.2.2 Installazione MySql........................................................................................................ 3.2.3 Installazione & Configurazione Ruby on Rails.............................................................. Configurazione Client.................................................................................................................. 3.3.1 Installazione Ruby.......................................................................................................... 3.3.2 Installazione Editor......................................................................................................... 3.3.3 Installazione Rails.......................................................................................................... 3.3.4 Installare MySql e Configurare...................................................................................... 3.1.1

14
14 14 16 16 16 16 17 17 18 18 18

3.3

4) Test del Sistema


4.1 Demo_app.........................................................................................................................................
4.1.1 Creare Demo_App su client................................................................................................ 4.1.2 Trasferimento directory da client a server per fare il deploy dell'applicazione..................

19
19 19 22

5) Risultati ottenuti 6) Glossario Riferimenti Sitografici

23

24

26

1 INTRODUZIONE
1.1 Introduzione
In questa guida verr illustrato come configurare un server GNU / Linux utilizzando i servizi SSH , Apache, MySQL e Ruby on Rails, partendo dall'installazione della macchina virtuale e del sistema operativo per proseguire poi con il test dei servizi. Il progetto viene realizzato per il corso Laboratorio di Amministrazione di Sistema 2012/2013 dagli studenti: Matteo Feltre : Introduzione ed Installazione del Sistema William Bergamo : Installazione e Configurazione Servizi Tommaso Furlan : Test e Risultati ottenuti

1.2 Obbiettivi di gruppo


La nostra idea di simulare la gestione di un'azienda che offre una web application basata sul framework Ruby on Rails. Abbiamo ipotizzato di avere un server che ospita l'applicazione, alla quale il team di sviluppatori potr accedere tramite SSH per caricare ed aggiornare la web application offerta dall'azienda. Configureremo interamente anche un client per simulare il lavoro dei developers dell'azienda, che potranno cosi avere a disposizione gi installati tutti gli strumenti per lo sviluppo.

1.3 Servizi offerti


Ruby on Rails E' un framework open source per applicazioni web scritto in Ruby basato sul pattern di sviluppo MVC. La sua filosofia si basa sul concetto di conventions over configurations i suoi obiettivi sono quindi la semplicit di utilizzo e di configurazione. SSH Il servizio SSH (e SCP) all'interno del nostro progetto stato scelto per poter usufruire di una connessione remota sicura al server aziendale, e ci permette di apportare modifiche alla configurazione del server e permette agli sviluppatori di eseguire upload/download (tramite SCP) sicuri alla web application. Apache Web Server (httpd) open source sviluppato dalla Apache Software Foundation, indispensabile per il nostro progetto: gestisce tutte le richieste HTTP e HTTPS del nostro server. MySQL Popolare e diffuso database relazionale open source, utilizzato nel nostro progetto per permettere agli utenti di gestire applicazioni web articolate che si appoggiano ad una base di dati.

2) INSTALLAZIONE MACCHINA VIRTUALE


Sistema di riferimento : Ubuntu Server 12.04 Architettura : 32bit Difficolt installazione : User Friendly

2.1

Configurazione Macchina Virtuale


Prima di iniziare , verificare di avere installato sul proprio calcolatore il software VMware vSphere. Doppio click sull'icona e avviare il programma. Nella finestra d'accesso inserire le proprie credenziali. Nel nostro caso Ip Address/Name sar ammsis.dsi.unive.it.

Eseguito l'accesso ci troveremo di fronte ad una schermata divisa in due , nella parte sinistra troveremo i repository per le macchine virtuali. Nel nostro caso sceglieremo l'unica disponibile ammsis.dsi.unive.it

Cliccando col tasto destro sopra la repository scelta , selezionare New Virtual Machine

Si aprir una finetsra per la creazione guidata della Macchina Virtuale Lasciare Typical e cliccare su Next>

Assegnare un nome alla VM scrivendolo nel campo Name . Nel nostro caso il nome scelto stato try2deploy-webserver . Premere nuovamente su Next>

Selezionare il datastore in cui creare la macchina. Nel nostro caso selezioneremo l'unico disponibile datastore1 . Selezioneremo nuovamente Next>

Ora dovremo impostare il sistema operativo , selezioneremo Linux , e la versione Ubuntu Linux (32-bit) dal men a tendina sottostante. Cliccare su Next>

Nella schermata successiva bisogner assegnare un disco virtuale , i parametri di Default andranno pi che bene (datastore1 , 8 Gb , Statico) quindi lasceremo i suddetti. Premere Next> L'ultima pagina il resoconto delle operazioni eseguite fin qui , per permettere una eventuale modifica in caso di errore. Ci dovremo trovare davanti ad una schermata simile nel nostro caso :

Selezionare il comando Edit Machine settings before completion Premere il tasto Finish per completare l'operazione. Ora la macchina stata creata con successo , ma avendo precedentemente cliccato su edit machine settings before completion , si aprir una nuova finestra su cui settare alcuni parametri avanzati : nel nostro caso ci interesseremo solo del Driver di Rete , cliccheremo su Newtwork Adapter , selezioniamo rete192 dal men a tendina sotto la voce Network Connection [Si potrebbero modificare altri parametri come CPU ,RAM , Video , ecc... , ma nel nostro caso le impostazioni di default vanno nuovamente bene]

Un occhio di riguardo al settaggio della RAM che dovr essere settato almeno a 512Mb Cliccare su Ok , e avremo finito le operazioni di creazione della VM

2.2 INSTALLAZIONE SISTEMA OPERATIVO


La macchina virtuale, una volta terminata l'installazione, priva di sistema operativo e dati, quindi procederemo all'installazione del s.o. "Ubuntu server 12.04 LTS 32 bit". Dalla schermata iniziale di VSphere, dopo aver espanso la repository della Virtual Machine (VM) "ammsis.dsi.unive.it", selezioniamo la nostra macchina virtuale (quindi nel nostro caso "try2deploywebserver") e premo il pulsante "play" verde in alto per avviare la VM.

Per monitorare l'avanzamento della procedura di installazione necessario spostarsi sulla scheda "console" di Vsphere.

Inizialmente verr visualizzato il messaggio "Operating system not found"; per ovviare a questo problema necessario inserire un ISO del sistema operativo da installare.

Clicchiamo quindi sull'icona "Connect/Disconnect cd/dvd devices" posizionato sulla barra degli strumenti in alto e successivamente sar necessario selezionare il supporto da cui installare il s.o. dalla directory "datastore" contenente le immagini ISO del So Confermeremo quindi l'immagine selezionando "Connect ISO image on datastore".

Verr avviata una procedura guidata per l'installazione del SO :


Nella schermata "language" selezioniamo inglese, per avere un maggior supporto.

Proseguiremo cliccando "Install Ubuntu server".

In "select a language" sar necessario selezionare la lingua per l'installazione del sistema. Noi proseguiremo selezionando nuovamente English

Proseguendo sar necessario selezionare la propria locazione geografica, quindi nel nostro caso "Other">"Europe"->"Italy".

Nella scheda "Configure locals" selezionare "United States"->EN_US UTF-8 il prossimo passo rchiesto la configurazione della tastiera. Il sistema cercher di identificare automaticamente il layout tramite la digitazione di alcuni comandi.

Una volta rilevato l'hw apparir la scheda "Configure the network" dove alla richiesta di un "hostname" abbiamo assegnato, nel nostro caso, "try2deploy"

Succesivamente apparir la schermata "Setup user and password" dove verr creato un account utilizzato al posto dell'account "root" per attivit non amministrative. Nel nostro caso useremo come username e fullname "t2d-admin". Selezionare, quindi, "Continue" e digitare una password per l'utente appena creato.

Alla richiesta di cifrare la propria home directory selezioniamo <No>

Nella scheda successiva verr proposto un fuso orario di default basato sulla propria locazione geografica selezionata precedentemente, se corretta proseguire cliccando <Yes>

In "Partition disks" come metodo di partizionamento selezioniamo "Guided-use entire disk". In questo modo verr usato l'intero disco da 8 gb come unica partizione.

Alla scheda successiva selezioniamo il disco (l'unico disponibile) SCSI3 (0,00) (sda) - 8.6 GB VMWare Virtual disk.

Confermeremo la configurazione appena impostata cliccando <Yes>

Comincer ora l'installazione vera e propria del SO

nella scheda "Configure the package manager" non sar necessario configurare un proxy, quindi proseguiamo premendo <Continue>

in "Configuring tasksel" viene richiesta la modalit con cui effettuare gli aggiornamenti; essendo un server non vogliamo che nessun aggiornamento venga fatto in automatico per avere una maggiore "reliability", quindi selezioniamo <No autuomatic updates>

In "Software selection" avremmo potuto installare direttamente il package "LAMP server" in modo automatico ma preferiamo succesivamente in modo manuale. Selezioniamo quindi "manual package selection"

Nella schermata successiva viene richiesto di installare in automatico "the grub bootloader" premendo <Yes>

Installazione terminata con SUCCESSO.

3)INSTALLAZIONE E CONFIGURAZIONE SERVIZI SU SERVER


3.1 SERVIZIO SSH
3.1.1 INSTALLAZIONE PACCHETTO SSH
accediamo al SO e ci autentichiamo con login e password da terminale digitiamo il seguente comando: sudo apt-get install openssh-server durante l'installazione del pacchetto necessario digitare yes per proseguire con l'installazione del servizio. (L'ssh alla versione Openssh_5.9p1) ora ci spostiamo nella cartella /etc/ssh/ con il comando cd /etc/ssh nella cartella sono presenti i file di configurazione per il demone sshd_config) [WARNING] Per sicurezza meglio copiare il file sshd_config con il comando sudo cp sshd_config sshd_config.original in modo tale da avere un backup in caso di problemi cambiamo i permessi al file sshd_config.original (per evitare accidentali modifiche) sudo chmod a-w sshd_config.original Ora il file sshd contiene tutti i parametri di configurazione del demone ssh , per semplicit cambiamo solamente la porta d'accesso , cambiando la linea del file sshd_config da Port 22 a Port 2222 In modo da avere una maggior sicurezza. Al termine della modifica del file sshd_config , per rendere effettive le modifche sar necessario riavviare il servizio ssh sudo service ssh restart Una volta fatto questo sar possibile accedere al server dal client tramite ssh con il comando

sudo ssh t2d-admin@[indirizzo_ip] -p 2222

Installazione del pacchetto ora terminata

3.2 INSTALLAZIONE WEB SERVER


Prima di procedere all'installazione di Rails necessario installare i pacchetti Apache2 e MySQL in modo da fornire un web server ed un database su cui appoggiarsi.

3.2.1 INSTALLAZIONE APACHE2


Da terminale digitare il seguente comando: sudo apt-get install apache2

3.2.2 INSTALLAZIONE MySQL


Da terminale digitare il seguente comando: sudo apt-get install mysql-server Terminata l'installazione del pacchetto verr richiesta una password per l'accesso. Scegliamo la password e diamo conferma, terminando l'installazione.

3.2.3 INSTALLAZIONE & CONFIGURAZIONE RUBY ON RAILS


Una volta installati Apache e MySQL si pu procedere all'installazione del framework Ruby on Rails. Per installare il pacchetto relativo digitiamo da terminale il seguente comando: sudo apt-get install rails Creiamo la directory "railsapp/" (che verr creata nella current direcoty --> /home/t2d-admin/), tramite il comando mkdir railsapp Ci sposteremo nella directory appena creata cos da procedere alla creazione di una nuova app rails di prova cd railsapp Con il comando rails demo_app avremo cos creato una nuova applicazione ruby on rails di nome "demo_app"

Modifichiamo la configurazione del file /etc/apache2/sites-available/default per configurare il dominio. La prima cosa da cambiare la direttiva DocumentRoot (che dovr contenere il path della nostra applicazione) DocumentRoot /home/t2d-admin/railsapp/demo_app/public

Successivamente si dovr cambiare la direttiva <Directory "/var/www"> con: <Directory /home/t2d-admin/railsappdemo_app/public>

Bisogna anche abilitare il modulo mod_rewrite per Apache; per fare ci digitiamo il seguente comando da terminale: sudo a2enmod rewrite

Come ultima cosa dovremo modificare gli owners delle directory /var/www/rails/public e /var/www/rails/tmp in base all'utente utilizzato per eseguire il processo di Apache:Web Servers 200. sudo chown -R www-data:www-data /home/t2d-admin/railsapp/demo_app/public sudo chown -R www-data:www-data /home/t2d-admin/railsapp/demo_app/tmp

Ora dovremo riavviare il server apache2 per rendere effettive le modifiche apportate sudo etc/init.d/apache2 reload

oppure
sudo service apache2 reload

Server pronto per ospitare le nostre applicazioni Ruby on Rails.

3.3 CONFIGURAZIONE CLIENT


Una volta configurato il server , abbiamo creato e configurato un sistema operativo su una seconda macchina virtuale , seguendo il medesimo procedimento effettuato per il server (cambia solo la .iso installata : Ubuntu-12.10-Desktop) , cosi da poter procedere con la configurazione degli strumenti per gli sviluppatori. Per avere un ambiente funzionante , utile per sviluppare applicazioni Ruby on Rails , necessario avere diversi pacchetti installati alla giusta versione

3.3.1 INSTALLAZIONE RUBY


Installare innanzitutto Curl (strumento per trasferire da un Url) , con il comando sudo apt-get install curl E' fortemente raccomandato usare Ruby Version Manager (RVM) per poter gestire diverse versioni di ruby se necessario Lo installaremo con i seguenti comandi \curl -#L https://get.rvm.io | bash -s stable -- autolibs=3 --ruby Cambiamo la directory dove trovare RVM source ~/.rvm/scripts/rvm Innanzitutto useremo dei comandi per aggiornare e ricaricare rvm rvm get head && rvm reload

Ora potremo cominciare l'installazione di Ruby 2.0.0 vera e propria rvm install 2.0.0

Dopo aver installato Ruby , dovremo installare altri software utilizzati per avviare applicazioni rails , questo generalmente si svolge installando le Gems che sono dei packages di codice ruby Per gestire questi pacchetti necessario installare il package manager RubyGems , gi presente nel pacchetto rvm , che per aggiorneremo con il comando gem update system 1.8.24

3.3.2 INSTALLAZONE EDITOR


Sar fondamentale installare un editor per poter visualizzare il codice , noi abbiamo scelto RedCar pienamente supportato da Ruby on Rails Prima di tutto dovremo installare alcune dependencies con il comando sudo apt-get install openjdk-6-jre Successivamente rvmsudo gem install redcar ci permetter di avere l'effettiva installazione dell'editor

3.3.3 INSTALLAZIONE RAILS


Una volta installato RubyGems l'installazione di rails dovrebbe essere semplice in quanto viene installato come una gemma (rails infatti un framework sviluppato in ruby) gems install rails -v 3.2.13 [useremo questa versione poich la pi supportata dalle community online] Essendo questo un sistema Linux installeremo ulteriori pacchetti necessari al funzionamento complessivo sudo apt-get install libxslt-dev libxml2-dev libsqlite3-dev

Dovremo implementare anche la gemma execjs che ci permeter di eseguire codice javascript tramite ruby sudo gem install execjs

3.3.4 INSTALLARE MYSQL e CONFIGURAZIONE


Prima cosa installare le librerie di Mysql sudo apt-get install libmysql-ruby libmysqlclient-dev

Installo la gemma effettiva di Mysql sudo install gem mysql2

L'ambiente ora pronto, ma quando si creer una nuova applicazione sar necessario qualche piccolo accorgimento per collegare l'applicazione al database mysql. N.B: Una volta che Mysql installato e la nostra app creata, dobbiamo comunicare a quest' ultima di usare il database mysql con relativa password (e non sqlite3 che impostato di default) , modifichiamo quindi il file di configurazione database.yml nella cartella config/ della nostra applicazione demo_app appena creata impostando username e password del database mysql

Dal client ora possibile creare nuove applicazioni rails con il comando rails new [nomeapp] all'interno di una cartella destinata al progetto rails

TEST SISTEMA

Ora simuleremo lo sviluppo dell'applicazione da parte dei developers dell'azienda che succesivamente dovranno trasferire i files sul server

4.1

Creazione demo_app sul client


Sulla macchina client creiamo una nuova cartella apprails , dove creeremo una applicazione di prova chiamata demo_app come quella sul server con il comando rails new demo_app -d=mysql dove -d=mysql viene usato per impostare in automatico mysql come database di default Creiamo il nostro database in Mysql con il comando del framework rake db:create se tutto si concluso regolarmente non ritorner nulla. Apriamo la console di Mysql e accediamo come root Per visualizzare i databases creati mysql>show databases Controlliamo se si sono creati demo_app_test e demo_app_development Chiudiamo la console mysql mysql>\q Come test creiamo una semplice app in automatico, sfruttando quindi le potenzialit di Rails;generiamo un modello User con un attributo nome di tipo stringa e un attributo email di tipo stringa. Con il comando generate scaffold vengono in automatico creati anche il Controller e View relative agli utenti seguendo il pattern di sviluppo MVC rails generate scaffold User name:string email:string Ora faremo un test avviando il web server locale sul client per testare l'applicazione rails server mysql -u root -p

Questo avvier un server WEBrick sulla porta 3000 , per verificare che sia tutto funzionante apriamo il browser e digitiamo localhost:3000 Ora dovremo eliminare il file index.html nella cartella public di demo_app , come consigliato dalla

schermata d'introduzione, successivamente impostiamo come gestore di controllo della landingpage il controller user#index modificando il file config/routes.rb , aggiungendo il comando root :to => 'users#index' Dopo la modifica , riavviando il server , visualizzeremo la nostra applicazione funzionante in locale

(il form d'iscrizione)

(il nostro utente creato)

(lista utenti aggiornata)

4.2

Trasferimento directory da client a server per fare il deploy dell'applicazione

Una volta creata un'applicazione gli sviluppatori devono avere la possibilit di trasferire la propria applicazione sul server aziendale con facilit. Potranno quindi usare il comando da terminale scp -P 2222 -r apprails/demo_app t2d-admin@192.168.1.55: /home/t2d-admin/railsapp dove : scp sta per copia sicura tramite ssh -P 2222 per connettersi alla porta 2222 -r sta per recursive e serve per copiare tutto il contenuto di una directory -apprails/demo_app la direcotry da copiare dal client al server -t2d-admin@192.168.1.55 il server -/home/t2d-admin/railsapp la cartella di destinazione nel server

5) RISULTATI OTTENUTI

Dopo aver introdotto brevemente i servizi offerti , creato una guida semplice per l'installazione delle componenti di base e della macchina virtuale , ed effettuato dei test con successo , il server per l'azienda funzionante. Abbiamo quindi realizzato un sistema client-server , dove pi client possono accedere tramite SSH per scrivere, caricare, e far eseguire programmi scritti in Ruby on Rails. La connessione eseguita tramite protocollo SSH prevede un metodo di crittografia per lo scambio delle informazioni e l'autenticazione del server al fine di evitare minacce. Gli utenti che accedono al server sono memorizzati all'interno di una database memorizzato nello stesso. Abbiamo risicontrato particolari difficolt nella configurazione del client , in quanto stato spesso necessario installare pacchetti aggiuntivi e librerie mancanti per far funzionare i servizi al meglio, inoltre le macchine del nostro laboratorio non sempre perfettamente funzionanti ci hanno costretto a reperire le versioni migliori e compatibili , per cui stato necessario fare test anche sulle nostre macchine personali. Dunque necessario un lavoro molto accurato di ricerca e consultazione di diverse guide per trovare sempre la procedura di configurazione pi ottimale e funzionante d'applicare. Per rendere il tutto ancora pi comprensibile abbiamo adottato una politica di spiegazioni accompagnate da immagini e stili che aiutano l'utente nella comprensione dei vari passi del nostro tutorial. Fondamentalmente gli obbiettivi che ci eravamo prefissare sono stati rispettati praticamente tutti !

Try2Deploy Staff

6) GLOSSARIO
Apache = il nome dato alla piattaforma server Web modulare pi diffusa. Apache un software che realizza le
funzioni di trasporto delle informazioni, di internetwork e di collegamento, ha il vantaggio di offrire anche funzioni di controllo per la sicurezza come quelli che compie il proxy.

Boot Loader = il programma che, nella fase di avvio (boot) del computer, carica il kernel del sistema operativo
dalla memoria secondaria alla memoria primaria, permettendone l'esecuzione da parte del processore e il conseguente avvio del sistema

Client = si indica una componente che accede ai servizi o alle risorse di un'altra componente detta server. In questo
contesto si pu quindi parlare di client riferendosi all'hardware oppure al software.

Framework = una struttura di supporto su cui un software pu essere organizzato e progettato. Alla base di un
framework c' sempre una serie di librerie di codice utilizzabili con uno o pi linguaggi di programmazione, spesso corredate da una serie di strumenti di supporto allo sviluppo del software, come ad esempio un IDE, un debugger, o altri strumenti ideati per aumentare la velocit di sviluppo del prodotto finito.

Indirizzo Ip = un'etichetta numerica che identifica univocamente un dispositivo (host) collegato a una rete
informatica che utilizza l'Internet Protocol come protocollo di comunicazione. Un indirizzo IP assolve essenzialmente a due funzioni principali: identificare un dispositivo sulla rete e di conseguenza fornirne il percorso per la sua raggiungibilit da un altro terminale o dispositivo di rete in una comunicazione dati a pacchetto.

.Iso = una estensione utilizzata generalmente per immagini ISO, cio un file che contiene l'intero contenuto di un disco ottico (Cd o DVD) che pu essere usato direttamente (tramite software di emulazione) oppure inciso su un
supporto fisico tramite il processo di masterizzazione.

Macchina Virtuale (VM) = indica un software che, attraverso un processo di virtualizzazione, crea un ambiente
virtuale che emula il comportamento di una macchina fisica ed in cui alcune applicazioni possono essere eseguite come se interagissero con tale macchina.

MySql = un Relational database management system (RDBMS), composto da un client con interfacciaa riga di
comando e un server

Partizione Disco = indica una suddivisione logica di un'unit di memorizzazione fisica (per esempio un disco
rigido). Le singole unit logiche vengono viste dal sistema operativo come unit separate e possono essere gestite in modo indipendente. Su ogni disco

Root = il nome utente predefinito dell'amministratore di sistema. Spesso vengono usati come sinonimi
amministratore,super utente o superuser. L'utente root colui in grado di compiere operazioni non consentite agli utenti standard.

Ruby on Rails = un framework open source per applicazioni web scritto in Ruby . I suoi obiettivi sono la
semplicit e la possibilit di sviluppare applicazioni di concreto interesse con meno codice rispetto ad altri framework. Il tutto con necessit di configurazione minimale.

RubyGems = il formato dei pacchetti e il canale di distribuzione ufficiale per librerie ed applicazioni Ruby.

SSH = (Secure Shell,shell sicura) un protocollo di rete che permette di stabilire una sessione remota cifrata tramite
interfaccia a riga di comando con un altro host di una rete informatica.

Sudo = (abbreviazione di super user do) un programma per i sistemi operativi che permette di eseguire altri
programmi assumendo l'identit (e di conseguenza anche i privilegi) di altri utenti.

Webrick = una libreria di Ruby che fornisce servizi server Web HTTP semplici. Il server fornisce HTTP, HTTPS
con autenticazione, configurazione di Servlet con codice Ruby, e altre caratteristiche.

Riferimenti Sitografici
www.it.wikipedia.org http://www.ubuntu-it.org/ https://help.ubuntu.com/12.04/serverguide/serverguide.pdf