joomla openshiftVedremo dei semplici passi per l'installazione dell'ultima versione ad oggi stabile di Joomla, la 1.7 sul cloud OpenShift di Red Hat.

Nel'articolo useremo per convenzione che i comandi shell preceduti dal # (cancelletto) dovranno essere lanciati dall'utente amministratore o in alternativa utilizzando sudo. I comandi preceduti da $ (dollaro) possono essere lanciati da un normale utente che non ha i privilegi di root.

Per prima cosa abbiamo bisogno del client OpenShift che ci servirà per la creazione del cloud, la configurazione e l’aggiunta di applicazioni e servizi. E` possibile scegliere 3 profili di OpenShift, noi faremo riferimento a quella gratuita chiamata Express, ci sono poi la Flex e la Power in caso abbiamo bisogno di maggiori performance.

Di seguito i passi per l'installazione del client OpenShift su un sistema RHEL 6 o superiore, oppure Fedora 14 o una versione più recente. Questa guida non ha lo scopo di coprire tutti i casi, per gli altri sistemi operativi si rimanda alla documentazione del progetto. Installazione del client per OpenShift: # cd /etc/yum.repos.d/ # wget https://openshift.redhat.com/app/repo/openshift.repo # yum -y install rhc Al termine dell'installazione abbiamo sul nostro computer tutti i pacchetti necessari per lanciare il nostro portale Joomla. Vedremo che grazie a GIT non sarà necessario neanche scaricare il pacchetto di Joomla. Ora possiamo utilizzare i comandi appena installati di OpenShift per creare il nostro sotto dominio che chiameremo joomla. Quando questo comando verrà eseguito per la prima volta verranno create delle chiavi SSH che saranno usate per comunicare con Openshift Express. E` possibile creare un solo sottodominio per ogni utente registrato. $ rhc-create-domain -n joomla -l guest@example.it

Password: Generating OpenShift Express ssh key to /home/guest/.ssh/libra_id_rsa Generating public/private rsa key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/guest/.ssh/libra_id_rsa. Your public key has been saved in /home/guest/.ssh/libra_id_rsa.pub. The key fingerprint is: 3e:88:b7:e9:a4:c8:6c:e3:9a:16:d4:32:b7:70:06:61 guest@example.com The key's randomart image is: +--[ RSA 2048]----+ | E. | |.. | | o | | = = | |. B . S | | . . . o | | . . + o | | =o. + o . | |++=...+ | +-----------------+ Contacting https://openshift.redhat.com Creation successful

You may now create an application.

Ora possiamo creare la nostra applicazione, prima però vediamo il contenuto del file di configurazione: $ cat .openshift/express.conf

# SSH key file

ssh_key_file = 'libra_id_rsa'

Default rhlogin to use if none is specified

default_rhlogin=guest@example.it

C'è specificato l'rhlogin che userà di default se non specificato. Questo ci semplifica il lancio dei successivi comandi perché da ora in poi non sarà più necessario specificarlo.

Ora possiamo creare un'applicazione, Joomla necessita del PHP ed è la prima cosa che andremo ad installare nel nostro cloud. Con rhc-create-app --help abbiamo la lista delle applicazioni supportate. Creiamo una directory che diventerà il repository di GIT, in poche parole la nostra directory di lavoro: $ mkdir rhc-joomla $ cd rhc-joomla $ rhc-create-app -a test -t php-5.3

Password:

Found a bug? Post to the forum and we'll get right on it. IRC: #openshift on freenode Forums: https://www.redhat.com/openshift/forums

Attempting to create remote application space: test Contacting https://openshift.redhat.com API version: 1.1.1 Broker version: 1.1.1

RESULT: Successfully created application: test Checking ~/.ssh/config Contacting https://openshift.redhat.com Adding rhcloud.com to ~/.ssh/config Now your new domain name is being propagated worldwide (this might take a minute)... Pulling new repo down Warning: Permanently added 'test-joomla.rhcloud.com,107.22.25.216' (RSA) to the list of known hosts. Confirming application test is available Attempt # 1

