Redmine im Tomcat installieren #

Redmine ist ein Werkzeug zur Projektverwaltung - in erster Linie für Software-Entwicklungs-Projekte geeignet.

Redmine ist in Ruby mit dem Framework http://rubyonrails.org/ Ruby on Rails programmiert. Es steht unter der http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU General Public License v2 (GPL).

Hier soll es als Beispiel dienen, wie man auf der Hostsharing-Infrastruktur mit der Tomcat-Option Rails-Anwendungen betrieben kann.

Vorbereitungen #

Zunächst baue und teste ich auf meinem lokalen Rechner eine Java-Webapplikation, die ich später bei Hostsharing installiere.

Ich brauche:

  1. die aktuelle Redmine Version von RubyForge (zur Zeit Version 1.1.1)
  2. die Ruby-/Rails-Infrastruktur mit JRuby auf meinem lokalen Rechner

Software-Pakete #

Zunächst installiere ich als root die Ruby-Infrastruktur:

  aptitude install jruby rubygems

Als Datenbank will ich Postgres nutzen:

  aptitude install postgresql

Eine Postgres-Datenbank mit eigenem Datenbank-User lege ich als User postgres an:

  su - postgres
  createuser -D -S -R -P redmine
  createdb -O redmine -E UTF8 redmine

Webapplikation bauen #

Als normaler User baue ich dann die Web-Applikation zusammen:

Download und entpacken von redmine in /home/user/redmine-n.n.n

  tar xzf redmine-1.1.1.tar.gz
  cd /home/user/redmine-1.1.1

Installation einiger Ruby-Gem-Pakete:

  mkdir /home/user/.gem
  export GEM_HOME=/home/user/.gem
  gem install -v=0.4.2 i18n
  gem install -v=1.0.1 rack
  gem install jruby-openssl
  gem install activerecord-jdbcpostgresql-adapter
  gem install rake

In config/environment.rb habe ich folgende Zeilen eingefügt:

Unmittelbar vor Rails::Initializer.run do |config|

    if RUBY_PLATFORM =~ /java/
       require 'rubygems'
       gem 'activerecord-jdbc-adapter'
       require 'arjdbc'
    end

Direkt hinter Rails::Initializer.run do |config| dann:

    config.action_controller.session = { :key => "_myapp_session", :secret => "ueber-30-zeichen-session-key" }

Dann lege ich die Datei config/database.yml mit folgendem Inhalt an:

    production:
      adapter: jdbc
      driver: org.postgresql.Driver
      url: jdbc:postgresql://localhost/redmine
      encoding: unicode
      username: redmine
      password: mein_geheimnis
      host: localhost
      port: 5432

Jetzt kann ich die Datenbank initialisieren:

    export RAILS_ENV=production
    jruby ~/.gem/bin/rake db:migrate
    jruby ~/.gem/bin/rake redmine:load_default_data

Ein erster Test mit:

    jruby ./script/server -e production

Jetzt sollte Redmine unter http://localhost:3000 erreichbar sein.

Die letzten Schritte zum Bau der WAR-Datei:

    gem install warbler
    ~/.gem/bin/warble config

Folgendes in der Datei config/warble.rb hinter Warbler::Config.new do |config| anpassen bzw. ergänzen:

    config.dirs = %w(app config lib log vendor tmp extra files lang)
    config.gems += ["activerecord-jdbcpostgresql-adapter", "i18n", "jruby-openssl", "rack"]
    config.gems["i18n"] = "0.4.2"
    config.gems["rack"] = "1.0.1" 

Der letzte Schritt

    ~/.gem/bin/warble

erzeugt eine Datei redmine-1.1.1.war, die ich in redmine.war umbenenne und im Tomcat deploye.