Instalar Redmine sobre Fedora

22 Feb

Un simple manual en español para instalar esta excelente aplicación web para nuestros proyectos sobre una máquina con Fedora 14.

Primero instalaremos subversion, inicialmente para descargar redmine pero también como sistema de control de versiones:

null   
sudo yum -y install subversion
cd /opt

Procedemos a descargar redmine y a instalar algunos paquetes necesarios:

null   
sudo svn co http://redmine.rubyforge.org/svn/branches/1.1-stable redmine-1.1
sudo yum -y install ruby rubygems ruby-devel mysql-devel

El paquete rubygems incluye el comando “gem” para instalar algunas gemas necesarias:

null   
sudo gem install rails -v=2.3.5
sudo gem install rack -v=1.0.1
sudo gem install i18n -v=0.4.2

Ahora procederemos a configurar la base de datos, en este caso usaremos MySQL, por su sencillez supondré instalados MySQL y Apache; nos conectamos a MySQL:

null   
mysql -u root -p

y al obtener el prompt ejecutamos lo siguiente:

null   
CREATE DATABASE redmine CHARACTER SET utf8;
GRANT ALL PRIVILEGES ON redmine . * TO 'redmine'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;

Nos desconectamos de MySQL y dentro del directorio redmine-1.1 (donde descargamos redmine), copiamos o renombramos el archivo database.yml.example a database.yml, este archivo se encuentra en el directorio config, luego de renombrado debemos abrirlo con nuestro editor preferido:

null   
cd redmine-1.1
sudo cp config/database.yml.example config/database.yml
sudo vim config/database.yml

Y colocamos los valores que usamos al momento de crear la Base de Datos:

null   
production:
  adapter: mysql
  database: redmine
  host: localhost
  username: redmine
  password: password
  encoding: utf8

Generamos un ”session store secret” y creamos la estructura de la base de Datos, esto incluye la creación de un usuario administrador, para correr el segundo comando es necesario estar ubicado en el directorio raíz de la aplicación, es decir, en redmine-1.1:

null   
sudo rake generate_session_store
sudo RAILS_ENV=production rake db:migrate

Insertamos en la Base de Datos, los valores por defecto; esto es opcional pero altamente recomendado para esta instalación:

null   
sudo RAILS_ENV=production rake redmine:load_default_data

Los retoques finales solo requieren algunos permisos:

null   
sudo chown -R apache\: files log tmp public/plugin_assets
sudo chmod -R 755 files log tmp public/plugin_assets

Hemos utilizado el usuario “apache” pues el objetivo de este manual es que Redmine sea accesible a través del servidor Web por medio del módulo “passenger”, pero primero verifiquemos que si ha quedado correctamente instalado el Redmine:

null   
sudo ruby script/server webrick -e production

Y desde un navegador ingresamos: http://direccionmaquina:3000/ puedes usar como nombre de usuario “admin” y contraseña “admin” para ingresar. Ahora viene una parte interesante, no es para nada común tener una herramienta web en un puerto tan poco usado, vamos a hacer que Redmine sea visible a través del servidor Web:

null   
sudo gem install passenger
sudo passenger-install-apache2-module

El segundo comando es una utilidad que te dirá qué dependencias te hacen falta para poder instalar el módulo de Apache satisfactoriamente, si solo has instalado los servicios de Apache y MySQL es probable que te falten los mismos que a nosotros:

null   
sudo yum -y install curl-devel httpd-devel apr-devel apr-util-devel
sudo passenger-install-apache2-module

Agrega las siguientes líneas en el archivo /etc/httpd/conf/httpd.conf

null   
LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-3.0.2/ext/apache2/mod_passenger.so
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-3.0.2
PassengerRuby /usr/bin/ruby
RailsBaseURI /redmine

Las tres primeras líneas las muestra la utilidad que instala el módulo passenger, si ves alguna diferencia entre las que publicamos y las que obtienes, usa las que obtienes.

Es necesario aclarar que la configuración que se está realizando es para acceder mediante una subdirección, es decir, que accederíamos por medio de http://direccionmaquina/redmine después mostraremos cómo hacerlo con un Host Virtual, pero cuando compremos el dominio.

Lo que falta es realmente sencillo, si has usado passenger antes sabes de qué se trata

null   
cd /var/www/html
sudo ln -s /opt/redmine-1.1/public/ redmine
sudo service httpd restart

Esperamos que les sea de utilidad esta publicación, pretendemos escribir una segunda publicación que muestre cómo realizar algunas configuraciones sobre Redmine, si tienen alguna pregunta en específico sobre el paquete son bienvenidas.

Enlaces:

http://www.redmine.org/projects/redmine/wiki/Download
http://www.redmine.org/projects/redmine/wiki/RedmineInstall
http://hrj.wikidot.com/blog:20
http://www.modrails.com/documentation/Users%20guide%20Apache.html#_configuring_phusion_passenger

Anexo

Con todo lo descrito hasta aquí tendremos un Redmine funcionando, pero no del todo, si intentáramos subir un archivo por medio de la pestaña Documentos o Archivos de cualquier proyecto sobre Redmine, obtendríamos el siguiente error:



Si en Redmine vamos a Administración > Información veremos:

Entonces nos preguntamos, ¿Qué está pasando? obviamente colocamos esos permisos, esos directorios pertenecen al usuario apache. Bueno, eso es cierto, pero sucede que nunca dijimos con qué usuario correría el passenger.

Lo que debemos hacer es anexar una línea a nuestra configuración del módulo passenger:

null   
LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-3.0.2/ext/apache2/mod_passenger.so
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-3.0.2
PassengerRuby /usr/bin/ruby
RailsBaseURI /redmine
# Agregamos el usuario de Passenger
PassengerDefaultUser apache

Reiniciamos apache y todo quedará solucionado.

Quisieramos aprovechar esta edición para comentar que las configuraciones de Apache que se agregan, no deben colocarse necesariamente en el archivo httpd.conf, podemos colocar la configuración de passenger dentro de un archivo llamado passenger.conf (o cualquiernombre.conf) pero necesariamente ubicado en el directorio conf.d de Apache.

Anexo 2

Creo que esta es la última edición a esta publicación, pero es necesaria pues habíamos prometido mostrar la configuración que se realiza en Apache cuando se cuenta con un dominio, y pues como ya adquirimos el dominio, aquí va:

Para publicar nuestro Redmine a través de un dominio, agregamos lo siguiente a la configuración de Apache, puede ser en el archivo httpd.conf, pero preferiblemente en un archivo llamado redmine.conf (o comoprefieras.conf) ubicado en el directorio conf.d de Apache:

null   
<VirtualHost *:80>
  ServerName projects.blogcito.info
  DocumentRoot /opt/redmine-1.1/public
  <Directory /opt/redmine-1.1/public>
    AllowOverride all
    Options -MultiViews
  </Directory>
</VirtualHost>

Ahora sólo nos queda reiniciar el servidor web y podremos acceder al Redmine a través del dominio previamente configurado y apuntando a la máquina donde instalamos nuestra plataforma.

Por último, si queremos que nuestro Redmine no esté más disponible por la subdirección, borramos el enlace simbólico creado, y eliminamos la línea RailsBaseUri de nuestra configuración de Apache:

null   
sudo rm /var/www/html/redmine

Para borrar el enlace simbólico, nótese la ausencia del slash (/) al final de “/var/www/html/redmine”.

null   
LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-3.0.2/ext/apache2/mod_passenger.so
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-3.0.2
PassengerRuby /usr/bin/ruby
#RailsBaseURI /redmine # Basta con comentarla.

Reiniciamos Apache y accedemos a http://projects.blogcito.info/

Acerca del autor

Christian Gutierrez ha escrito 22 publicaciones en este blog.

Theory is when you know something, but it doesn't work. Practice is when something works, but you don't know why. Programmers combine theory and practice: Nothing works and they don't know why. – Anonymous Developer

2 Comentarios a “Instalar Redmine sobre Fedora”