Das auf Rails aufsetzende Ticketsystem Redmine bietet unter anderem ein integriertes Wiki, eine Dateiverwaltung sowie Anbindungen an diverse Versions-Verwaltungs-Systeme. In diesem Artikel möchte ich zeigen, wie Redmine unter Debian Lenny installiert und mit MySQL-Anbindung sowie Apache2 und mod_fcgid konfiguriert werden kann.
Ich gehe im Folgenden von einer Lenny-Basisinstallation aus, d.h. es sind keine Pakete aus Fremdquellen oder ähnliches installiert. Der Server, auf dem Redmmine aufgesetzt wird, ist unter dem Namen redmine.example.com erreichbar und nimmt auf localhost:25 Mails ohne Authentifizierung entgegen. MySQL und Apache müssen noch nicht installiert sein.
Als erstes sollten Ruby, Rubygems und Rails installiert und eingerichtet werden, wie ich es in einem früheren Artikel beschrieben habe. Die Pfade in den weiteren Schritten beziehen sich auf diese Konfiguration.
MySQL
Als erstes werden die für MySQL benötigten Debian-Pakete installiert:
# aptitude install mysql-server build-essential ruby1.8-dev libmysqlclient15-dev
Als nächstes das gem für die Ruby-MySQL-Anbindung:
# gem install mysql
Redmine installieren
Das Verzeichnis für die Redmine-Dateien kann frei gewählt werden (ich verwende /srv/www/redmine). Die einzige Voraussetzung ist, dass der Webserver Leserechte für diesen Pfad besitzt.
Download und Installation
Die aktuelle Version von Redmine kann bei Rubyforge heruntergeladen werden. Die derzeit aktuelle Version ist 0.8.4.
# mkdir -p /srv/www/ # cd /srv/www/ # wget http://rubyforge.org/frs/download.php/56909/redmine-0.8.4.tar.gz # tar xvzf redmine-0.8.4.tar.gz # mv redmine-0.8.4 redmine # cd redmine
Nun müssen die Zugriffsrechte gesetzt werden, so dass der Webserver (www-data) schreibend auf files/, log/, tmp/ und public/plugin_assets/ zugreifen kann:
# mkdir tmp public/plugin_assets # chgrp -R www-data files log tmp public/plugin_assets # chmod -R g+w files log tmp public/plugin_assets
Leere Datenbank einrichten
Als erstes wird eine leere Datenbank sowie ein User mit jeweils dem Namen ‘redmine’ angelegt. Dem neuen User werden volle Zugriffsrechte auf die Datenbank gegeben:
# mysql -uroot -p mysql> create database redmine character set utf8; mysql> create user 'redmine'@'localhost' identified by 'my_password'; mysql> grant all privileges on redmine.* to 'redmine'@'localhost';
Anpassen der Konfiguration
Damit Redmine auf die Datenbank zugreifen kann, müssen die Zugangsdaten entsprechend eingetragen werden:
# cp config/database.yml.example config/database.yml
In der Datei config/database.yml muss der Abschnitt ‘production’ angepasst werden:
production:
adapter: mysql
database: redmine
host: localhost
username: redmine
password: my_password
encoding: utf8
Die anderen Abschnitte sind nur dann interessant, wenn man Redmine in einer anderen als der ‘production’-Umgebung betreiben möchte. Ansonsten können sie bleiben wie sie sind.
Die Datenbank befüllen
Nun kann Redmine auf die Datenbank zugreifen und das Schema kann per Rake-Task angelegt werden:
# rake db:migrate RAILS_ENV="production"
Es empfiehlt sich, die Default-Konfiguration ebenfalls zu laden, dies ist aber optional:
# rake redmine:load_default_data RAILS_ENV="production"
Testen der Installation
An dieser Stelle kann die Installation bereits mit dem WEBrick Webserver getestet werden:
# ruby script/server webrick -e production
Redmine sollte unter der Adresse redmine.example.com:3000 erreichbar sein und ein login (User: admin, Passwort: admin) sollte ebenfalls möglich sein. Hinweis: Damit der Login nicht fehlschlägt, müssen (Session-)Cookies akzeptiert werden.
Mit Ctrl-C wird der Webserver wieder beendet.
SMTP Konfiguration
Soll Redmine E-Mails versenden können, muss eine weitere Konfigurationsdatei angepasst werden:
# cp config/email.yml.example config/email.yml
Hier muss ebenfalls der Abschnitt ‘production’ bearbeitet werden:
production:
delivery_method: :smtp
smtp_settings:
address: localhost
port: 25
domain: example.com
authentication: :none
Apache installieren
Für diesen Teil der Installation musste ich recht lange herumprobieren, bis das Gespann aus Rails, mod_fcgid und Apache korrekt funktioniert hat. Bei diesem Zusammenspiel kann leider allzuviel schiefgehen.
Zunächst wird das CGI-Script an Ort und Stelle gebracht:
# cp public/dispatch.fcgi.example public/dispatch.fcgi
Eine weitere Anpassung ist nicht notwendig.
Es folgen die benötigten Debian-Pakete…
# aptitude install apache2 libapache2-mod-fcgid libfcgi-dev
… sowie ein weiteres gem:
# gem install fcgi
[Update 24.10.09: Als ich kürzlich auf Version 0.8.5 umgestellt habe, habe ich bemerkt, dass ich hier einen Schritt unterschlagen habe, den ich hiermit nachreichen möchte. Und zwar müssen in der public/.htaccess folgende Zeilen auskommentiert werden:
#<IfModule mod_cgi.c>
# AddHandler cgi-script .cgi
#</IfModule>
und
#<IfModule mod_cgi.c>
# RewriteRule ^(.*)$ dispatch.cgi [QSA,L]
#</IfModule>
Ansonsten schreibt Apache den Request bis zum Erreichen des Limits immer wieder um und produziert einen Internal Server Error.]
Zuletzt wird der Virtual Host redmine.example.com konfiguriert. Dazu wird die Datei /etc/apache2/sites-available/redmine mit folgendem Inhalt angelegt:
<VirtualHost *:80>
ServerName redmine.example.com
ServerAlias redmine
ServerAdmin webmaster@localhost
DocumentRoot /srv/www/redmine/public/
<IfModule mod_fcgid.c>
DefaultInitEnv RAILS_ENV production
DefaultInitEnv GEM_HOME /var/local/lib/gems
DefaultInitEnv RUBYLIB /usr/local/ruby/lib/
</IfModule>
<Directory /srv/www/redmine/public/>
Options Indexes ExecCGI FollowSymLinks
Order allow,deny
Allow from all
AllowOverride all
</Directory>
ErrorLog /var/log/apache2/redmine_error.log
LogLevel warn
CustomLog /var/log/apache2/redmine_access.log combined
</VirtualHost>
Nun muss nur noch die Konfiguration geladen und das Modul rewrite aktiviert werden:
# a2ensite redmine # a2enmod rewrite # /etc/init.d/apache2 restart
Wenn nichts schiefgegangen ist, steht Redmine jetzt unter redmine.example.com/ bereit. Für die weitere Konfiguration und die ersten Schritte lohnt sich ein Blick ins Redmine Manual.
Da ich grad’ im code review / proof-read-Modus bin, zwei kleinere Anmerkungen:
* Man kann sich die `create user` Zeile beim anlegen der mysql db sparen, wenn man in der letzteren Zeile das Passwort einfach dranhaengt. Der user wird implizit angelegt:
grant all privileges on redmine.* to ‘redmine’@'localhost’ identified by ‘my_password’;
* Das CustomLog-Format “Kombinat” ist mir bis jetzt nicht ueber den Weg gelaufen. “combined”?
@Martin
Natürlich musste es ‘combined’ heißen. Da hat wohl meine Rechtschreibkorrektur zugeschlagen…
Ich bekomme den hässlichen Fehler wenn ich Redmine aufrufe:
Application error
Rails application failed to start properly
@Apollo Die Fehlermeldung sagt leider nicht viel aus, außer dass ein Fehler aufgetreten ist. ;-)
Um den Fehler einzugrenzen, empfehle ich dir folgende Schritte:
- Rufe auf der Kommandozeile public/dispatch.fcgi direkt auf. Erhälst du eine Fehlermeldung oder eine HTML-Seite als Antwort?
- Funktioniert redmine, wenn du mit script/server webrick startest?
- Gibt es Hinweise in den Logs von redmine und/oder Apache? — Falls nicht, setze den Loglevel von ‘warn’ auf ‘debug’.
- Hast du die Umgebungsvariablen (mit DefaultInitEnv) in der Apache-Config gesetzt?
@Apollo Ich habe eben in den Artikel einen Schritt eingebaut, den ich beim Schreiben übersehen hatte. Es müssen ein paar Zeilen aus der .htaccess auskommentiert werden, sonst wird ein Server-Fehler produziert. Möglicherweise die Ursache deines Problems.
Hallo,
um diese Tutorial Schritt für Schritt auf einem frisch installieren Debian Lenny durchzuführen, musste ich noch rake manuell installieren. Außerdem scheint der gem-Symlink nicht zu funktionieren. Desweiteren erhält man einen Server Error sobald man das Tutorial abgeschlossen hat. Worans hängt muss ich noch herausfinden, werde es dann hier posten.
@Anonymous Hast du rubygems nach meinem Post unter http://martin-grandrath.de/2009/02/ruby-on-rails-22-unter-debian-lenny-installieren/ installiert?
Genau, nach dieser Anleitung bin ich vorgegangen. Rake wird bei mir nicht installiert.
Ergänzung zum vorherigen Post:
- Ich musste mit “a2dissite default” die default-config deaktivieren.
- Loggt man sich ein, während man Redmine testweise mit “ruby script/server webrick -e production” startet, schlägt ein späterer aufruf von Redmine unter Apache fehl (Error 500). Im Logfile von Apache erscheint dann z.B. “Status: 500 Internal Server Error
file /srv/www/redmine/tmp/sessions//ruby_sess.eccb7d1bc2518e01 not readable”
Einfach Cookies löschen dann funktioniert allles.
So, mal testen wann der Spamfilter mich abfängt =P Sry für die vielen einzelnen Posts aber ich kann nirgends eine Editierfunktion finden (gibts das bei WP überhaupt?)
Um eine bessere Fehlersuche zu ermöglichen, sollte man noch “chmod 666 /srv/www/redmine/log/production.log” ausführen.
Ansonsten bleibt das Logfile ämlich leer: “Rails Error: Unable to access log file. Please ensure that /srv/www/redmine/log/production.log exists and is chmod 0666. The log level has been raised to WARN and the output directed to STDERR until the problem is fixed.”
Hi,
fehlt nicht vor dem DB befüllen ein:
‘rake generate_session_store’?
Bei mir wollte er das bevor es weiterging.
T.
@Thomas:
Der Rake-Task “generate_session_store” ist erst Ende ‘09 hinzugekommen und wie es aussieht mit Version 0.9.0 veröffentlicht worden.
Danke für das Tutorial, hat fast perfekt geklappt.
Der Testserver läuft bei mir ohne Probleme, kann Redmine mit :3000 aufrufen. Sobald ich allerdings die Apache-Konfiguration abgeschlossen habe, bekomme ich beim Aufruf von redmine.domain.tld eine Fehlerseite “Umleitungsfehler”.
Könnte das mit meiner Serverkonfiguration zusammenhängen (SysCP bzw. Froxlor)?
Hast du eine Idee?
@Benjamin:
Hast du in der .htaccess auch die genannten Zeilen auskommentiert? Falls ja, hast du Zugriff auf das Error-Log von Apache und kannst eine detailliertere Fehlermeldung posten?
JUHU, habe es gerade hinbekommen. Hat mit der externen A2-Site nicht geklappt, sobald ich die Config direkt in die httpd.conf eingetragen hatte, hat es geklappt.
Dazu musste ich dann noch statt *:80 meine IP:80 eintragen.
(Funktioniert so auch mit der “normalen” .htaccess; aus den Error-Logs ging auch nichts hervor, war reiner Zufall, dass ich es so entdeckt hab).
Danke aber auf jeden Fall für die schnelle Antwort!
redmine ist klasse – in der online-demo!
Aber die Installation von ruby und redmine ist aus ergonomischen Gesichtspunkten eine Katastrophe.
Ich habe jetzt in einer Test-VM 4 Anleitungen durchgearbeitet und keine davon funktioniert auf Anhieb.
Das wird der Grund sein, warum redmine nur ein Geheimtipp für ein paar Ruby-Freunde und Admins bleiben wird. :-(
Tja, wenn man keine Ahnung von Ruby hat, hat man verloren…
Schade, redmine hätte das Zeug zu mehr.
Einfach aufgeben ist nicht. Ich kämpfe mich nun doch Schritt für Schritt.
Ruby, gems (1.5 vom 31.1.2011!!!) und Rail scheinen nun sauber installiert zu sein.
rake habe ich “manuell” nachinstalliert. Bereitet mir aber Mühe.
Nun hänge ich an dieser Stelle und finde noch keinen sinnvollen Lösungsansatz:
# rake db:migrate RAILS_ENV=”production”
/usr/bin/rake:27:in `require’: no such file to load — rake (LoadError)
from /usr/bin/rake:27
Hat hierzu jemand eine Idee?