WikiMiNET

La documentation technique et administrative

Outils pour utilisateurs

Outils du site


wiki:divers:archives:articles_archives:redmine

Redmine

pré-requis

  • ruby (1.9.3)
  • rails
  • une connexion internet acceptant le https
  • git
  • un utilisateur redmine sans les droits sudo

Installation de Redmine

Téléchargement

Nous utiliserons git mais il peut aussi être récupéré via svn à l'adresse http://svn.redmine.org/redmine

cd /opt
git clone https://github.com/redmine/redmine

Installation

Installation et utilisation de MySql

Comme toujours, gem va avoir besoin de composants présents dans des librairies annexes

sudo apt-get install libmysql-ruby libmysqlclient-dev mysql-client
rvmsudo gem install mysql2

Ensuite il faut créer un utilisateur redmine et une base de même nom sur phpmyadmin. Et enfin il faut donner tous les renseignement necessaires à redmine, ceci ce trouve dans /opt/databse.yml

production:
  adapter: mysql2
  database: redmine
  host: sql.minet.net
  username: redmine
  password: passwd
Bundler pour les autres plugins

On va avoir besoin de bundler pour récupérer toutes les gems dont redmine a besoin.

gem install bundler

Un Gemfile est donné avec les sources de redmine lors du git, il faut donc executer bundler dans le dossier d'installation de redmine, ici /opt/redmine. rmagick a besoin de dépendances supplémentaires pour fonctionner.

sudo apt-get install libmagickwand-dev
rvmsudo bundle install --without development test
Generation des Token
rake generate_secret_token

Si la commande renvoie une erreur dans /opt/redmine essayer :

rvmsudo rake generate_secret_token
On peuple la base sql

On crée la structure de la base :

RAILS_ENV=production rake db:migrate

Puis on la peuple (il demande aussi la langue a ce niveau là) :

RAILS_ENV=production rake redmine:load_default_data
Dossiers nécessaires à redmine
mkdir -p tmp tmp/pdf public/plugin_assets
sudo chown -R redmine:redmine files log tmp public/plugin_assets
sudo chmod -R 755 files log tmp public/plugin_assets
Test (non nécessaire)

Ceci ne fonctionne qu'en local :

rvmsudo ruby script/rails server webrick -e production

Ceci est uniquement pour tester si l'installation est complète !

Déploiement sur apache2 -> très mauvaise idée !

Déploiment sur nginx

Utilisation d'unicorn

Installation

Comme d'hab avec ruby on utilise gem. On se place dans /opt/redmine et on édite le Gemfile fourni pour que le versionning corresponde. On ajoute :

gem "unicorn"

Puis on installe :

rvmsudo gem install unicorn
Configuration

On crée un fichier unicorn.rb dans /opt/redmine/ avec le contenu suivant :

$unicorn_user = "redmine"
$unicorn_group = "redmine"
 
worker_processes 2
working_directory '/opt/redmine'
 
listen      "127.0.0.1:3000"
timeout     30
 
pid         "tmp/pids/unicorn.pid"
stderr_path "log/unicorn.log"
stdout_path "log/unicorn.log"
 
preload_app  true
 
before_fork do |server, worker|
  defined?(ActiveRecord::Base) and ActiveRecord::Base.connection.disconnect!
end
 
after_fork do |server, worker|
  defined?(ActiveRecord::Base) and ActiveRecord::Base.establish_connection
 
  begin
    uid, gid = Process.euid, Process.egid
    user, group = $unicorn_user, $unicorn_group
    target_uid = Etc.getpwnam(user).uid
    target_gid = Etc.getgrnam(group).gid
    worker.tmp.chown(target_uid, target_gid)
    if uid != target_uid or gid != target_gid
      Process.initgroups(user, target_gid)
      Process::GID.change_privilege(target_gid)
      Process::UID.change_privilege(target_uid)
    end
  rescue
    if RAILS_ENV = "development"
      STDERR.puts "could not change user, oh well"
    else
      raise e
    end
  end
end

Enfin on crée le script de démarrage dans /etc/init.d/redmine avec le contenu suivant :

#!/bin/bash
#
# unicorn_rails_redmine Startup script for unicorn.
#
# chkconfig: - 85 15
# description: redmine on unicorn stabin:/usr/local/rvm/gems/ruby-1.9.3-p448@global/bin:/usr/local/rvm/gems/ruby-1.9.3-p448/bin:/usr/local/rvm/rt/stop script.
#
 