Success! Your application is now published here:

 http://test-joomla.rhcloud.com/

The remote repository is located here:

 ssh://791a8fe8bd1c48c1820f933c6cad3579@test-joomla.rhcloud.com/~/git/test.git/

To make changes to your application, commit to test/. Then run 'git push' to update your OpenShift Express space

Abbiamo creato la nostra applicazione chiamata test e gli abbiamo specificato che userà il php. Niente di più semplice, non dobbiamo installare il php direttamente sul cloud partendo dal pacchetto o dai sorgenti perché OpenShift lo fa per noi in modo del tutto trasparente. Vediamo se è altrettanto semplice aggiungere un altro servizio di cui Joomla ha bisogno, un server MySql. $ rhc-ctl-app -a test -e add-mysql-5.1

Password: Contacting https://openshift.redhat.com Contacting https://openshift.redhat.com API version: 1.1.1 Broker version: 1.1.1

RESULT:

Mysql 5.1 database added. Please make note of these credentials:

Root User: admin
Root Password: Q2eXtiXqcXXX
Database Name: test

Connection URL: mysql://127.1.33.XXX:3306/

In meno di un secondo abbiamo anche il nostro database server installato ed avviato. L'output ci fornisce le informazioni per l'accesso e ci comunica che è stato creato un database con lo stesso nome che abbiamo scelto per la nostra applicazione. Ora il nostro ambiente è pronto per l'installazione di Joomla. Grazie alla potenza di GIT possiamo fare tutto in modo molto pulito e veloce. GIT infatti ci permettere di aggiungere un ulteriore repository al nostro branch di lavoro. Dopo essere entrati nella directory "test" digitiamo il comando $ git remote add upstream -m master git://github.com/openshift/joomla-example.git Fatto. Facciamo ora il fetch e il merge con il nuovo repository: $ git pull -s recursive -X theirs upstream master

warning: no common commits remote: Counting objects: 3805, done. remote: Compressing objects: 100% (2963/2963), done. remote: Total 3805 (delta 818), reused 3805 (delta 818) Receiving objects: 100% (3805/3805), 4.83 MiB | 340 KiB/s, done. Resolving deltas: 100% (818/818), done. From git://github.com/openshift/joomla-example * branch master -> FETCH_HEAD

*** Please tell me who you are.

Run

git config --global user.email "you@example.com"
git config --global user.name "Your Name"

to set your account's default identity. Omit --global to set the identity only in this repository.

fatal: empty ident not allowed

Ci ha restuito un errore perché il repository di github necessita dell'autenticazione. Quindi andiamo sul sito github ed effettuiamo la registrazione. Poi diciamo a git di utilizzare lo username appena registrato. $ git config user.name "guest" Lanciamo il comando precedente ed ora vediamo che l'operazione va a buon fine. $ git pull -s recursive -X theirs upstream master

From git://github.com/openshift/joomla-example * branch master -> FETCH_HEAD Auto-merging .openshift/action_hooks/build Auto-merging php/index.php Merge made by recursive. .openshift/action_hooks/build | 38 +- .openshift/action_hooks/joomla.sql | 1860 +++ README.md | 51 + php/LICENSE.txt | 340 + php/README.txt | 70 + php/administrator/cache/index.html | 1 + php/administrator/components/com_admin/admin.php | 20 + php/administrator/components/com_admin/admin.xml | 30 + .../components/com_admin/controller.php | 24 + .../components/com_admin/controllers/index.html | 1 + .../components/com_admin/controllers/profile.php | 89 + .../com_admin/helpers/html/directory.php | 61 + .../components/com_admin/helpers/html/index.html | 1 + .../com_admin/helpers/html/phpsetting.php | 81 + .../components/com_admin/helpers/html/system.php | 37 + .../components/com_admin/helpers/index.html | 1 + php/administrator/components/com_admin/index.html | 1 + .../components/com_admin/models/forms/index.html | 1 + .../components/com_admin/models/forms/profile.xml | 136 + [...]

