Daily Archives for Miércoles, diciembre 2006

Rails + Dreamhost = Toda una aventura

Finalmente consegui configurar en mi cuenta de Dreamhost una aplicación desarrollada en Ruby on Rails. Supongo que el echo de que soy novato, le sumamos que vengo del mundo windows y que la documentación de Dreamhost no es expléndida. Han hecho que haya sido toda una aventura el configurar mi aplicación. Pero he de confirmar que funciona.

Primero de todo hay que tener en cuenta los siguientes aspectos:

  1. Deberemos configurar que corra bajo fastcgi en Dreamhost para obtener los mejores resultados. Para ello hay que modificar .htaccess y dispatch.fcgi ( ver los ficheros al final que a mi me han funcionado).
  2. En el directorio public los ficheros  dispatch.fcgi, dispatch.cgi y dispatch.rb deben tener en la primera línea #!/usr/bin/ruby1.8  (con el # incluido) . Si lo copiáis de vuestra máquina tendrá un path “c:/….”. Revisarlo.
  3. Añadir al fichero routes map.connect ” , :controller=>’controladorprincipal’, :action=>’acciónprincipal’
  4. Dreamhost sólo soporta aplicaciones que esten en el modo “Production”. Crear bases de datos production y cambiar environment.rb . Descomentar la línea “# ENV['RAILS_ENV'] ||= ‘production’ ” ( quitar #). Para migrar la base de datos a production usar rake environment RAILS_ENV=production migrate .
  5. Dreamhost utiliza servidores Linux y por tanto a diferencia de Windows los enlaces son sensibles a mayúsculas y minúsculas. Por tanto conviene revisar que se cumpla este requisito o tendremos problemas. A mi me produjo que no me apareciesen las imágenes.
  6. Deberemos activar la cuenta de nuestro usuario para que pueda conectarse en modo shell (ssh/telnet). El cliente que he utilizado es Putty que va muy bien. Para ver el nombre del servidor lo podemos ver desde el panel de Dreamhost en Manage Users en la columna Machine.
  7. Deberemos crear las bases de datos mysql y en mi caso he volcado directamente la base de datos utilizando mysql Tools haciendo un restore de la base de datos Production. Para poder utilizarlos tendréis que dar de alta la ip en Goodies>>Manage MySQL>> usuario de base de datos que queramos dar acceso.
  8. También hemos de cambiar el fichero database.yml con la configuración para acceder a nuestro servidor mysql en Dreamhost. Podéis ver el ejemplo que he puesto abajo.
  9. Desde la cónsola generaremos el árbol de la aplicación rails (rails /home/yourname/rails.yoursite.com ) y luego copiaremos con nuestro cliente FTP el contenido de app, vendor,lib, public/images, public/stylesheets y modificaremos los archivos dispatch.fcgi, environment.rb, database.yml y .htaccess. También conviene borrar el fichero index.html del subdirectorio public.
  10. Desde el panel de control de Dreamhost iremos a Manage Domains y direccionaremos el dominio o subdominio al subdirectorio public ( /public).

 

En cuanto al procedimiento es el siguiente (tomado de la kb de Dreamhost):

(en negrita los cambios que yo he hecho y tachado lo que no hace falta)

Installation is very easy.
1. Start in the dreamhost web-panel manage domains and add a new domain to play around in
e.g. rails.yoursite.com
point the webroot to /home/yourname/yoursite.com/public
2. Goto the dreamhost goodies->(yo he mantenido los nombres normales en una sola base de datos )mysql and add three new databases
yourname_test, yourname_production,yourname_development
add hostnames for these databases
testdb.rails.yoursite.com, productiondb.rails.yoursite.com, developmentdb.rails.yoursite.com. Lots of folks say the beauty of mysql is that you can keep everything organized in one database. But if you have to read these directions, you, like me, likely make mistakes from time to time. Best in my opinion to mitigate losses.
Wait until you receive emails from dreamhost telling you everything is now active (subdomain is critical — db less so). Dreamhost says it could be a day or two.

