JoeTip #003 - Instalando Cuba en Rackspace

Cuba, Ruby, Redis, Apache 2


Hola, este post es para quienes quieren usar CUBA framework y Ruby, Redis en su servidor hospedado en Rackspace. Yo tengo un Centos como sistema operativo linux.



Como pueden ver yo ya he descargado las versiones que necesito para trabajar en mi carpeta source que tengo en la raíz de root, aquí les pongo el comando con las versiones correspondientes para que la instalación sea "like a boss":

$ wget ftp://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p353.tar.gz
$  wget http://production.cf.rubygems.org/rubygems/rubygems-2.1.7.tgz

Lo único que no voy a instalar es Apache 2 porque ya lo tengo instalado. Pero instalar un apache o nginx es muy sencillo también.


RVM


Es bueno tener instalado RVM para poder manejar diferentes versiones de ruby en tu servidor.

Antes hay que instalar algunas dependencias.

$ yum install git-core curl gcc make libcurl4-openssl-dev libreadline-dev libxslt-dev libxml2-dev
$ curl -L get.rvm.io | bash -s stable
Con el último comando ya se instala RVM.

Instalando Ruby

Ruby es sencillo, solo tienen que descomprimir, y luego seguir esta secuencia de comandos. 
Antes yo he creado una carpeta sour

$ tar -zxf ruby-2.0.0-p353.tar.gz
$ cd ruby-2.0.0-p353
$ ./configure
$ make
$ sudo make install



Instalando RubyGems


Instalar Rubygems es similar:



$ tar -zxf rubygems-2.1.7.tgz
$ cd rubygems-2.1.17
$ sudo ruby setup.rb


Luego ya podremos instalar algunas gemas importantes como:

$ gem install bundle
$ gem install rake

Instalando Passenger

$gem install passenger
sudo passenger-install-apache2-module
Luego en tu httpd.conf de apache incluir estas lineas
#ruby
LoadModule passenger_module /usr/local/rvm/gems/ruby-2.0.0-p353/gems/passenger-4.0.27/buildout/apache2/mod_passenger.so
   PassengerRoot /usr/local/rvm/gems/ruby-2.0.0-p353/gems/passenger-4.0.27
   PassengerDefaultRuby /usr/local/rvm/wrappers/ruby-2.0.0-p353/ruby
Nota: Verifique la versión de passenger o las rutas serán distintas.

Instalando Redis

$ wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
$wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
$ rpm -Uvh remi-release-6*.rpm epel-release-6*.rpm
$ yum install redis -y
Luego ya se puede aplicar
$redis start
$redis stop
Para que inicie redis al reiniciar el servidor:
$  sudo chkconfig --add redis
$ sudo chkconfig --level 345 redis on
$  service redis start


Creando una Simple aplicación Cuba

En tu Document Root crea una aplicación cuba. Para eso he creado un directorio llamado holacuba.


Al interior de holacuba tengo el archivo index.rb

require "cuba"
require "cuba/render"

                    
Cuba.plugin Cuba::Render

Cuba.define do
  on get do
    on "hello" do
      res.write "Hello world!"
    end

    on root do
      res.redirect "/hello"
    end
  end
end

Y su archivo config.ru con este contenido:

# cat config.ru
require "./index"

run Cuba


Luego para lograr que sea accesible desde internet colocamos este virtualhost en el httpd.conf de apache:





    ServerAdmin jose.diaz@joedayz.pe
    DocumentRoot /var/www/html/holacuba/public
    ServerName www.redmine.joedayz.pe
    ServerAlias redmine.joedayz.pe
   
        AllowOverride all
        Options -MultiViews
   

NOTA: No se olvide de la carpeta public o no levantara


Reiniciamos el apache y vamos a redmine.joedayz.pe y ...


Espero les sirva, porque busque mucha información por la red y sobre Cuba en Rackspace casi nada.

Joe


Comentarios

  1. En la lista de RubySur explicaron muy bien como corre ruby en un servidor web. Lo comparto:

    Primero bienvenido al grupo.

    Las cosas que se pueden hacer y para las que se puede usar Ruby son muy amplias pero si querés encarar desarrollo Web con Ruby te recomiendo leas libros como Agile Web Development with Rails (para Rails 4) [1].

    Tambien hay libros sobre Sinatra. En ambos casos, tarde o temprano, vas a terminar leyendo y viendo cosas de Rack [2]

    Esta parte es importante ya que Rack es la base de muchos frameworks (estandariza el protocolo HTTP entre los frameworks).

    Rack te provee una abstracción del web server, ya sea nginx o Apache, y luego tenes otros servers por sobre Rack para tu aplicacion, como Unicorn o Puma.

    A diferencia de Perl y PHP, vas a ver que CGI no es, hoy en dia, el modo de correr aplicaciones Ruby pero en su lugar, se opta por un modelo de "long running processes" en donde tu aplicación está todo el tiempo corriendo.

    Esto es debido a que cargar la aplicación por cada request, dependendiendo del tamaño de la aplicación, seria muy costoso para el CPU.

    Espero te sirva de algo.

    [1] http://pragprog.com/book/rails4/agile-web-development-with-rails-4
    [2] http://rack.github.io/

    ResponderEliminar
  2. DreamHost is ultimately the best web-hosting company with plans for all of your hosting requirments.

    ResponderEliminar

Publicar un comentario

Entradas populares