PiumaLab

Idee, esperimenti, tentativi e molto altro

Installazione di Joomla nel cloud di Red Hat

joomla openshift Vedremo 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

Leave a Reply

Your email address will not be published. Required fields are marked *