Tag Archives for Dreamhost

Migrando L-exp a Railsplayground

Como alguna vez he comentado estoy desarrollando un proyecto en Ruby on Rails que consiste en una forma para compartir información en forma de listas llamado L-exp  ( lists of experience).

Hasta ahora este proyecto ha estado en Dreamhost, pero llegó un momento que Dreamhost me pudo por varíos motivos. Para tener mi blog  Dreamhost me funciona perfectamente, pero con L-exp empecé a hacer procesos con Rake para cargar Feeds de las listas y aquí sucumbió mi servidor ya que mataba mis procesos aleatoriamente. Además descubri que el software no estaba totalmente actualizado y el soporte era horrible ( resumiendo mucho).

Como anécdota Recuerdo una vez que me dijeron que esperase a ver si se actualizaba la aplicación con tono bastante prepotente y además tras varíos emails mios diciendo que no iba. Entonces tras contestarles que si tras dos dias de espera no era suficiente por fin me respondieron y actualizaron la máquina. Fue patético.

Asi que despues de todo esto decidi dar el salto y buscar un hosting algo más especializado. Alguién hace tiempo en un post me recomendó Railsplayground y asi me decidi a configurar una cuenta de developer del mínimo nivel. Como principales elementos que me atraieron fueron:

  • Claridad y facilidad en los procesos
  • Dispones de un Mysql en el localhost
  • Dispones del Cpanel para configurar todo fácilmente
  • Incluye correo electrónico
  • Puedes instalar los gems de rails que quieras
  • El sistema respondió muy bien a las pruebas de carga que hice
  • El soporte fue muy rápido, efectivo y activo
  • precio lógicamente

Asi que tras probarlo todo he cogido una cuenta Level 2 por 108 $ al año con mejores opciones. Entre ellas podemos enumerar:

  • 7 GB de espacio
  • 200 GB/mes de año de banda
  • 5 cuentas/shells
  • 2 instancias mongrel/lighttpd/static
  • Ilimitados subdominios
  • Soporte para SVN y Trac disponible
  • Backups nocturnos
  • ………

De momento todo está funcionando muy bien y los problemillas que he tenido de migración me lo han solventado los de soporte ágilmente. Esto me da cierta tranquilidad que no tenía con Dreamhost para garantizar que mi aplicación va a funcionar bien y que debo preocuparme poco de ello. Además tengo opciones de escalabilidad que con Dreamhost no tenía.

Esto no quiere decir que abandone Dreamhost, pero lo limitaré a mi blog que no tiene ningún secreto ni complicación.

 

Automatizando Backups con Dreamhost

Para los usuarios de Wordpress existe un Plugin que permite fácilmente hacer backups de tusdreamhost bases de datos. Incluso estos backups te llegan a tu email automáticamente si tu quieres. Pero cuando te pones a usar Dreamhost como hosting para otros temas como en mi caso para proyectos en Rails te encuentras que la única alternativa es hacer backups con ftp y con MySQL.

Tras buscar he encontrado dos artículos que te permiten automatizar los backups vía SSH con las siguientes funcionalidades:

  • Backup de los datos
  • Backup de las bases de datos
  • Compresión de los datos
  • Programación de la frecuencia de los diferentes backups
  • Envío por email si lo deseas
  • Descarga automatizada a un equipo windows

Como véis es bastante potente el tema y yo lo he conseguido hacer funcionar. Para ello os enlazo a dos artículos del wiki de Dreamhost:

  1. Automatic Backup
  2. Crontab

Si alguien se pierde o tiene alguna duda que me deje algún comentario. Hay que tener acceso Shell a tu cuenta y además usar una herramienta como PuTTY como terminal de conexión.

Además hay que estar familiarizado con los siguientes comandos:

  • ls para ver directorio
  • cd [nombre dir] para cambiar directorio
  • cd .. para retroceder un directorio
  • pico [nombre fichero] para editar fichero . Ctrl+O para grabar y Ctrl+X para salir
  • chmod 755 [nombre fichero o dir] para dar permisos de ejecución
  • ./[nombre fichero.sh] para ejecutar archivo bash
  • cp [fichero origen] [fichero destino] para copiar archivo
  • mkdir [nombre dir] para crear directorio
  • rm [archivo o dir] para borrarlo
  • crontab -e para editar la lista de tareas del sistema
  • top para ver el cuadro de procesos en ejecución

Es un curso acelerado de la línea de comandos de linux pero con estos comandos yo he conseguido hacerlo.

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