Redmine

Requerimientos
1- Tener instalado VirtualBox

2- Tener instalado Vagrant

Dependencias
Para instalar Redmine, seguir los siguientes pasos:

Primero, actualizamos los paquetes y dependencias sudo apt-get update sudo apt-get upgrade

Instalamos algunas dependencias que necesitaremos sudo apt-get install nginx mysql autoconf subversion curl bison \ imagemagick libmagickwand-dev build-essential libmariadbclient-dev \ libyaml-dev python-software-properties libssl-dev libreadline-dev zlib1g-dev git

Usuario y Grupo
Agregamos un usuario llamado redmine y le damos la contraseña redmine sudo adduser --disabled-login --gecos 'Redmine' redmine sudo passwd redmine Para darle al usuario los permisos necesarios, abrimos el archivo sudoer con el comando

visudo

Y agregamos la linea

redmine ALL=(ALL) ALL

El archivo debe quedar asi: #/etc/sudoers # # This file MUST be edited with the 'visudo' command as root. # # See the man page for details on how to write a sudoers file. #

Defaults env_reset

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification root   ALL=(ALL) ALL #tal vez sea root ALL=(ALL:ALL) ALL redmine ALL=(ALL) ALL

# Allow members of group sudo to execute any command # (Note that later entries override this, so you might need to move # it further down) %sudo ALL=(ALL) ALL # #includedir /etc/sudoers.d

Instalar Ruby
Cambiamos al usuario redmine

sudo su - redmine

Clonamos repositorio de rbenv git clone git://github.com/sstephenson/rbenv.git .rbenv git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

Agregamos el rbenv a nuestro PATH echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile echo 'eval "$(rbenv init -)"' >> ~/.bash_profile exec $SHELL -l

Instalamos Ruby 2.1.2 rbenv install 2.1.2 rbenv global 2.1.2

Descargar e instalar Redmine
Buscamos y descargamos redmine, agregamos algunos directorios y cambiamos sus permisos svn co http://svn.redmine.org/redmine/branches/2.5-stable redmine cd redmine mkdir -p tmp/pids tmp/sockets public/plugin_assets chmod -R 755 files log tmp public/plugin_assets

Creamos el archivo puma.rb

nano config/puma.rb

En puma.rb copiamos lo siguiente # start puma with: # RAILS_ENV=production bundle exec puma -C ./config/puma.rb # application_path = '/home/redmine/redmine' directory application_path environment 'production' daemonize true pidfile "#{application_path}/tmp/pids/puma.pid" state_path "#{application_path}/tmp/pids/puma.state" stdout_redirect "#{application_path}/log/puma.stdout.log", "#{application_path}/log/puma.stderr.log" bind "unix://#{application_path}/tmp/sockets/redmine.sock"

O bien, descarga el archivo puma.rb del repositorio Github

curl https://gist.githubusercontent.com/jbradach/6ee5842e5e2543d59adb/raw/ > /home/redmine/redmine/config/puma.rb

Conectamos la base de datos para crear una BD y un usuario Redmine mysql -u root -p CREATE DATABASE redmine CHARACTER SET utf8; CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'redmine'; *la contraseña es redmine* GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';

Copiamos la configuracion de la base de datos y actualizamos el servidor de produccion cp config/database.yml.example config/database.yml nano config/database.yml

En el archivo config.yml escribimos ...   production: adapter: mysql2 database: redmine host: localhost username: redmine password: "redmine" encoding: utf8 ...

Instalamos las gems echo "gem: --no-ri --no-rdoc" >> ~/.gemrc echo -e "# Gemfile.local\ngem 'puma'" >> Gemfile.local gem install bundler rbenv rehash bundle install --without development test

Generamos una Random Key, creamos la estructura de la base de datos e insertamos los datos de configuracion rake generate_secret_token RAILS_ENV=production rake db:migrate RAILS_ENV=production rake redmine:load_default_data

Salimos del usuario redmine

exit

Agregamos un script init para abrir Redmine automaticamente y que nos permita manejar los procesos usando service.

nano /etc/init.d/redmine

Dentro de este archivo escribimos
 * 1) ! /bin/sh
 * 2) BEGIN INIT INFO
 * 3) Provides:          redmine
 * 4) Required-Start:    $local_fs $remote_fs $network $syslog
 * 5) Required-Stop:     $local_fs $remote_fs $network $syslog
 * 6) Default-Start:     2 3 4 5
 * 7) Default-Stop:      0 1 6
 * 8) Short-Description: Starts redmine with puma
 * 9) Description:       Starts redmine from /home/redmine/redmine.
 * 10) END INIT INFO
 * 1) Do NOT "set -e"

