Gestión de Proyectos · 3 min read · Jan 23, 2026
Ejecutando Redmine Project Management En nginx (Debian Wheezy)
Ejecutando Redmine Project Management En nginx (Debian Wheezy)
Redmine es una herramienta de gestión de proyectos escrita en Ruby. Este tutorial explica cómo servir Redmine con la ayuda de thin (un servidor web Ruby rápido) a través de un servidor web nginx en Debian Wheezy.
¡No emito ninguna garantía de que esto funcione para ti!
1 Nota Preliminar
He preparado un sitio web www.example.com con la raíz del documento /var/www/example.com/web (Redmine se instalará allí) que es propiedad del usuario web1 y del grupo client0.
También he preparado una base de datos MySQL para Redmine con el nombre c0db1. El nombre de usuario es c0db1 también, la contraseña es FyZ5z4QGfhTf8.
2 Instalando Redmine
Primero instalamos algunos requisitos previos:
apt-get install thin ruby rake rubygems libopenssl-ruby libmysql-ruby librmagick-ruby ruby-dev libmysqlclient-dev libmagick-dev curlgem install sass
gem install compassDescarga la última versión de Redmine y cópiala a nuestra raíz del documento /var/www/example.com/web:
cd /tmp
wget http://www.redmine.org/releases/redmine-2.4.2.tar.gz
tar xvfz redmine-2.4.2.tar.gz
mv redmine-2.4.2/* /var/www/example.com/web
cd /var/www/example.com/web
chown -R web1:client0 *Completa los detalles de inicio de sesión para nuestra base de datos MySQL:
cp config/database.yml.example config/database.yml
vi config/database.yml[...]
production:
adapter: mysql2
database: c0db1
host: localhost
username: c0db1
password: "FyZ5z4QGfhTf8"
encoding: utf8
[...]Instala algunos otros paquetes necesarios y llena la base de datos:
apt-get install libmagickwand-devgem install rmagickgem install bundlerbundle install --without development test postgresql sqliterake generate_secret_tokenrake db:migrate RAILS_ENV="production"rake redmine:load_default_data RAILS_ENV="production"3 Configurando thin
A continuación, configuramos thin, nuestro servidor web Ruby al que nginx enviará solicitudes.
ln -s /etc/thin1.9.1 /etc/thinmkdir /var/log/thin
chmod 755 /var/log/thin
cd /etc/thinCrea un archivo de configuración thin que se llame como el propietario de la raíz del documento (web1):
vi web1.ymlAsegúrate de usar el usuario correcto (web1) en las líneas de log, pid, socket y user, así como el grupo correcto (client0) en la línea de group. Usa la raíz del documento correcta en la línea chdir:
---
chdir: /var/www/example.com/web
environment: production
timeout: 30
log: /var/log/thin/web1.log
pid: /var/run/thin/web1.pid
max_conns: 1024
max_persistent_conns: 512
require: []
wait: 30
socket: /var/run/thin/web1.sock
daemonize: true
user: web1
group: client0
servers: 1
prefix: /Crea el directorio /var/run/thin (donde thin creará su socket):
mkdir /var/run/thin
chown -R web1:client0 /var/run/thinPara asegurarnos de que el directorio exista cuando thin se inicie, agregamos la línea test -e /var/run/thin || install -m 755 -o web1 -g client0 -d /var/run/thin al script de inicio /etc/init.d/thin (justo después de la línea SCRIPT_NAME):
vi /etc/init.d/thin[...]
DAEMON=/usr/bin/thin
SCRIPT_NAME=/etc/init.d/thin
test -e /var/run/thin || install -m 755 -o web1 -g client0 -d /var/run/thin
[...]Ahora inicia thin…
/etc/init.d/thin start… y toma nota del socket que crea (/var/run/thin/web1.0.sock en este caso) - lo necesitaremos en la configuración de nginx:
root@server1:/etc/thin# /etc/init.d/thin start
[start] /etc/thin1.9.1/web1.yml ...
Iniciando servidor en /var/run/thin/web1.0.sock ...
root@server1:/etc/thin#Si estás usando Monit, puedes agregar las siguientes líneas a /etc/monit/monitrc para asegurarte de que thin siempre esté en funcionamiento:
vi /etc/monit/monitrc[...]
check process thin with pidfile /var/run/thin/web1.0.pid
start program = "/etc/init.d/thin start"
stop program = "/etc/init.d/thin stop"
[...]Reinicia Monit después:
/etc/init.d/monit restart4 Configurando nginx
A continuación, debemos configurar nuestro vhost de nginx a través del cual queremos acceder a Redmine. Debes pegar la siguiente configuración en tu contenedor server {} (o en el campo Directivas de nginx si usas ISPConfig) - asegúrate de usar el socket thin correcto:
client_max_body_size 100M;
location / {
proxy_set_header X-Reak-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
if (-f $request_filename/index.html) {
rewrite (.*) $1/index.html break;
}
if (-f $request_filename.html) {
rewrite (.*) $1.html break;
}
if (!-f $request_filename) {
proxy_pass http://unix:/var/run/thin/web1.0.sock;
break;
}
}
¡Eso es todo! Ahora visita tu sitio web, y deberías poder usar Redmine. El nombre de usuario predeterminado es admin, la contraseña también es admin.


4 Enlaces
- Redmine: http://www.redmine.org/
- nginx: http://nginx.org/
- Debian: http://www.debian.org/
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.