Si estamos leyendo esto es porque hemos optado por instalar Ruby en nuestro sistema cPanel de la manera antigua y contando con versiones de Ruby no actualizadas.
cPanel presenta una herramienta para su instalación de manera sencilla. Lo primero que tenemos que saber es que cPanel por defecto no soporta Rails 3.0.0 en el sentido que no podrá ser gestionado desde el WHM (en el momento de realizar esta guía). Esta opción, debido a lo obsoleto de las versiones instaladas por la propia herramienta de cPanel está totalmente desaconsejada.
Pero la elección final es nuestra! Y si queremos las versiones compatibles con WHM que provee cPanel nos basta con ejecutar:
/scripts/installruby
Pero no todo tiene porque ser tan sencillo. En esta guía nos queremos adentras además en todo lo que necesitamos conocer acerca de cómo resolver algunas dudas que pueden hacer que nuestra aplicación no responda como es debido.
Juguemos con otras versiones de Rails
Como venimos diciendo si lo que queremos es instalar versiones de Rails >= 3.X deberemos utilizar los siguientes pasos:
/scripts/installruby
Luego instalamos la última versión de Rails en correspondencia con la versión de Ruby instalada
gem install rails
Además tendremos que instalar la última versión de la gema passenger para que todo funcione:
gem install passenger passenger-install-apache2-module
Este último comando lanza un Wizard para ensamblar rails con Apache. Al final de toda la instalación, pero justamente antes de completarla totalmente, nos aportará un código que deberemos copiar y pegar en nuestros ficheros de configuración de Apache (Include Editor en cPanel)
NOTA: Si durante el Wizard se localizan varios ficheros de configuración de Apache deberemos elegir el que corresponda. En caso que no sea el que nos marcan por defecto elegiremos NO (n), y reejecutaremos la operación pero con el Path adecuado:
passenger-install-apache2-module –apxs-path /usr/local/apache/bin/apxs
Seguimos con la inclusión del código reportado por el Wizard en el “pre_main_global.conf”
LoadModule passenger_module /usr/local/rvm/gems/ruby-1.8.7-p551/gems/passenger-5.0.26/buildout/apache2/mod_passenger.so <IfModule mod_passenger.c> PassengerRoot /usr/local/rvm/gems/ruby-1.8.7-p551/gems/passenger-5.0.26 PassengerDefaultRuby /usr/local/rvm/gems/ruby-1.8.7-p551/wrappers/ruby PassengerResolveSymlinksInDocumentRoot on </IfModule>
También se recomienda añadir la siguiente línea (Visto en foros, NO TESTADO):
PassengerResolveSymlinksInDocumentRoot on
Por último añadir en “post_virtualhost_global.conf” lo siguiente
<IfModule mod_passenger.c>
PassengerPreStart http://miapp.enrails.com </IfModule>
Por último aplicamos los cambios realizados en Apache (la primera línea del siguiente código es para hacer una
cp /usr/local/apache/conf/httpd.conf /usr/local/apache/conf/httpd.conf.bak-rails /usr/local/cpanel/bin/apache_conf_distiller --update /scripts/rebuildhttpdconf/etc/init.d/httpd restart
Versión Ruby en cPanel
Hay que tener en cuenta también esto, para revisar posibles incompatibilidades entre todos los componentes de que se disponen y/o se quieren disponer (por ejemplo Redmine 3.2.0 con Ruby sólo se permite para versiones de Ruby superiores a 1.9.3)
Las versiones actuales que instala cPanel y cómo se puede comprobar son las siguientes:
# ruby -v ruby 1.8.7 (2009-06-08 patchlevel 173) [i686-linux] # rails -v Rails 2.3.8 # gem -v 1.3.7
Rails específico sólo para una aplicación concreta
Rails se encuentra frecuentemente instalado en local para otras versiones que utilizan este método, ya que algunas aplicaciones requieren de versiones diferentes de Rails en vez de la versión global de Rails. Se puede comprobar que versión de Rails se requiere utilizando el siguiente comando
# grep -i rails_version /home/username/rails_apps/appname/config/environment.rb
Para instalar dicha versión más antigua de Rails debemos ejecutar la instalación dentro del directorio de la aplicación:
# cd /home/admin/rails_apps/library # gem install rails -v=2.3.4
Localización de directorios importantes
/home/username/rails_apps/appname/public ==> Localización de los ficheros públicos. Esto es lo que nos muestra nuestra navegador.
/home/username/rails_apps/appname/config ==> Este directorio contiene los ficheros database.yml y environment.rb files. El fichero database.yml adecua la base de datos para la aplicación rails (tanto mysql como sqlite o postgres, el nombre de la base de datos, el usuario y la contraseña). El fichero environment.rb establece la versión gema de rails a utilizar.
/home/username/rails_apps/appname/log ==> Este directorio contiene los archivos log.
/home/username/rails_apps/appname/app ==> Este directorio contiene el código principal para la aplicación con los directorios controllers, helpersm models y views dentro de él.
Como nota: las aplicaciones Rails sobre cPanel más antiguas son instaladas en /home/username/etc/rails_apps/appname, por si no se localizan en los directorios antes citados.
Pero, ¿y si mi servidor ya disponía de una versión de Ruby superior a 1.8.7?
En este caso aun disponiendo de una superior, si lo que queremos es ir a por todas a por la versión 1.8.7 por el hecho que para nuestra futura instalación ésta sea la versión requerida esto es lo que debemos hacer.
Las versiones superiores de Ruby a, por ejemplo, no funcionan con el instalador de Gemas (Gems) de cPanel, o también si utilizamo el backend “mongrel” (anterior a Phusion Passenger) no funcionará con la versión 3.0.0 de Rails.
Reinstalar Ruby
Cada vez que queramos reinstalar Ruby (Ruby, Rails, Ruby Gem y Mongrel) tenemos que hacer lo siguiente
# mv /usr/lib/ruby /usr/lib/ruby.bak # mv /usr/local/lib/ruby /usr/local/lib/ruby.bak # mv /usr/bin/ruby /usr/bin/ruby.bak # mv /usr/local/bin/ruby /usr/local/bin/ruby.bak # mv /usr/bin/rails /usr/bin/rails.bak # mv /usr/local/bin/rails /usr/local/bin/rails.bak # mv /usr/bin/gem /usr/bin/gem.bak # mv /usr/local/bin/gem /usr/local/bin/gem.bak
El mover los ficheros nos permite
- Revertir a nuestra anterior instalación si fuera necesario
- Limpiar cualquier traza existente de nuestra instalación inicial de Ruby, Rails, Ruby Gem y Mongrel.
Es en este momento en el que podremos lanzar una copia original de estos componentes ejecutando:
# /scripts/installruby
Principales Fallos con las Aplicaciones
- Comprueba que la versión de Rails es 2.3.8 o inferior.
Si se ejecutan versiones superiores como Rails 3.0.0 las aplicaciones no se generarán adecuadamente en la interfaz cPanel y hacer que no arranque. La solución es hacer un downgrade de Rails a la versión compatible con cPanel.
Comprobamos de primeras la versión de Rails.
# rails -v
Realizar el “downgrade” de rails
# gem uninstall rails # gem uninstall actionmailer # gem uninstall activemodel # gem uninstall actionpack # gem uninstall activerecord # gem uninstall activeresource # gem uninstall activesupport # gem uninstall railties # gem install rails -v=2.3.8
Consejos para Gemas
- Comprobar que gemas están instaladas
# gem list
o
# gem list --local
- Ver la lista de gemas remotas (aquellas que podríamos instalar)
# gem list –remote
- Instalar una versión específica de las gemas (Nota: sólo se puede instalar aquellas versiones que aparezcan en el repositorio de gemas)
Si por ejemplo queremos instalar sqlite3-ruby 1.2.5: # gem install sqlite3-ruby -v=1.2.5
Fallos al instalar una Gema
- Cuando una gema no se instala por el motivo que sea, se producirá un fichero mkmf.log y dicha acción se reflejará como mensaje de error. Por ejemplo, el fallo al instalar la gema RMagick:
# gem install rmagick
Building native extensions. This could take a while…
ERROR: Error installing rmagick:
ERROR: Failed to build gem native extension.
/usr/bin/ruby extconf.rb
checking for Ruby version >= 1.8.5… yes
checking for gcc… yes
checking for Magick-config… yes
checking for ImageMagick version >= 6.4.9… no
Can’t install RMagick 2.13.1. You must have ImageMagick 6.4.9 or later.
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.
Provided configuration options:
–with-opt-dir
–without-opt-dir
–with-opt-include
–without-opt-include=${opt-dir}/include
–with-opt-lib
–without-opt-lib=${opt-dir}/lib
–with-make-prog
–without-make-prog
–srcdir=.
–curdir
–ruby=/usr/bin/ruby
Gem files will remain installed in /usr/lib/ruby/gems/1.8/gems/rmagick-2.13.1 for inspection.
Results logged to /usr/lib/ruby/gems/1.8/gems/rmagick-2.13.1/ext/RMagick/gem_make.out
También, como hemos comentado podemos revisar el fichero log correspondiente:
# cat /usr/lib/ruby/gems/1.8/gems/rmagick-2.13.1/ext/RMagick/mkmf.log
checking for Ruby version >= 1.8.5… ——————– yes
——————–
find_executable: checking for gcc… ——————– yes
——————–
find_executable: checking for Magick-config… ——————– yes
——————–
checking for ImageMagick version >= 6.4.9… ——————– no
——————–
Can’t install RMagick 2.13.1. You must have ImageMagick 6.4.9 or later.
System needs ImageMagick 6.4.9 or later.
Y podemos comprobar la versión instalada:
# convert –version
Version: ImageMagick 6.4.8 2010-10-14 Q16 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2009 ImageMagick Studio LLC
In this instance, to install the gem, you would need to configure ImageMagick from source to get the higher version required:
# cd /usr/src
# wget ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick.tar.gz
# tar xvfz ImageMagick.tar.gz
# cd ImageMagick*
# ./configure
# make
# make install
- Gema no se instalan debido a fallo de sistema stdio.h. Al intentar instalar se muestran los siguientes errores:
ERROR: Error installing hpricot: ERROR: Failed to build gem native extension. /usr/bin/ruby extconf.rb checking for stdio.h... no *** extconf.rb failed ***
Comprueba los permisos de fichero de /usr/bin/ld y /usr/bin/gcc
Ambos tienen que estar a 755 para poder instalar gemas.
Si aún con todo el usuario no es capaz de instalar una gema, comprobar que tengan acceso al compilador:
WHM >> Security Center >> Compiler Access
Si no tuvieran acceso, no se podrían compilar algunas gemas. El usuario puede tanto habilitar el acceso compilador o instlaar la gema usando WHM o SSH a través de root.
(Opcional) Mongrel, Consejos específicos
Mongrel ya no se utiliza practicamente, y la recomendación es optar por utilizar Phusion Passenger (mod_rails), pero si siguieras interesado en esta aplicación puedes revisar la siguiente información:
Paramos primero los procesos de mongrel y utilizamos Rails para chequear errores.
Cambiaríamos al directorio de aplicación del usuario, y tras hacer un ps aux sobre procesos mongrel, mataríamos el proceso. Finalmente levantaríamos la aplicación manualmente.
# cd /home/username/rails_apps/appname # ps aux | grep mongrel | grep username # kill -9 pid# # ruby script/server -p port# -d
Cuando reiniciemos la aplicación sin mongrel obtendremos los siguientes errores:
# ruby script/server -p 12008 -d
Missing the Rails 2.3.5 gem. Please `gem install -v=2.3.5 rails`, update your
RAILS_GEM_VERSION setting in config/environment.rb for the Rails version
you do have installed, or comment out RAILS_GEM_VERSION to use the latest
version installed.
Esto nos indica que Rails 2.3.5 es requerido por lo que lo instalaríamos en la cuenta:
# gem install -v=2.3.5 rails
Y por último lo iniciaríamos a través de la línea de comandos:
# ruby script/server -p 12008 -d
=> Booting Mongrel
=> Rails 2.3.5 application starting on http://0.0.0.0:12008
Debes estar en el directorio de aplicación del usuario al ejecutar el comando
“ruby script/server -p port# -d”
Como nota, si utilizamos este comando en vez de ejecutarlo a través de procesos de mongrel veremos errores en el navegador una vez la aplicación se levante si siguen existiendo problemas de código.
Por último, tras conseguir que la aplicación funcione, puedes matar el proceso que corre bajo ese puerto y arrancar la aplicación utilizando cPanel > Ruby on Rails. También puede arrancarse desde línea de comandos utilizando esta sintaxis:
# /usr/bin/ruby -I /usr/bin/mongrel_rails start -p port# -d -e production -P log/mongrel.pid
No hay comentarios en este tutorial
Sé el primero en enviar un comentario: