In questo articolo vedremo come utilizzare il servizio di Paltform as a Service offerto da Heroku. Da premettere che il servizio gratuito offerto da Heroku permette ad ogni applicazione di utilizzare un "solo" dyno , dove un dyno è un singolo processo, che a scelta può e
In questo articolo vedremo come utilizzare il servizio Cloud di Platform as a Service offerto da Heroku. Da premettere che il servizio gratuito offerto da Heroku permette ad ogni applicazione di utilizzare un “solo” dyno, dove un dyno è un singolo processo, che a scelta può essere o di tipo web o batch (denominato worker), che risponde alle richieste HTTP ed esegue l’applicazione.
Per quanto riguarda il database, utilizzando il piano dev all’interno dello Starter Tier, è possibile utilizzare gratis fino a 10 mila righe di database per massimo 20 connessioni e senza caching in-memory.
I linguaggi supportati da Heroku comprendono Ruby, Java, Node.js, Scala, Clojure, Python e PHP ed il Sistema Operativo alla base è Debian o Ubuntu.
Prima di iniziare introduciamo alcuni dei termini utilizzati all’interno della Piattaforma di servizi Cloud Heroku. Ritorniamo sul concetto di dyno: esso è l’unità base all’interno di Heroku ed è un container (di tipo lightweight) che esegue un singolo comando (per utente). Possiamo assimilarlo ad un container Unix virtualizzato che può lanciare un comando nell’ambiente selezionato (nel nostro caso il Cedar Stack). Il comando eseguito in un dyno può essere un processo web, un processo worker (batch) o un altro tipo di processo la cui sintassi è consentita nel file Procfile.
Il Celadon Cedar Stack è il runtime stack di default di Heroku; con runtime stack si intende l’ambiente completo per il deploy, il quale comprende il S.O., i linguaggi di programmazione e le librerie. Di seguito indichiamo i due stack supportati (anche se lo stack Bamboo è ormai obsoleto e non è possibile pubblicare nuove App su di esso) ed i linguaggi supportati da essi:
Base Technology | MRI 1.8.6 | REE 1.8.7 | MRI 1.9.2 | Node.js | Clojure | Java | Python | Scala | |
Badious Bamboo | Debian Lenny 5.0 | • | • | ||||||
Celadon Cedar | Ubuntu 10.04 | • | • | • | • | • | • | • |
La piattaforma è inoltre legata al servizio di Social Coding ( e Versioning) Github come si evidenzia nella figura:
E’ possibile infatti scaricare un progetto da Github (che può essere stato sviluppato da diversi collaboratori) e poi pubblicare la release finale in automatico sulle macchine Heroku.
Registriamoci al servizio Cloud Heroku
Per poter utilizzare il servizio, bisogna innanzitutto registrarsi fornendo la propria mail a questo indirizzo:
Riceveremo una mail con un link di attivazione, seguendo il link otteniamo:
Scegliamo una password e clicchiamo su Send, verremo automaticamente loggati sui Server Heroku.
Installiamo il programma client Heroku Toolbelt
Per poter pubblicare una nostra applicazione sul servizio Cloud di Heroku, dobbiamo installare un programma client denominato Heroku Toolbelt, esso comprende:
- Heroku Client: il client (a linea di comando) per interfacciarsi col servizio;
- Foreman: un programma per eseguire localmente le proprie applicazioni (opzionale);
- Git: per poter pubblicare le applicazioni su Heroku;
- un runtime Ruby: serve per il funzionamento di tutti gli altri software.
Heroku Toolbelt è scaricabile all’indirizzo:
https://toolbelt.herokuapp.com/
ed è disponibile per molti S.O. compresi Windows, Linux (Ubunu e Debian) e Mac OS X.
Per chi avesse un ambiente con già installato Ruby e Git, è possibile installare il solo client Heroku come “gemma” tramite il comando:
gem install heroku
tornando invece all’Heroku Toolbelt, una volta scaricato, lo lanciamo facendo doppio click (in Windows è un file .exe).
Clicchiamo su Next:
Indichiamo il Path d’installazione e clicchiamo su Next.
Osservazione: quello che indichiamo è il Path d’installazione dell’Heroku Client (e non di tutti gli altri software che compongono il pacchetto Toolbelt), infatti installando sulla macchina di prova mi ritrovo la cartella Heroku correttamente sulla partizione E: , mentre sia l’ambiente Ruby che Git vengono installati su C: (sempre in Program Files(x86)).
A questo punto possiamo scegliere tra la Full Installation o la Custom Installation: nella Custom Installation possiamo decidere se installare o meno Foreman o Git (nel caso in cui avessimo già una precedente installazione).
Clicchiamo su Next ed otteniamo una schermata di riepilogo. Clicchiamo su Install.
L’installazione provvederà anche ad includere il percorso “E:\Program Files (x86)\Heroku\bin” (quello che abbiamo scelto durante l’installazione) nella variabile d’ambiente PATH , così come i path alle cartelle bin dell’ambiente Ruby e Git.
Prima di continuare, vi segnalo un piccolo problema che potrebbe insorgere con la configurazione di Ruby: come detto verrà installato anche l’ambiente Ruby, ma quando proviamo a lanciare la “Command Prompt with Ruby“, che troviamo nel menù “Tutti i Programmi“:
potrebbe essere segnalato il seguente errore(“C:Program” non è riconosciuto come comando interno o esterno, un programma eseguibile o un file batch):
questo errore avviene perchè abbiamo installato Ruby in un path il cui nome ha all’interno degli spazi (“Program Files”), come workaround basta aggiungere degli apici quando viene richiamato il path: facciamo tasto destro su “Command Prompt with Ruby” e poi clicchiamo su Proprietà:
clicchiamo su Collegamento e in destinazione troviamo:
C:\Windows\System32\cmd.exe /E:ON /K C:\Program Files (x86)\ruby-1.9.2\bin\setrbvars.bat
quindi poniamo degli apici quando troviamo il richiamo al file setrbvars.bat :
C:\Windows\System32\cmd.exe /E:ON /K "C:\Program Files (x86)\ruby-1.9.2\bin\setrbvars.bat"
Il file setrbvars.bat serve ad inizializzare l’ambiente Ruby, in particolare setta la variabile d’ambiente PATH, in realtà l’installazione dell’Heroku Toolbelt già provvedere a settare tale Variabile d’Ambiente, quindi questa modifica potrebbe non essere necessaria.
A questo punto l’installazione dovrebbe essere perfettamente funzionante, quindi lanciamo una finestra di comando e digitiamo il seguente comando per loggarci ad Heroku:
heroku login
ci verranno richieste le credenziali di accesso (email e password).
viene inoltra generata la chiave pubblica per la connessione SSH.
Creiamo una prima applicazione di test
Possiamo ora creare una App di test con il comando:
heroku create
così facendo però sara Heroku ad assegnare un nome univoco alla nostra App (il nome deve essere univoco all’interno di tutta la piattaforma Heroku, quindi non solo all’interno delle nostre App, altrimenti riceviamo un errore del tipo “Name is already taken“), altrimenti possiamo passarglielo come parametro:
heroku create test-app
per avere una lista delle App già inviate al server basta digitare:
heroku apps
per cancellare una App:
heroku destroy nomeApp
verrà poi chiesto di ridigitare il nome della App. Per conoscere gli altri comandi disponibili basta digitare:
heroku help
l’help è però suddiviso in sezioni, quali:
- addons
- apps
- config
- …
per interrogare l’help di una particolare sezione basta precedere il nome della sezione dalla keyword help:
heroku help apps
Otteniamo questo output:
Possiamo gestire le nostre applicazioni anche tramite browser andando all’indirizzo:
https://dashboard.heroku.com/apps
una volta autenticati, possiamo scorrere la lista delle nostre App:
ad esempio l’Applicazione che abbiamo creato in precedenza ha assunto il nome casuale di mighty-reef-5917: cliccando sul nome dell’App si aprirà una dashboard tramite la quale possiamo gestire diversi parametri associati alla nostra App (ad esempio possiamo aggiungere degli Addons, cambiare nome all’App, aggiungere dei collaboratori, avere uno storico delle attività svolte sull’App, ecc…) :
Eseguiamo l’Applicazione
Per eseguire l’applicazione clicchiamo su Open Application:
L’Applicazione creata è una semplice pagina web che visualizza un messaggio di benvenuto.
Creiamo una applicazione Ruby
Creiamo ora una Applicazione utilizzando del codice sorgente, per questa prima prova utilizzeremo del codice Ruby.
Su Github è presente un progetto di esempio in Ruby (realizzato dagli sviluppatori di Heroku stessa) che visualizza il classico messaggio Hello World:
https://github.com/heroku/ruby-sample
la prima cosa da fare è scaricare il progetto in una nostra cartella locale, per farlo utilizzeremo il comando clone di git:
git clone https://github.com/heroku/ruby-sample.git
verrà creata una cartella ruby-sample nella directory corrente (quella da cui abbiamo lanciato il comando precedente):
il file web.rb contiene il seguente codice Ruby:
require 'sinatra'
get '/' do
"Hello, world"
end
quindi un semplice print della stringa Hello World. L’unico prerequisito è la libreria Open Source Sinatra che implementa il pattern architetturale del Model View Controller, simile a Rails, Merb o Camping. Il file Gemfile descrive invece quali gemme sono richieste per il funzionamento del progetto, nel nostro caso è richiesta la gemma Sinatra. La presenza di questo file è inoltre necessaria per poter far riconoscere alla piattaforma Heroku che siamo in presenza di un progetto Ruby, quindi va incluso anche se vuoto. Il file Procfile contiene il comando utilizzato per poter far partire il proprio dyno, nel nostro caso esso è di tipo web e deve lanciare il codice del file web.rb.
web: bundle exec ruby web.rb -p $PORT
Ora ci spostiamo nella cartella ruby-sample col comando:
cd ruby-sample
e creiamo una nuova applicazione su heroku:
heroku create ruby-sample-appuntisoftware
così facendo creiamo anche un nuovo remote repository di nome heroku. A questo punto possiamo fare l’upload del nostro codice tramite Git:
git push heroku master
ritorniamo alla lista delle applicazioni pubblicate sul Cloud di Heroku e clicchiamo sulla applicazione appena creata, oppure possiamo utilizzare direttamente il link fornito in fase di creazione dell’applicazione (sarà sempre del tipo http://nomeapp.herokuapp.com), otteniamo il nostro “bellissimo” messaggio di Hello World.
Con questo termina il nostro primo tutorial, nel prossimo articolo vedremo come pubblicare una applicazione in linguaggio Java.
COMMENTS