Desplegament amb OpenShift

De Cacauet Wiki
Dreceres ràpides: navegació, cerca

Intro[modifica]

OpenShift és una plataforma PaaS (Platform as a Service) de la companyia Red Hat, que realitza la famosa distribució Linux.

Com a usuaris bàsics de OpenShift disposarem de 3 gears o aplicacions senzilles.

Funciona amb un sistema de cartridges, podem afegir al nostre projecte de PHP una BBDD (MySQL, PostgreSQL o MongoDB).

És imprescindible tenir coneixements bàsics de control de versions i en particular de GIT.

Desplegarem una simple aplicació en PHP sobre OpenShift. Al tanto perquè en la pràctica disposarem de 2 repositoris GIT. Un d'ells és el que ens dona accés a OpenShift (despleguem al fer push) i un altre és el repositori de GitHub amb l'aplicació a instal·lar. Al nostre PC combinarem les dues fonts simultàniament per unir el codi de GitHub i desplegar-lo al OpenShift.



Setup[modifica]

Primer caldrà descarregar les eines necessàries i fer el compte a OpenShift

  1. Vés a OpenShift i crea't un compte d'usuari.
  2. Descarrega i instal·la les eines RHC (Red Had Cloud) necessàries per al teu sistema operatiu. Això inclou:
    • Ruby: intèpret del famós llenguatge amb el què estan fetes les eines RHC
    • GIT: eines de control de versions. Encara que els usuaris de Windows disposin d'eines GIT gràfiques, és necessari instal·lar la versió per comandes.
    • RHC: Red Hat Cloud , les eines pròpies del OpenShift


Un cop disposem de tot els necessari podem anar al lío.


Creant la app[modifica]

Creem la nostra app amb:

$ rhc app-create phpapp1 php-5.4

Al tanto perquè en la consola ens apareixeran les dades de la app, entre elles la URL on estarà instal·lada i l'accés SSH (que ens pot interessar força).

Ja està! Ja podem veure la app a la URL indicada :)

http://phpapp1-<namespace>.rhcloud.com


Primera modificació de la app[modifica]

Un exemple simple de com canviar la nostra app, canviarem el nom de l'arxiu i l'actualitzarem:

$ mv index.php index2.php

Afegim el nou arxiu (GIT ho interpreta com que ha desaparegut index.php i index2.php encara no està inclòs al projecte):

$ git add .

Fem un commit local:

$ git commit -a

Despleguem el nou projecte:

$ git push

Si ara anem a veure la URL, veurem que surt un missatge d'error perquè no hi ha un index.php (sí que funciona si afegim /index2.php).


Afegint un nou repositori[modifica]

Farem la prova amb l'aplicació welcome per cortesia dels alumnes de AWS2 de l'institut Esteve Terradas de Cornellà ;)

Com ja hem dit, afegirem un altre repositori de codi al projecte local que es dirà src:

$ git remote add src https://github.com/aws2/welcome.git

Descarreguem el contingut:

$ git pull src master

I ja tenim al directori local tots els arxius del projecte. Aquest és un projecte simple que no requereix BBDD.

Ara que els hem "unit" a la màquina local, podem desplegar tot el codi descarregat a la site de OpenShift:

$ git add .
$ git commit -a
$ git push origin

Tadaaaaaa! Ja tenim el nostre projecte desplegat a la URL indicada.


Pràctica amb un CMS[modifica]

Volem desplegar un CMS complert. OpenShift disposa d'alguns predefinits, però aquests NO ens valen ja que així practicarem com afegir cartridges i veurem el cas més general. Per tant, no es valen WordPress i altres que incorpora OpenShift.

Les passes recomanades son:

  1. Analitzar bé el CMS que voleu instal·lar. Convé instal·lar-ho en un Apache local per conèixer quin arxiu és el que cal configurar amb usuari/pass a la BBDD, etc. Això ens estalviarà quedar-nos encallats més endavant.
  2. Crear una app a OpenShift (en teniu 3 de gratuïtes).
  3. Afegir el cartridge de MySQL a la app (es pot fer mitjançant el panell de control web de OpenShift). Ens donarà les credencials que necessitem per accedir a la BBDD.
  4. Afegir PhpMyAdmin al MySQL. Ens caldrà per saber la IP del servidor de MySQL.
  5. Descarregar el codi del CMS al directori de la nostra app.
  6. Configurar l'arxiu de conf ajustant les dades de les credencials de la BBDD remota (la IP del servidor la podeu trobar amb el PhpMyAdmin.
  7. Afegir els arxius (add), commit i push per desplegar l'aplicació.


Recomanacions per desenvolupament vs desplegament[modifica]

Habitualment treballarem en local per fer desenvolupament del codi, i quan el tenim testejat, el passem a producció (en aquest cas amb un push). El problema és que la BBDD local i remota són diferents (i està bé que siguin diferents).

Per solventar aquest problema hi ha una solució. Imaginem que el nostre arxiu de conf és config.php. Es tracta de posar aquest arxiu a

.gitignore

...amb el què aconseguirem que GIT no el pugi a producció. De fet, és com ha de ser, ja que les dues configuracions han de ser diferents.

D'aquesta manera podem modificar tranquil·lament config.php amb els ajustos locals sense patir pels ajustos de producció, que es mantindran com els hem deixat en un principi.