Facciamo il push del repository upstream, questa operazione serve per aggiornare refs remoto usando quello locale, e va fatta ogni volta che vogliamo pubblicare le modifiche di Joomla. $ git push

Counting objects: 3811, done. Compressing objects: 100% (2966/2966), done. Writing objects: 100% (3805/3805), 4.83 MiB | 327 KiB/s, done. Total 3805 (delta 819), reused 3800 (delta 818) remote: Stopping application... remote: Waiting for stop to finish remote: Done remote: Running .openshift/action_hooks/build remote: ERROR 1146 (42S02) at line 1: Table 'test.tt7ki_assets' doesn't exist remote: remote: Database schema not found, importing 'joomla.sql' schema. remote: remote: remote: done. remote: ================================================== remote: Joomla admin login: admin remote: Joomla admin password: 4dm1n remote: Don't forget to change your Joomla admin password! remote: ================================================== remote: Starting application... remote: Done To ssh://791a8fe8bd1c48c1820f933c6cad3579@test-joomla.rhcloud.com/~/git/test.git/ 0f9bf26..fff3d3e master -> master

Dall'output possiamo vedere che il database non era inizializzato e lui si è preoccupato di farlo. Questa operazione normalmente veniva effettuata durante il processo configurazione di Joomla, che però in questo contesto non abbiamo bisogno di eseguire perché chi ha creato joomla-example su github lo ha già configurato per girare sul cloud di Red Hat. Abbiamo terminato l'installazione, ora possiamo utilizzare Joomla. Aprimo la url http://test-joomla.rhcloud.com/ la url è formata in questo modo http://$app_name-$your_domain.rhcloud.com quindi se abbiamo scelto nomi diversi per l'applicazione o il dominio dovremmo modificarla opportunamente. Se abbiamo eseguito tutti i passi correttamente dovremmo poter iniziare ad utilizzare Joomla. Ho utilizzato il condizionale perché in realtà se apriamo l'url viene visualizzato solamente il seguente messaggio di errore:

Infinite loop detected in Jerror

Questo è meno grave di quanto sembra, innanzi tutto è un errore generato da Joomla, quindi è stata lanciata l'applicazione che abbiamo appena installato. Il loop infinito si riferisce ad un errore che indirizza ad un errore, nel nostro caso avviene che ho una query che va in errore nella homepage e sull'errore faccio una redirect in homepage, ed è così che si genera un loop infinito. Quindi c'è qualcosa che non va nella configurazione del database. Apriamo il file php/configuration.php e modifichiamo i parametri per la connessione del db settandoli con i valori che abbiamo ottenuto durante la generazione del database.

public $host = '127.1.33.XXX'; public $user = 'admin'; public $password = 'Q2eXtiXqcXXX'; public $db = 'test';

Non ci resta che rendere effettive le modifiche. $ git add php/configuration.php $ git commit -m 'alter db configuration'

[master 28bb973] alter db configuration 1 files changed, 4 insertions(+), 4 deletions(-)

$ git push

Counting objects: 7, done. Compressing objects: 100% (4/4), done. Writing objects: 100% (4/4), 419 bytes, done. Total 4 (delta 3), reused 0 (delta 0) remote: Stopping application... remote: Waiting for stop to finish remote: Done remote: Running .openshift/action_hooks/build remote: Database found, skipping import. remote: Starting application... remote: Done To ssh://791a8fe8bd1c48c1820f933c6cad3579@test-joomla.rhcloud.com/~/git/test.git/ fff3d3e..28bb973 master -> master

Ora tutto è pronto per essere utilizzato, all'indirizzo http://test-joomla.rhcloud.com/ c'è la nostra homepage, l'amministrazione possiamo raggiungerla alla url http://test-joomla.rhcloud.com/administrator/ le credenziali di accesso sono utente admin e password 4dm1n che è preferibile cambiare dopo il primo accesso.

Licenza d'uso "Attribuzione - Non commerciale - Non opere derivate", secondo i criteri internazionali Creative Commons