sabato 10 novembre 2012

Uhuru AppCloud: Installare FatFreeCRM come Apps - Parte 3

 

Precedenti Post:

1. PAAS: Platform As A Service  - e il middleware diventa un servizio
2. Uhuru AppCloud: Installare FatFreeCRM come Apps - Parte 1
3. Uhuru AppCloud: Installare FatFreeCRM come Apps - Parte 2

Questo è l'ultimo passaggio di questo articolo sui sistemi PAAS.
Differentemente da quanto accade quando si utilizzano servizi di VPS o Server dedicati, non ci siamo soffermati sulla intallazione del framework, del database o sui particolari settaggi da utilizzare per la produzione.

Partendoda un ambiente di sviluppo personale e quanto mai diverso dal sistema di produzione finale, ci siamo esclusivamente preoccupati di identificare quali erano i SERVIZI che dovevamo utilizzare affinche la nostra applicazione potesse funzionare. E in questo caso abbiamo identificato un servizio di STORAGE/DATABASE ed un servizio di SERVER APPLICATIVO.

La differenza è sostanziale, non solo nei termini, ma nelle logiche concui le applicazioni vengono pensate, realizzate e deployate.

Veniamo agli utilimi passi....

Clonare FatFreeCRM in locale

Ora effettuiamo il clone del repository di fatFreeCRM
> git clone https://github.com/fatfreecrm/fat_free_crm.git

Modifichiamo quindi il file “gemfile” effettuando le seguneti modifiche:
  • lasciare solo la gemma relativa a MySQL
  • eliminare i gruppi :development, :test, :heroku

Modifichiamo anche il file config/database.mysql.yml effettuandone una copia rinominata in config/database.yml ed impostandolo come l’esempio:
> #------------------------------------------------------------------------------
> development: &development
> adapter: mysql2
> encoding: utf8
> database: d9818ba918245401c85e2e6efd4ceba85
> pool: 5
> username: uecvMF7JNEM1u
> password: p1l4sYafcOFVq
> socket: /var/run/mysqld/mysqld.sock
> host: 127.0.0.1
> port: 10000
>
> # Warning: The database defined as "test" will be erased and
> # re-generated from your development database when you run "rake".
> # Do not set this db to the same as development or production.
> test:
> <<: *development
> database: not-set
>
> production:
> <<: *development
> database: d9818ba918245401c85e2e6efd4ceba85

modifichiamo il file fat_free_crm.gemspec commentando la riga relativa alla specifica dei file:
#gem.files = `git ls-files`.split("\n")

possiamo quindi procedere con l’installazione delle gemme e la preparazione degli asset (l’operazione potrebbe durare alcuni minuti):

> bundle install
> bundle package
e procedere alla generazione degli asset (l’operazione potrebbe durare alcuni minuti):
> rake assets:precompile

quindi modifichiamo il file "config/environments/production.rb" impostando:
-config.serve_static_assets = true

Effettuare la pubblicazione sul cloud

Posizionarsi sulla cartella dell’applicazione (nel nostro caso c:\sites\fat_free_crm) ed eseguire il comando
> vmcu push --runtime ruby19

ci verranno richiesti una serie di parametri (in grassetto le risposte) :
> Would you like to deploy from the current directory? [Yn]: Y
> Application Name: FatFreeCrm
> Detected a Rails Application, is this correct? [Yn]: Y
> Application Deployed URL [FatFreeCrm.uhurucloud.com]: fatfree01.uhurucloud.com
> Memory reservation (128M, 256M, 512M, 1G, 2G) [256M]: 256M
> How many instances? [1]: 1
> Bind existing services to 'FatFreeCrm'? [yN]: y
> 1: ff-development
> Which one?: 1
> Create services to bind to 'FatFreeCrm'? [yN]: N
> Would you like to save this configuration? [yN]: y
> Manifest written to manifest.yml.
> ...

la procedura potrebbe durare alcuni minuti, ed in funzione del carico della rete e della connessione ad internet andare in timeout.
> Creating Application: OK
> Binding Service [ff-development]: OK
> Uploading Application:
> Checking for available resources: OK
> Processing resources: OK
> Packing application: OK
> Uploading (3M): OK
> HTTP exception: RestClient::RequestTimeout:Request Timeout
In tal caso è necessario utilizzare il comando vmcu update (le impostazioni sono state già salvate)
> vmcu update
>
> Updating application 'FatFreeCrm'...
> Uploading Application:
> Checking for available resources: OK
> Processing resources: OK
> Packing application: OK
> Uploading (2M): OK
> Push Status: OK
L’ultima operazione è l’esecuzione delle migrazioni necessarie alla creazione delle tabelle del db ed al popolamento dei dati di base. Per questa operazione si utilizzerà il comando rake in locale sfruttando il tunnel che è stato avviato all’inizio
> rake ffcrm:setup USERNAME=admin PASSWORD=password EMAIL=admin@example.com

una volta completato il task di rake è possibile avviare l’applicazione
> vmcu start FatFreeCrm

l’operazione potrebbe andare in timeout. È possibile verificare lo stato dei servizi con il comando
> vmcu apps
> PS C:\Sites\fat_free_crm> vmcu apps
>
> +-------------+----+---------+--------------------------------+----------------+
> | Application | # | Health | URLS | Services |
> +-------------+----+---------+--------------------------------+----------------+
> | FatFreeCrm | 1 | RUNNING | fatfree01.uhurucloud.com | ff-development |
> | caldecott | 1 | RUNNING | caldecott-96490.uhurucloud.com | ff-development |
> +-------------+----+---------+--------------------------------+----------------+

Complimenti.. avete appena pubblicato la vostra istanza di FatFreeCRM in cloud!