#
# set rvm environment valiables.
#
export PATH=/usr/local/rvm/gems/ruby-1.9.3-p448@redmine/bin:/usr/local/rvm/gems/ruby-1.9.3-p448@global/bin:/usr/local/rvm/gems/ruby-1.9.3-p448/bin:/usr/local/rvm/rubies$
export GEM_HOME=/usr/local/rvm/gems/ruby-1.9.3-p448@redmine
export GEM_PATH=/usr/local/rvm/gems/ruby-1.9.3-p448@redmine:/usr/local/rvm/gems/ruby-1.9.3-p448@global:/usr/local/rvm/gems/ruby-1.9.3-p448
export BUNDLE_PATH=
export MY_RUBY_HOME=/usr/local/rvm/rubies/ruby-1.9.3-p448
export IRBRC=/usr/local/rvm/rubies/ruby-1.9.3-p448/.irbrc
 
 
set -u
set -e
 
APP_NAME=redmine
APP_ROOT="/opt/$APP_NAME"
CNF="$APP_ROOT/unicorn.rb"
PID="$APP_ROOT/tmp/pids/unicorn.pid"
ENV=production
 
UNICORN_OPTS="-D -E $ENV -c $CNF"
 
old_pid="$PID.oldbin"bin:/usr/local/rvm/gems/ruby-1.9.3-p448@global/bin:/usr/local/rvm/gems/ruby-1.9.3-p448/bin:/usr/local/rvm/
 
cd $APP_ROOT || exit 1
sig () {bin:/usr/local/rvm/gems/ruby-1.9.3-p448@global/bin:/usr/local/rvm/gems/ruby-1.9.3-p448/bin:/usr/local/rvm/
        test -s "$PID" && kill -$1 `cat $PID`
}
 
oldsig () {
        test -s $old_pid && kill -$1 `cat $old_pid`
}
 
case ${1-help} in
start)
        sig 0 && echo >&2 "Already running" && exit 0
        cd $APP_ROOT ; unicorn_rails $UNICORN_OPTS
        ;;
stop)
        sig QUIT && exit 0
        echo >&2 "Not running"
        ;;
force-stop)
        sig TERM && exit 0
        echo >&2 "Not running"
        ;;
restart|reload)
        sig HUP && echo reloaded OK && exit 0
        echo >&2 "Couldn't reload, starting instead"
        unicorn_rails $UNICORN_OPTS
        ;;
upgrade)
        sig USR2 && exit 0
        echo >&2 "Couldn't upgrade, starting instead"
        unicorn_rails $UNICORN_OPTS
        ;;
rotate)
        sig USR1 && echo rotated logs OK && exit 0
        echo >&2 "Couldn't rotate logs" && exit 1
        ;;
*)
        echo >&2 "Usage: $0 <start|stop|restart|upgrade|rotate|force-stop>"
        exit 1
        ;;
esac

On le rend exécutable et on le teste :

sudo chmod +x /etc/init.d/redmine
sudo service redmine start

Puis il faut l'activer au démarrage de la VM :

sudo update-rc.d redmine defaults 

On passe a Nginx

Installation
sudo apt-get install nginx
Configuration

On va venir éditer /etc/nginx/sites-available/redmine

pstream redmine {
        server 127.0.0.1:3000;
}

server {
        server_name redmine.minet.net;
        root /opt/redmine/public;

        proxy_redirect off;

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

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

Puis on enable redmine sur le serveur :

sudo ln -s /etc/nginx/sites-available /etc/nginx/sites-enable

Enfin, on redémarre nginx !

sudo /etc/init.d/nginx restart

Et les mails ? (parce que le spam c'est bon :D)

Les mails ont besoin d'un gem qui ne s'installe pas forcément automatiquement :

gem install mail

Puis on renseigne le fichier /opt/redmine/config/configuration.yml

default:
  email_delivery:
    delivery_method: :smtp
    smtp_settings:
      address: smtp.minet.net
      port: 25

MAJ

Arrêter le service :

service redmine stop
  1. Telecharger la nouvelle version et la copier dans le dossier /opt/redmineXXX
  2. Copier le contenu de /opt/redmine vers /opt/redmine.oldXXX
  3. Supprimer entièrement le contenu de /opt/redmine/ avant d'y copier les fichiers de la nouvelle version
  4. Copier depuis la version précédente les fichiers unicorn.rb, config/database.yml, config/configuration.yml, public/themes/MiNET
  5. Se placer dans le dossier /opt/redmine puis exécuter : rvmsudo bundle install
  6. Exécuter : rake generate_secret_token
  7. Puis : rake config/initializers/session_store.rb
  8. Enfin : chown -R redmine:redmine ./

Test

Il faut ensuite relancer le service :

service redmine start

Si tout démarre, il suffit d'aller vérifier dans la configuration de redmine sur le site que tout est ok et que la version est bien la plus à jour et dans ce cas c'est gagné !

Sinon...

En cas d'erreur de démarrage unicorn, il faut aller voir les logs :

/opt/redmine/log/
wiki/divers/archives/articles_archives/redmine.txt · Dernière modification: 2020/06/27 18:16 (modification externe)