Instalación de Ruby on Rails con PostgreSQL en Ubuntu
domingo, octubre 08 2006 @ 08:26 ART
Actualmente
estoy desarrollando una aplicación web con Ruby on Rails para el grupo
de investigación en el cual trabajo. Estoy usando la base datos
PostgreSQL, el RCS (Revision Control System) Subversion y el servidor
HTTP Mongrel. Todo bajo Ubuntu Dapper, aunque en el servidor del grupo
usamos Debian Sarge.
Aquí publico para referencia futura la instalación y configuración de
las principales aplicaciones que uso para el desarrollo de la
aplicación con Ubuntu Dapper, aunque hay cosas que aplican a cualquier
distribución de Linux.
1.
Instalamos el paquete básico para compilar aplicaciones en
Debian/Ubuntu, la librería libreadline5-dev requerida para compilar
Ruby con el shell interactivo (IRB) y la librería zlib1g-dev que es
requerida por el administrador de paquetes (gems) de Ruby, RubyGems.
sudo apt-get install build-essential libreadline5-dev zlib1g-dev
2. Ahora vamos a instalar la base de datos PostgreSQL 8
sudo apt-get install postgresql-8.0
3. Luego asignamos una constraseña al superusuario ‘postgres’:
sudo passwd postgres
3. Configuramos la forma de autenticación para conectarnos a la base de
datos. Esto, en PostgreSQL, se hace editando el archivo
/etc/postgresql/8.0/main/pg_hba.conf y nos aseguramos de que estén
presentes las siguientes líneas:
local all postgres ident sameuser
local all all md5 sameuser
host all all 127.0.0.1 255.0.0.0 md5 sameuser
host all all 0.0.0.0 0.0.0.0 reject
Esta configuración nos permite conectarnos a la base de datos como el
superusuario ‘posgres’ sólo cuando estemos
logueados como tal en el sistema, y permite conexiones locales por Unix
sockets y por TCP/IP siempre y cuando intentemos conectarnos a una base
de datos con el mismo nombre de usuario. Es decir, que para acceder a
una base de datos llamada ‘mydatabase’ debemos
crear un usuario ‘mydatabase’ con el password
correspondiente.
Para que los cambios surtan efecto debemos reiniciar el servicio de PostgreSQL
sudo /etc/init.d/postgresql restart
4. Instación de Ruby 1.8.4 desde las fuentes
wget
tar xvfz ruby-1.8.4.tar.gz
cd ruby-1.8.4
./configure --prefix=/usr/local/ruby-1.8.4
make
sudo make install
sudo make install-doc
ln -s /usr/local/ruby-1.8.4 /usr/local/ruby-site
De esta forma podremos tener a la vez varias versiones de Ruby
compiladas en nuestro sistema en /usr/local/ruby-VERSION y cambiar la
que deseemos usar modificando el enlace simbólico /usr/local/ruby-site
Para que el ejecutable de Ruby esté disponible en el PATH para todos
los usuarios del sistema agregamos la siguiente línea al archivo
/etc/bash.bashrc
export PATH=/usr/local/ruby-site/bin:$PATH
5. Instalar Rubygems (ultima versión 0.9.0 al momento de escribir esta entrada). Descargar las fuentes y luego:
tar xvfz rubygems-0.9.0.tar.gz
cd rubygems-0.9.0
ruby setup.rb config --prefix=/usr/local/ruby-site
ruby setup.rb setup
ruby setup.rb install
6. Instalar rails, mongrel, postgres-pr, a través del gestor de paquetes rubygems
sudo gem install rails --include-dependencies
sudo gem install mongrel --include-dependencies
sudo gem install postgres-pr --include-dependencies
7. Crear la base de datos para la aplicación de Rails
su - postgres
createuser -P project_name
createdb -U projectname projectname
8. Crear un script para iniciar Mongrel al inicio del sistema. Copiar las siguientes líneas en /etc/init.d/mongrel_projectname
#!/bin/bash
# description: Startup script for mongrel
PATH=/usr/local/ruby-site/bin/:$PATH
BASEDIR=path_to_your_web_app
case "$1" in
start)
echo "starting up mongrel in $BASEDIR"
cd $BASEDIR
mongrel_rails start -d >> /var/log/messages 2>&1 &
;;
stop)
echo "stopping mongrel"
cd $BASEDIR
mongrel_rails stop
;;
restart)
echo "restarting mongrel"
cd $BASEDIR
mongrel_rails stop
sleep 3
mongrel_rails start -d >> /var/log/messages 2>&1 &
;;
esac
Y adicionar el script a la secuencia de inicio:
chmod u+x /etc/init.d/mongrel_projectname
update-rc.d mongrel_projectname defaults
/etc/init.d/mongrel_projectname start
9. Instalar PhpPgAdmin para administrar las bases de datos con interfaz web.
sudo apt-get install phppgadmin
sudo ln -s /etc/phppgadmin/apache.conf /etc/apache2/sites-enabled/phppgadmin
sudo /etc/init.d/apache2 restart