3.-To install to yoursite.com/public
rails /home/yourname/rails.yoursite.com
chmod 0755 /home/yourname/rails.yoursite.com/public
chmod 0755 /home/yourname/rails.yoursite.com/dispatch*
that should do it for basic setup. Navigate to http://rails.yoursite.com/ and there is a welcome page with further informations.
The following may/may not be necessary, but might be worth trying if you still don’t see anything.
Many sites recommend to change what they call the “She-bang!” line — the first line of the code in the public/dispatch.rb, public/dispatch.cgi, and public/dispatch.fcgi files to reflect the location of the ruby executable on the dreamhost servers — the dreamhost server I’m on, Apok has both.
pico /home/yourname/yoursite.com/public/dispatch.rb
(delete first line in file and type the following)
#!/usr/bin/ruby1.8
[Ctrl]+X
y
navigate to
http://rails.yoursite.com/ and hopefully you’ll see something other than an error message.

Siguiendo estos pasos está incompleto pero quiero que se vea lo liante que es la documentación de Dreamhost. Completarlos con los puntos que he añadido arriba y seguir los tutoriales del wiki y el otro que añado en la sección de otros documentos.

Algunos comandos de interés para Linux ( cónsola desde putty):

Para logaros con la cónsola hay que poner en host  [Machine dreamhost].dreamhost.com. Para saber en que servidor estáis buscar en el panel de control de dreamhost en Manage Users en la columna Machine. Os pedirá el nombre de vuestro usuario dreamhost y la contraseña. Lo encontraréis en el panel de Dreamhost.

ls –> equivale al dir de msdos

killall -9 dispatch.fcgi   –> mata procesos dispatch.fcgi y conviene hacerlo ya que guarda en memoria información.

cd nomdirectorio –> cambiar directorio

cd .. –> retrocede un nivel el directorio

rm [nombrefichero] –> borra un fichero. Ir con cuidado…

dos2unix nomfichero–> convierte el fichero a formato unix ( hacerlo con los dispatch)

top –> muestra los procesos y carga del servidor ( ctrl+c para salir)

pico [nom_fichero] –> Carga un editor de textos sencillo. Tiene una ayuda ^G.

Hay muchos otros comandos, pero estos son los que yo he utilizado.

Ficheros que a mi me han funcionado de configuración

Estos son los ficheros que tengo en mi servidor y funcionan…. Pensar que conviene matar los procesos dispatch.fcgi para hacer que funcione ( killall -9 dispatch.fcgi).

rails>public>dispatch.fcgi

 #!/usr/bin/ruby1.8
require File.dirname(__FILE__) + "/../config/environment"
require 'fcgi_handler'
class RailsFCGIHandler
private
def frao_handler(signal)
dispatcher_log :info, "asked to terminate immediately"
dispatcher_log :info, "frao handler working its magic!"
restart_handler(signal)
end
alias_method :exit_now_handler, :frao_handler
end
RailsFCGIHandler.process!

 

rails>public>.htaccess

 

RewriteRule ^$ index.html [QSA]
RewriteRule ^([^.]+)$ $1.html [QSA]
RewriteCond %{REQUEST_FILENAME} !-f
#RewriteRule ^(.*)$ dispatch.cgi [QSA,L]
RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]
RewriteCond %{REQUEST_URI} ^/stylesheets.*
RewriteRule .* - [L]

rails>config>database.yml

production:
adapter: mysql
database: myrailsapp_production
username: mysqluser
password: password
host: mysql.mydomain.com
port: 3306

Todos los datos los tomaremos del panel de control de Dreamhost en Goodies>Manage MySQL.

Otros documentos de interés

Adjunto otras fuentes de información interesantes:

  1. Dreamhost KB
  2. Dreamhost wiki - muy completo pero lioso.
  3. Tutorial en Railshosting - muy bueno

 

Conclusión

Tal como he anunciado en el titular ha sido toda una aventura ya que toda la información que encuentras es a partir de versiones de diferentes usuarios que te van dejando incógnitas. No hay un procedimiento límpio y fácil. Además he solicitado ayuda al soporte de dreamhost y sinceramente más que ayudar me han ayudado a despistar.

Como siempre la ayuda de un alma caritativa en el irc de rails me ha dado buenas pistas y me han permitido acabar de arrancar el servidor.

A ver si alguien tiene experiencias mejores o más fáciles. He visto que en otros hostings tienen gems de instalación propios y otras herramientas más sencillas. A ver si Dreamhost se apunta y nos hace la vida más fácil. Además de que un futuro soporte alternativas más potentes como Mongrel.

Ahora veremos si el rendimiento es correcto y quedo satisfecho de este hosting. Supongo que será más que suficiente para este proyectito…

Dreamhost

Popularity: 2% [?]

Get Adobe Flash playerPlugin by wpburn.com wordpress themes