Nos mudamos

March 29th, 2007

Finalmente comenzamos el proceso de migración de todas las aplicaciones que estaban en nuestro ex provider a los nuevos servidores virtualizados.

A la brevedad postearé (si, es un nuevo verbo) un doc acerca del proceso completo de instalación, configuración y migración de las aplicaciones, pero mientras:

Rails Stack

  • Antes – Linux/apache/mongrel/mysql
  • Ahora – Xen/nginx/mongrel/mysql (en otro virtual server diferente)

Por lo pronto Blogs on Typo es lo primero (visible) que se ha migrado y luce bien. Si llegan a encontrar algún problema, por favor, no duden en reportarlos.

Saludos, y good rails para todos…

Move on up - Self hosting!

February 25th, 2007

Despues de muchos problemas con nuestro actual hosting, hemos decidido poner nuestro propio server on-line. Contratamos un housing y a la brevedad estaremos en un server mas estable con una arquitectura virtualizada con xen por nosotros mismos. Detallaremos mas adelante.

Luego de varios intentos, pruebas, etc. Pudimos dejar las aplicaciones Rails correr con FCGI.

Que hicimos? Agregamos esta configuracion al apache httpd.conf
#
#
# Fast-cgi configuration added 21/5/06
#
<IfModule mod_fastcgi.c>
    FastCgiIpcDir /tmp/fcgi_ipc/
    AddHandler fastcgi-script .fcgi
    FastCgiWrapper On
    FastCgiConfig -autoUpdate -singleThreshold 100 -killInterval\
 240 -idle-timeout 180 -maxProcesses 10 -minProcesses 1\
 -initial-env RAILS_ENV=production -processSlack 1 -maxClassProcesses 1
</IfModule>
Tambien tuvimos que hacer:
chmod -R 777 /tmp/fcgi_ipc/

Con esto logramos una mejor performance en las aplicaciones Rails usando FCGI contra CGI y sin sacrificar demasiados recursos.

Asi y todo el consumo de memoria de nuestro amigo Typo es considerable, seguiremos investigando.

P

Esto ya fue corregido en la version 1.1.2 de engines ver Aqui

Utilizando Engines me encontre con el siguiente problema:

En mi hosting tengo las gems de rails 1.0 y 1.1 instaladas por el soporte y en mi custom gem dir tengo rails 1.1.2 y en vendor rails tengo 1.1.2 Pero cuando ejecutaba el dispatch magicamente iba a buscar el rails 1.0 Obviamente estaba configurado el CONFIG = {:edge => true} en environment.rb Luego de varias horas de debug encontre el siguiente workaround en engines.rb:

Donde dice:

1
2
3
4
5
6

begin
  require 'rails_version' # Rails 1.0, 1.1.0
rescue LoadError, Gem::Exception
  require 'rails/version' # renamed as of Rails 1.1.1
end
Reemplazar por:
1
2
3
4
5
6

begin
  require 'rails/version' # renamed as of Rails 1.1.1
rescue LoadError, Gem::Exception
  require 'rails_version' # Rails 1.0, 1.1.0
end

Seguramente hay mejores formas de hacerlo. Espero comentarios.

Para poder correr rails con fcgi en un hosting compartido (shared hosting) tuve que realizar lo siguiente.

Setear la propiedad de svn:executable a dispatch.fcgi. Esto hace que cuando haces el svn co te lo deje como ejecutable (en linux obvio).

Cambiar el shebang de c:/ al which del ruby en el host (tipear which ruby y nos da el path del shebang)

nos quedaria algo asi:


#!c:/ruby/bin/ruby

require File.dirname(__FILE__) + "/../config/environment" 
require 'fcgi_handler'

RailsFCGIHandler.process!

modificar .htaccess

Modificamos la linea que dice:

RewriteRule ^(.*)$ dispatch.cgi [QSA,L]
y la dejamos asi:

RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]


rake freeze_gems

rake deploy 

rake deploy es valido si utilizamos Capistrano.

Importante! Asignar permisos de lectura-escritura en el directorio tmp/sessions

Para trabajar en los 2 entornos y no tener conflictos de paths y versiones.

Windows (webrick) —> Linux (Apache)

Cuando creamos la aplicacion rails nos genera en el folder public dispatch.cgi y dispatch.rb entre otros.

Si lo creamos en windows nos creara el shebang para ruby.exe apuntando al path donde instalamos el ruby.

Ahora bien, tenemos todos nuestros sources en un repositorio svn y queremos hacer el deploy en linux, con el shebang de windows no va a funcionar. Pero si corregimos los shebang para linux, va a funcionar linux y no windows. Si miramos en detalle el tema, nuestro webrick solo utilizara dispatch.rb y el apache en linux utilizara el dispatch.cgi, entonces debemos cambiar el shebang en dispatch.cgi, entonces funcionara en linux y los cambios pueden mantenerse bajo svn sin afectar el funcionamiento de nuestro entorno de desarrollo.

Espero les sirva.

P

Mas info: Desarrollo Windows deploy Linux Wiki.onrails.com.ar

Luego de varios pedidos de ayuda he logrado correr rails 1.1.2 en un hosting compartido de esos que tienen cpanel. El unico requisito es que tengan acceso shell y rubygems instalado.

Lo pueden consultar en Wiki Onrails

P