APP_USER=redmine APP_NAME=redmine APP_ROOT="/home/$APP_USER/$APP_NAME" RAILS_ENV=production RBENV_ROOT="/home/$APP_USER/.rbenv" PATH="$RBENV_ROOT/bin:$RBENV_ROOT/shims:$PATH" SET_PATH="cd $APP_ROOT; rbenv rehash" DAEMON="bundle exec puma" DAEMON_ARGS="-C $APP_ROOT/config/puma.rb -e $RAILS_ENV" CMD="$SET_PATH; $DAEMON $DAEMON_ARGS" NAME=redmine DESC="Redmine Service" PIDFILE="$APP_ROOT/tmp/pids/puma.pid" SCRIPTNAME="/etc/init.d/$NAME"

cd $APP_ROOT || exit 1 sig { test -s "$PIDFILE" && kill -$1 `cat $PIDFILE` }

case $1 in start)        sig 0 && echo >&2 "Already running" && exit 0        su - $APP_USER -c "$CMD"        ;;  stop) sig QUIT && exit 0 echo >&2 "Not running" ;; restart|reload)        sig USR2 && echo "Restarting" && exit 0        echo >&2 "Couldn't restart"        ;;  status) sig 0 && echo >&2 "Running " && exit 0 echo >&2 "Not running" && exit 1 ;; *)        echo "Usage: $SCRIPTNAME {start|stop|restart|status}" >&2        exit 1        ;; esac

O puedes tomar el archivo redmine del repositorio Github con curl https://gist.githubusercontent.com/jbradach/17e73fa6ddc365bb0242/raw/ > /etc/init.d/redmine sudo chmod +x /etc/init.d/redmine sudo update-rc.d redmine defaults

Una vez hecho esto, iniciamos redmine

service redmine start

Finalmente, configuramos Nginx con Redmine/Puma y las configuraciones de proxy adecuadas

sudo nano /etc/nginx/sites-available/redmine

Dentro del archivo redmine upstream puma_redmine { server unix:/home/redmine/redmine/tmp/sockets/redmine.sock fail_timeout=0; #server 127.0.0.1:3000; }

server { server_name *IP de la máquina*; listen 80; root /home/redmine/redmine/public;

location / { try_files $uri/index.html $uri.html $uri @ruby; }

location @ruby { proxy_set_header Host $http_host; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_redirect off; proxy_read_timeout 300; proxy_pass http://puma_redmine; } }

O bien, usa el archivo de configuracion de Nginx del repositorio Github

sudo curl https://gist.githubusercontent.com/jbradach/31ad6d9c84c3be3b5730/raw/ > /etc/nginx/sites-available/redmine

Enlaza la configuración con sites-enabled y reinicia Nginx sudo ln -s /etc/nginx/sites-available/redmine /etc/nginx/sites-enabled/redmine sudo service nginx restart service redmine start

Vamos a la carpeta sites-enabled, borramos el archivo default y reiniciamos Nginx cd /etc/nginx/sites-enabled sudo rm default sudo service nginx restart

Ingresar el IP de la máquina al navegador y Redmine debería verse.

Crear Docker Redmine 4.0.3
En este ejemplo crearemos un Docker Redmine con una BD mysql. No esta demas aclarar que tambien es compatible con otras BD como postgresql y SQLite.

docker run                                                               \ --detach                                                               \ --name redmine                                                         \ --publish 3000:3000                                                    \ --env REDMINE_DB_MYSQL= {IP_BD_HOSTS}                                  \ --env REDMINE_DB_USERNAME=redmine                                      \ --env REDMINE_DB_PASSWORD={BD_PASS}                                    \ --env REDMINE_DB_DATABASE=redmine                                      \ --volume /opt/redmine-data/files:/usr/src/redmine/files                \ --volume /opt/redmine-data/log:/usr/src/redmine/log                    \ --volume /opt/redmine-data/vendor:/usr/src/redmine/vendor              \ --volume /opt/redmine-data/plugins:/usr/src/redmine/plugins            \ --volume /opt/redmine-data/public/themes:/usr/src/redmine/public/themes \ redmine:4.0.3