Redmine
Redmine ist ein Projektverwaltungs-Werkzeug, das auf Ruby und Ruby on Rails basiert. Die Installation kann vollständig im Benutzeraccount stattfinden. Die Anbindung an den Webserver soll über FastCGI geschehen, da ein eigenständiger Daemon etwas unhandlich ist.
Ein großer Teil dieser Anleitung ist von unseren Kollegen bei Uberspace übernommen. Vielen Dank an die Kollegen für diesen Artikel!
Ruby-Versionen
Zumindest unter Gentoo ist es uns bisher nicht gelungen, die Ruby-FCGI-Bibliothek unter Ruby-1.9 zu nutzen. Daher basiert diese Anleitung auf Ruby-1.8. Momentan gibt es noch sehr viele Dinge die bei Ruby 1.9 nicht richtig funktionieren, daher ist es kein Problem, sich vorläufig noch auf das Vorhandensein von Ruby-1.8 zu verlassen.
Vorbereitung
Bevor wir in die Untiefen der Ruby-Gems hinab steigen sollten wir die Datenbank einrichten. Eine eigene Datenbank für Redmine ist empfehlenswert und kann über das Webinterface von schokokeks.org Hosting angelegt werden. Ein bestehender oder neuer Benutzer muss darauf Zugriff erhalten.
Wir installieren im nächsten Schritt das gem "bundler", das uns einen neuen Kommandozeilen-Befehl zur Verfügung stellt. Damit ein Befehl aus einem lokal im Benutzeraccount installierten GEM verfügbar ist, muss der passende Pfad gesetzt sein. Dazu dient folgender Befehl:
echo "export PATH=\"${HOME}/.gem/ruby/1.8/bin:\$PATH\"" >> ~/.bash_profile source ~/.bash_profile
Anschließend konfigurieren wir GEM so, dass generell alles im Benutzerverzeichnis installiert wird. Anders macht es auch keinen Sinn, da man ja nur im Benutzerverzeichnis Änderungen vornehmen darf.
echo "gem: --user-install --no-rdoc --no-ri" > ~/.gemrc
Zuletzt wird das Paket bundler installiert:
gem install bundler
Redmine installieren
Danach muss das jeweils aktuelle Paket von Redmine heruntergeladen werden. Zum Erstell-Zeitpunkt dieser Wiki-Seite ist das die Version 2.2.1.
- Download-Seite: http://rubyforge.org/frs/?group_id=1850
cd ~ wget http://rubyforge.org/frs/download.php/76677/redmine-2.2.1.tar.gz
In diesem Beispiel soll unser Redmine unter redmine.mydomain online gestellt werden. Dazu wird das Archiv passend entpackt und ein Symlink von "public" auf "htdocs" erzeugt um unsere Standard-Website-Verzeichnisse zu erhalten. redmine.mydomain ist jeweils durch den wirklichen Domainnamen zu ersetzen.
cd websites tar xzf ~/redmine-2.2.1.tar.gz mv redmine-2.2.1 redmine.mydomain cd redmine.mydomain ln -s public htdocs
Abhängigkeiten installieren
Durch das Paket bundler können in einem Rutsch sämtliche Abhängigkeiten installiert werden. Vorher muss jedoch für den Betrieb mittels FastCGI noch die Abhängigkeit zu fcgi manuell eingetragen werden:
echo "gem 'fcgi'" > Gemfile.local
Anschließend werden alle Abhängigkeiten heruntergeladen und installiert. Dabei lassen wir die Test- und Entwickler-Plattform genauso aus wie die PostgreSQL- und SQlite-Datenbank.
bundle install --path ~/.gem --without development test postgresql sqlite
Datenbank einrichten
Zunächst werden die Zugangsdaten in der Datei config/database.yml eingetragen. Die Datei muss bzgl. der Einrückungen genau so bleiben. Alles bis auf die erste Zeile ist eingerückt.
production: adapter: mysql database: datenbankname host: localhost username: datenbankbenutzer password: datenbankpasswort encoding: utf8
Anschließend wird kurz das Session-Secret erzeugt. Das wird benötigt um die Sessions sicher zu machen:
rake generate_secret_token
Danach wird die Datenbank mit dem Standardinhalt gefüllt.
RAILS_ENV=production rake db:migrate RAILS_ENV=production rake redmine:load_default_data
Beim letzten Befehl wird nach der Standard-Sprache gefragt. Mit "de" kann man die Beispieldaten in deutsch eintragen lassen. In unserem Test hat das aber nicht dazu geführt, dass die Installation nachher deutschsprachig war. Das lässt sich aber später im Redmin-Webinterface ändern.
E-Mail-Versand
Damit Redmine E-Mails versenden kann, sollte es am besten den traditionellen Sendmail-Wrapper unseres Mailservers benutzen. Dazu in der Datei config/configuration.yml folgendes eintragen:
production: email_delivery: delivery_method: :sendmail
Anbindung an FastCGI
Im Verzeichnis ~/websites/redmine.mydomain/htdocs liegt bereits eine Datei dispatch.fcgi.example, die uns als Vorgabe ausreicht.
cd htdocs cp -a dispatch.fcgi.example dispatch.fcgi
Ein Problem tritt auf da FastCGI die Umgebungsvariablen nicht so setzt wie dies in unserer SSH-Sitzung der Fall ist. Daher findet das dispatch-Script nicht alles was es braucht. Wir legen daher ein wrapper-Script an, das die Umgebung einrichtet und das Original-Script anschließend startet. Folglich wird eine neue Datei wrapper.fcgi erstellt mit folgendem Inhalt:
#!/bin/bash export USER=deinusername export HOME=/home/deinusername source $HOME/.bash_profile export RAILS_ENV=production exec ./dispatch.fcgi
Dabei ist deinusername durch den Benutzernamen zu ersetzen. Das Script muss anschließend ausführbar gemacht werden:
chmod +x wrapper.fcgi
Anschließend muss über eine .htaccess-Datei noch eingerichtet werden, dass unser wrapper-Script auch benutzt wird. Am einfachsten geht das mit mod_rewrite. Also eine neue Datei .htaccess' (führender Punkt!) erstellen mit folgendem Inhalt:
AddHandler fcgid-script .fcgi Options +FollowSymLinks +ExecCGI RewriteEngine On RewriteRule ^$ index.html [QSA] RewriteRule ^([^.]+)$ $1.html [QSA] RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ wrapper.fcgi [QSA,L] ErrorDocument 500 "<h2>Application error</h2>Rails application failed to start properly"
Fertig
Damit ist die Einrichtung beendet und die Website kann nun zum ersten Mal aufgerufen werden. Die Standard-Datenbank enthält bereits einen Admin-Benutzer. Benutzername und Passwort ist jeweils "admin".
Fehler?
Fehlermeldungen werden auch bei aktiviertem Error-Log in vielen Fällen in das zentrale System-Logfile geschrieben auf die ein Benutzer keinen Zugriff hat. Bei Fehlern ist man als Benutzer also manchmal etwas hilflos. Sprechen Sie uns an, wir helfen gerne bei der Fehlersuche.