Posts Etiquetados ‘Ruby on Rails’

Como instalar Ruby on Rails en un Linux CentOS Virtual Dedicated Server de GoDaddy

El propósito de esta guia es mostrar como se puede instalar Ruby on Rails en CentOS con Apache2 funcionando como proxy para lighttpd. La guia original fue obtenida de aqui, estos pasos son los que a mi me funcionaron. Esta guia puede contener errores y no garantiza que funcionará para alguien mas.

Conectandome al Virtual Dedicated Server via SSH como root, estos fueron los comandos:

yum update
yum install ruby ruby-devel ruby-libs ruby-irb ruby-rdoc ruby-mysql
yum install lighttpd-fastcgi lighttpd
cd /usr/local/src
wget http://rubyforge.org/frs/download.php/17190/rubygems-0.9.2.tgz
tar -xvzf rubygems-0.9.2.tgz
cd rubygems-0.9.2
ruby setup.rb
cd ..
wget http://www.fastcgi.com/dist/fcgi-2.4.0.tar.gz
tar -xzvf fcgi-2.4.0.tar.gz
cd fcgi-2.4.0
./configure
make
make install
cd..
wget http://sugi.nemui.org/pub/ruby/fcgi/ruby-fcgi-0.8.6.tar.gz
tar -zxvf ruby-fcgi-0.8.6.tar.gz
cd ruby-fcgi-0.8.6
ruby install.rb config
ruby install.rb setup
ruby install.rb install
cd ..
gem install rails --include-dependencies
gem update --system

NOTA: Para este ejemplo, vamos a suponer, que yo tengo registrado un dominio.com, configurado normalmente en Go Daddy con nombre de usuario dominio, teniendo el directorio en /home/dominio/public_html y quiero poner mi aplicación en ruby.dominio.com. No me voy a meter en los detalles de como crear un subdominio en Go Daddy porque esta fuera de tema, para este ejemplo, el directorio por default del subdominio vendria siendo /home/dominio/ruby, la guia también puede ser adaptada para un dominio sin subdominio, solo hay que cambiar los directorios.

Con esta suposición, vamos a jugar un poco con los directorios para acomodar la aplicación de esta forma (reemplaza los nombres de los directorios por los tuyos):

cd /home/dominio/
rm -Rf ruby
rails testapp
chmod 777 testapp/log
chmod 777 testapp/tmp
chown -R dominio:dominio testapp
su dominio
ln -s /home/dominio/testapp/public ruby
exit

Después, hay que modificar los archivos de configuración del Apache2 y lighttpd.

Dentro de la configuración del Apache2 en /etc/httpd/conf/httpd.conf al final, hay que agregar (NOTA: Si el subdominio fue agregado con Simple Control Panel, hay que modificar el archivo /etc/httpd/conf.d/turbopanel.conf en vez de agregar al final de httpd.conf):

<VirtualHost *:80>
ServerName ruby.dominio.com
ProxyRequests Off
ProxyPass / http://localhost:81/
ProxyPassReverse / http://localhost:81/
ProxyPreserveHost on
</VirtualHost>

Ahora para lightttpd en /etc/lighttpd/lighttpd.conf tenemos:

server.modules              = (
"mod_rewrite",
"mod_access",
"mod_fastcgi",
"mod_cgi",
"mod_accesslog" )
 
server.document-root        = "/home/dominio/testapp/public/"
server.errorlog             = "/var/log/lighttpd/error.log"
index-file.names            = ( "index.php", "index.html",
"index.htm", "default.htm" )
mimetype.assign             = (
".rpm"          =>      "application/x-rpm",
".pdf"          =>      "application/pdf",
".sig"          =>      "application/pgp-signature",
".spl"          =>      "application/futuresplash",
".class"        =>      "application/octet-stream",
".ps"           =>      "application/postscript",
".torrent"      =>      "application/x-bittorrent",
".dvi"          =>      "application/x-dvi",
".gz"           =>      "application/x-gzip",
".pac"          =>      "application/x-ns-proxy-autoconfig",
".swf"          =>      "application/x-shockwave-flash",
".tar.gz"       =>      "application/x-tgz",
".tgz"          =>      "application/x-tgz",
".tar"          =>      "application/x-tar",
".zip"          =>      "application/zip",
".mp3"          =>      "audio/mpeg",
".m3u"          =>      "audio/x-mpegurl",
".wma"          =>      "audio/x-ms-wma",
".wax"          =>      "audio/x-ms-wax",
".ogg"          =>      "application/ogg",
".wav"          =>      "audio/x-wav",
".gif"          =>      "image/gif",
".jpg"          =>      "image/jpeg",
".jpeg"         =>      "image/jpeg",
".png"          =>      "image/png",
".xbm"          =>      "image/x-xbitmap",
".xpm"          =>      "image/x-xpixmap",
".xwd"          =>      "image/x-xwindowdump",
".css"          =>      "text/css",
".html"         =>      "text/html",
".htm"          =>      "text/html",
".js"           =>      "text/javascript",
".asc"          =>      "text/plain",
".c"            =>      "text/plain",
".cpp"          =>      "text/plain",
".log"          =>      "text/plain",
".conf"         =>      "text/plain",
".text"         =>      "text/plain",
".txt"          =>      "text/plain",
".dtd"          =>      "text/xml",
".xml"          =>      "text/xml",
".mpeg"         =>      "video/mpeg",
".mpg"          =>      "video/mpeg",
".mov"          =>      "video/quicktime",
".qt"           =>      "video/quicktime",
".avi"          =>      "video/x-msvideo",
".asf"          =>      "video/x-ms-asf",
".asx"          =>      "video/x-ms-asf",
".wmv"          =>      "video/x-ms-wmv",
".bz2"          =>      "application/x-bzip",
".tbz"          =>      "application/x-bzip-compressed-tar",
".tar.bz2"      =>      "application/x-bzip-compressed-tar",
""              =>      "application/octet-stream",
)
accesslog.filename          = "/var/log/lighttpd/access.log"
url.access-deny             = ( "~", ".inc" )
 
$HTTP["url"] =~ "\.pdf$" {
server.range-requests = "disable"
}
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )
server.port                = 81
server.bind = "127.0.0.1"
server.error-handler-404 = "/dispatch.fcgi"
server.pid-file            = "/var/run/lighttpd.pid"
fastcgi.server = (
".fcgi" => (
"rails" => (
"socket" => "/tmp/lighttpd-fcgi.socket",
"bin-path" =>
"/home/dominio/testapp/public/dispatch.fcgi",
"bin-environment" => ( "RAILS_ENV" => "production" ),
"min-procs" => 2,
"max-procs" => 2
)
)
)
server.indexfiles = (
"dispatch.fcgi",
"index.php",
"index.html",
"index.htm",
"default.htm"
)

Ahora, solo hay que reiniciar los servers:

/etc/init.d/httpd restart
/etc/init.d/lighttpd restart

Con esto tenemos un ambiente ruby en http://ruby.dominio.com/ con los archivos fuente en /home/dominio/testapp

Posteado el Julio 15th, 2008 por netors  |  No Comments »