Archivo de la categoría: Linux

Pyramid framework en OpenShift

Pyramid es un framework de python para desarrollar aplicaciones web. Sus fuertes son la velocidad, flexibilidad y escalabilidad que ofreces a los desarrolladores. No es un full-stack framework (Full-Stack: el objetivo principal de los full-stack es proveer un conjunto de componentes que abarque todo lo que necesitas para construir una aplicación web, asegurandose que todos esos componentes funcionen bien entre si.) como Django y no es un microframework como Flask o Bottle. Y a su vez OpenShift es una plataforma deployar aplicaciones en la “nube” (algo así como heroku, cloudcontrol, phpfog, Amazon, etc.) bajo la infraestructura de Red Hat. Openshift permite integrar (sin necesidad de otro servicio) base de datos en MySQL, MongoBD, PostgreSQL, etc.

Requisitos para esta guía:

– Linux Fedora (es un requisito por los repositorios, pero si utilizan otra distribución no hay problema).
– Cuenta en Open Shift.
– Habilitar base de datos MySQL en consola de aplicaciones en Open Shift

Lo primero es registrarnos en Open Shift http://openshift.redhat.com.
Luego creamos nuestra aplicación en la administración de aplicaciones y en el momento de seleccionar el lenguaje a utilizar, seleccionamos Python (obvio o no? xD ).

La configuración de la aplicación en OpenShift no es parte de esta guía, asi que lo saltaremos. Si no saben como utilizar Open Shift les recomiendo utilizar la documentación disponible en el mismo sitio, y las guías de instalación en diferentes sistema operativos.

Ahora los pasos que realmente nos interensan.

Instalamos git como controlador de versiones (Requisito para modificar el código de nuestra aplicación).

[sourcecode language=”bash”]yum install git[/sourcecode]

Recuerden agregar su llave pública en la consola de administración de aplicaciones en el sitio de Open Shift.

Instalamos las herramientas de clientes de Open Shift. Con esta herramienta se pueden administrar el estado de las base de datos de nuestras aplicaciones, crear nuevas aplicaciones, etc.
Según la distribución de linux que tengamos, el nombre del paquete puede cambiar.

[sourcecode language=”bash”]yum install rubygem-rhc[/sourcecode]

Descargamos nuestro código fuente (reemplazar por su repositorio).

[sourcecode language=”bash”]git ssh://xxXXxxXXxXXxXXXxxx@xxxxx-xxxx.rhcloud.com/~/git/xxxxxx.git/[/sourcecode]

Si no hemos instalado la base de datos mysql, lo hacemos ahora. (Esta tarea también se puede realizar a través del administrador de aplicaciones de Open Shift). Es importante reemplazar el nombre del proyecto y el email por el mismo que utilizaron al crear su cuenta de Open Shift.

[sourcecode language=”bash”]rhc-ctl-app -a nombreproyecto -e add-mysql-5.1 -l your@email.com[/sourcecode]

Tenemos diversas opciones para administrar nuestra base de datos:

[sourcecode language=”bash”]rhc app cartridge start -a nombreproyecto -c mysql-5.1
rhc app cartridge stop -a nombreproyecto -c mysql-5.1
rhc app cartridge restart -a nombreproyecto -c mysql-5.1
rhc app cartridge reload -a nombreproyecto -c mysql-5.1
rhc app cartridge status -a nombreproyecto -c mysql-5.1
rhc app cartridge remove -a violeta -c mysql-5.1[/sourcecode]

Entramos al directorio del proyecto.

[sourcecode language=”bash”]cd nombreproyecto[/sourcecode]

Hacemos la referencia a pyramid.

[sourcecode language=”bash”]git remote add upstream -m master git://github.com/lmacken/pyramid-openshift-quickstart.git[/sourcecode]

 

[sourcecode language=”bash”]git pull -s recursive -X theirs upstream master[/sourcecode]

Y finalmente guardamos.

[sourcecode language=”bash”]git push[/sourcecode]

Eso es todo, espero haya servido esta guía y si quieren aportar algo bienvenido sea.
Recuerden visitar nuestra comunindad de Python Chile y participar en nuestros MeetUp

Ruby on Rails + Cassandra DB en Linux Ubuntu

Estimandos, continuando con las guías entretenidas: Seguimos con el simpático lenguaje de desarrollo Ruby y su framework Rails. Y para hacerlo más entretenido aún implementaremos la base de datos no relacional (noSQL) Cassandra, dicha base de datos fué creada por facebook, pero al poco tiempo pasó a las manos de Apache Fundation en la cual se desarrolló y desarrolla hasta convertirse en lo que es hoy. En esta guía básica utilizaremos la versión 0.8.4 de Cassandra. Comencemos!.

Para los propósitos de esta guía, necesitamos:

– Linux Ubuntu.

– Conección a internet

– y llevar lo ñoñez en la sangre!

 

Ruby on Rails

Primero instalamos Ruby, aplicando la magia de ubuntu…

sudo apt-get install ruby

Seguimos con su framework Rails (necesitamos el cargador de gemas de Ruby y el interprete irb):

sudo apt-get install irb
sudo apt-get install rubygems
sudo gem install rails -–include-dependencies

Y para no perder la linea, creemos de inmediato un proyecto:

rails new primerProyecto

Nos generará una larga lista de de directorios y archivos.

Los que nos interesan como referencia básica son:

cd primerProyecto
app/controllers
app/views
script/rails
 

Entonces creamos nuestro controlador

ruby script/rails generate controller Home index

El cual también generará un par de archivos, donde:

script/rails : es el script escrito en ruby que realizará el procedimiento de generación los archivos.

generate : es la acción a realizar.

controller : es el tipo de archivos que queremos generar.

Home : es el nombre del controlador que se generará.

index : es el método que vamos a crear dentro del controlador, si quisiéramos generar más, basta con ir escribiéndolos separados con un espacio.

 

Abrimos nuestro controlador:

(Yo utilizo “vim” como editor de consola, utilicen el que deseen)

vim app/controllers/home_controller.rb

Nos encontramos con una estructura así:

class HomeController < ApplicationController
        def index
        end
end

Tengo 2 formas de comentar codigo, una es con un # ante de la linea y para comentar parrafos debo hacerlo con

#Esta es mi forma de comentar
#de una sola linea

=begin
Aquí va mi texto comentado
en forma de párrafo
en varias lineas
=end

Creamos una función index, que por defecto es la primera función que se ejecuta entrar al controlador:

Ojo con las comillas, porque si copian y pegan pueden tener problemas, recomiendo escribirlas manualmente.

class HomeController < ApplicationController
    # Controlador que se ejecuta por default
    def index
        # render:text escribe un texto en pantalla sin la necesidad de crear una vista (views) explicitamente
        render:text => “Hola Mundo!”
    end
end

Ahora si quiere utilizar el controlador más la vista, lo hacemos de la siguiente forma

class HomeController < ApplicationController
    # Controlador que se ejecuta por default
    def index
        @nombre => “Mi nombre es Pablo Araya<br />”
        @ubicacion => “Santiago, Chile”
    end
end

Abrimos nuestra vista

vim app/views/home/index.html.erb

Deberíamos verla así

<h1>Home#index</h1>
<p>Find me in app/views/home/index.html.erb</p>

y lo dejamos así:

 <h1>Home#index</h1>
<p>Find me in app/views/home/index.html.erb</p> 
<%= "Mi nombre es "+nombre+" y vivo en "+ubicacion %>

el codigo ruby va entre estas etiquetas

<%
# Aqui nuestro codigo
%>

si queremos imprimer algo en el navegador agregamos el signo =

<%= variable %>

 

Ahora es el turno de Cassandra

Bajamos la última versión de Cassandra: http://cassandra.apache.org/#download o en consola:

wget http://apache.freeby.pctools.cl//cassandra/0.8.4/apache-cassandra-0.8.4-bin.tar.gz

Lo descomprimimos, lo renombramos a cassandra y lo movemos al directorio /opt:

tar xzvf apache-cassandra-0.8.4-bin.tar.gz
mv apache-cassandra-0.8.4-bin cassandra
sudo mv cassandra /opt/

Creamos los directorios que la aplicación necesita:

sudo mkdir -p /var/lib/cassandra/{commitlog,data,callouts,staging}
sudo mkdir /var/log/cassandra
sudo chmod -R 777 /var/lib/cassandra/

Creamos el fichero /var/log/cassandra/system.log y le damos permisos de escritura:

touch /var/log/cassandra/system.log
sudo chmod 777 /var/log/cassandra/system.log

Necesitamos crear nuestra estructura de base de datos, ya que Cassandra es un motor no relacional, su estructura parece grandes columnas o arreglos bidimensionales.

Ahora ya podemos levantar Cassandra, de forma default o definiendo parametros.

/opt/cassandra/bin/cassandra -f &
/opt/cassandra/bin/cassandra-cli -host localhost -port 9160

Lo entretenido de esta guía es hacer que estos dos sistemas interactuen, asi que nos vamos a nuestro controlador:

vim app/controllers/home_controller.rb

Y lo dejamos de la siguiente forma:

# Traigo mi gema cassandra para realizar la conexion
require 'cassandra'
class HomeController < ApplicationController
    # Controlador que se ejecuta por default
    def index
        =begin
        Creo mi nueva conexion con Cassandra.new('Espacio de trabajo','ip servidor')
        Si tengo ruby y cassandra en el mismo servidor, puedo omitir la ip
        =end
        store = Cassandra.new('Keyspace1')
        @nombre => “Mi nombre es Pablo Araya<br />”
        @ubicacion => “Santiago, Chile”
    end
end

Continua..