• Startseite
  • Über mich
  • Portfolio
    • Eventmanagement
    • Technologie
      • Multitouch-Surface
      • Multitouch-Table
    • Smartphone-Apps
    • Unternehmen
    • Presse
  • Programmierung
  • Auto
  • Wirtschaftsinformatik

Patrick Hütter

Mein Blog rund um Softwareentwicklung, Online-Marketing, StartUps, Gründung, Unternehmertum, Trends and more

HowTo: Redmine mit Apache2 und Phusion Passenger unter Debian Squeeze installieren

6
  • by Patrick Hütter
  • in Allgemein · Programmierung · Projektmanagement · Server · Shell · Web
  • — 31 Jul, 2012

Redmine ist ein webbasiertes Projektmanagement-Tool. Es kann für Benutzer- und Projektverwaltung, Diskussionsforen, Wikis, zur Ticketverwaltung oder Dokumentenablage genutzt werden. Weltweit wird Redmine bei mehreren großen Projekten verwendet, unter anderem bei dem Issue-Tracking-System der Programmiersprache Ruby oder dem Entwicklerportal von TYPO3.

Da viele verschiedene Anleitungen im Internet kursieren, die die Installation von Redmine auf Debian beschreiben, aber nicht jede auf sich auf die modernsten Technologien bezieht, habe ich das nötigste zusammen gesucht und ein kleines und kurzes HowTo geschrieben. Das HowTo beschreibt die Einrichtung von Redmine 2.0.3 auf einem Debian Squeeze Server, der bereits für Webhosting von PHP-Applikationen im Einsatz ist.

1. Benötigte Pakete installieren

aptitude install wget build-essential ruby1.8 ruby1.8-dev librmagick-ruby1.8 libmysql-ruby1.8 apache2-mpm-prefork bsd-mailx mailx unzip rdoc irb libcurl4-openssl-dev apache2-prefork-dev libapr1-dev libaprutil1-dev libopenssl-ruby libmagickwand-dev imagemagick

Da das rubygems, dass mit den Distributionen mitgeliefert wird (hier Debian stable) meist oder fast immer nicht aktuell genug ist, installieren wir es manuell.

wget http://production.cf.rubygems.org/rubygems/rubygems-1.8.24.tgz
tar xzf rubygems-1.8.24.tgz
cd rubygems-1.8.24
ruby setup.rb
ln -s /usr/bin/gem1.8 /usr/bin/gem
gem update --system

Danach installiert man weitere Pakete über rubygems, die wir gleich für Redmine 2.0.3 benötigen.
Danach installiert man bundle um mit dessen Hilfe alle Redmine Abhängigkeiten aufzulösen und automatisch herunterzuladen.

gem install bundle

Daraufhin wechseln wir in das Verzeichnis, in das wir Redmine installieren wollen (sinnvollerweise ins Webverzeichnis, ggf. da wo auch unsere Webspace/Webhosting Ordner abgelegt werden) und laden Redmine runter.

cd /var/customers/webs/
wget http://rubyforge.org/frs/download.php/76259/redmine-2.0.3.tar.gz
tar xfz redmine-2.0.3.tar.gz
rm redmine-2.0.3.tar.gz
mv redmine-2.0.3 redmine

Nach dem Runterladen von Redmine, wollen wir das zuvor geladene bundle nutzen um die Abhängigkeiten von Redmine aufzulösen und automatisch herunterladen zu lassen. Hierfür führt man im selben Verzeichnis wie Redmine folgendes aus:

bundle install

Jetzt benötigen wir einen Datenbankuser und eine Datenbank für Redmine. Diese legt man entweder auf Shellebene, oder via Webinterface (Confixx, Froxlor etc.) an.

CREATE DATABASE redmine CHARACTER SET utf8;
CREATE USER 'redmineuser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON redmineuser.* TO 'redmine'@'localhost';

2. Redmine Konfiguration

Datenbankverbindung setzen (in der database.yml Datei, die wir zuvor aus dem Example kopiert haben):

cp config/database.yml.example config/database.yml
nano config/database.yml

WICHTIG! In der Datenbank-Konfiguration unter „adapter“ bei Verwendung von ruby 1.8 (wie wir es hier verwenden) unbedingt „mysql“ setzen und NICHT „mysql2“. Ab ruby 1.9 muss man mysql2 nutzen, welches u.a. aber zu Problemen führen kann, weil es Versionskonflikte mit den aktuellen Rails Versionen gibt (mysql-adapter… ist ausgelagert worden). Diese kann man fixen, indem man eine ältere mysql2 Version installiert, die noch den adapter enthält (Gemfile im Redmine Verzeichnis editieren).

Nachdem wir die Datenbankverbindung konfiguriert haben, generieren wir die Datenbankstruktur (im Redmine Verzeichnis ausführen):


RAILS_ENV=production rake config/initializers/session_store.rb
rake generate_session_store
RAILS_ENV=production rake db:migrate

3. Erster Test ohne Apache Webserver

Nun startet man zum testen den eingebauten Webserver, der auf Port 3000 lauscht und testet, ob unsere Redmine Installation funktioniert hat.

ruby script/rails server webrick -e production

Ein Aufruf im Browser unter http://domainOderIP.tld:3000 sollte nun zu Redmine führen und alles hat geklappt.
Die Zugangsdaten für die erste Redmine Installation lauten:

Name: Admin
Passwort: admin

4. Apache Konfiguration

Folgendes sollte im vhost zur entsprechenden Domain stehen. Wichtig ist, dass der DocumentRoot auf den „public“ Ordner im Redmine-Verzeichnis zeigt.


 ServerName domain.tld
 ServerAlias *.domain.tld
 ServerAdmin deine@mail.tld
 DocumentRoot "/var/customers/webs/redmine/public/"
RemoveHandler .php

      Options -MultiViews
        AllowOverride all

5. Apache Passenger installieren (mod_rails)

Phusion Passenger (informell auch als mod_rails und mod_rack bekannt) ist ein Modul für den Apache HTTP Server und für nginx zur Entwicklung und Deployment von Ruby Applikationen, insbesondere auch für Ruby on Rails-Applikationen.

gem install passenger
/usr/lib/ruby/gems/1.8/gems/passenger-3.0.14/bin/passenger-install-apache2-module # Apache2 Modul bauen / compilen

Danach ist das Apache2 Modul „passenger“ verfügbar und kann mit folgendem Befehl aktiviert werden.

a2enmod passenger

Ein Neustart des Apache2 Webservers reicht ( /etc/init.d/apache2 restart ) und unsere Redmine Installation ist zum Einsatz verfügbar.
Ich hoffe diese Anleitung kann es dem einen oder anderen etwas einfacher machen, Redmine zu installieren. Viel Spaß damit!

Share

Tags: ProjektmanagementRedmine

— Patrick Hütter

Patrick ist Gründer und Geschäftsführer der encircle360 GmbH. Er liebt Technologie und kennt sich sehr gut im Bereich Softwareentwicklung, u.a. auf JVM basierten Technologien wie Spring Boot, VertX, Akka, Groovy, Scala & Elasticsearch aus.

6 Comments

  1. Dice sagt:
    3. August 2012 um 10:36 Uhr

    … oder du holst dir den kostenlosen Account bei Plan.io ( http://bit.ly/NpZqSO ) – damit spart man sich den Wartungsaufwand (Update usw.). Das war bei mir letztendlich die Motivation.

    Antworten
    • Patrick sagt:
      3. August 2012 um 13:17 Uhr

      Hat aber monatliche Kosten und das Risiko, dass vielleicht jemand von extern in deine Projekte schaut. Repositories legt deren PaaS auch an? Oder hostet man die selbst? Ansonsten ist Redmine als PaaS sicher nicht schlecht 🙂

      Antworten
  2. Dice sagt:
    3. August 2012 um 10:43 Uhr

    (ist natürlich ein Redmine SaaS 🙂

    Antworten
  3. Noir sagt:
    6. August 2012 um 15:49 Uhr

    Hi, ich hab ein Problem mit der Anleitung. Ich habe jetzt alle Schritte abgearbeitet bis zu dem Befehl „RAILS_ENV=production rake config/initializers/session_store.rb“.
    Wenn ich diesen ausführe bekomme ich immer einen Fehler: rake aborted!
    Don’t know how to build task ‚config/initializers/session_store.rb‘

    Momentan bin ich ein wenig ratlos woran das liegt.

    Gruß Noir

    Antworten
  4. Blade sagt:
    13. Oktober 2012 um 1:25 Uhr

    @Noir: Ist ein Fehler in der Anleitung. Bin da auch drüber gestolpert. Bei der 2.0.3er Version gibt es die Datei session_store.rb nicht mehr. Stattdessen musst du die Datei config/initializers/secret_token.rb nehmen.
    Entsprechend dann in der nächsten Zeile „rake generate_secret_token“.

    Es gibt noch einen weiteren Fehler in der Anleitung: In dem letzten MySQL-Statement sind Username und Datenbank vertauscht. Es muss also heißen:
    GRANT ALL PRIVILEGES ON redmine.* TO ‚redmineuser’@’localhost‘;

    Viele Grüße
    Der Blade

    Antworten
  5. Ramazan sagt:
    10. Januar 2013 um 22:30 Uhr

    Thank you very very very much.

    Ich hatte viele Zeit verloren. Am Ende habe ich deine Anleitung gefunden.

    Die, die schon andere Wege schon versucht haben, alle die installierte Dinge zuerst löschen, danach diese Anleitung ausführen.

    Viel Spaß:-)

    Antworten

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

  • Previous story Java / JVM Bytecode und Programme dekompilieren und vor Codediebstahl schützen
  • Next story Grails: User Authentifizierung / Login via E-Mail und Username mit Spring Security Core
  • Du suchst richtig gute Beratung im Bereich Software & IT?

    encircle360
  • Neueste Beiträge

    • Running headscale with headscale-admin (UI), letsencrypt & docker-compose in dual stack with IPv4 and IPv6
    • Groovy & Grails suchen einen neuen Hauptsponsor
    • Unitymedia DNS Probleme und Lösungsmöglichkeiten für Mac OS X, Windows und den eigenen Router
    • Running Grails applications on the Raspberry Pi
    • [HowTo] Build groovy project and package as jar (with all dependencies) for easy distribution with gradle
  • Neueste Kommentare

    • nototok bei Running headscale with headscale-admin (UI), letsencrypt & docker-compose in dual stack with IPv4 and IPv6
    • Muiz bei Running headscale with headscale-admin (UI), letsencrypt & docker-compose in dual stack with IPv4 and IPv6
    • John Tucker bei Running headscale with headscale-admin (UI), letsencrypt & docker-compose in dual stack with IPv4 and IPv6
    • Bastlerwastl bei HowTo: Squid Proxy Server unter Debian schnell eingerichtet
    • PatrickHuetter bei So geht’s: Macbook mit zwei externen Monitoren verbinden
  • Kategorien

    • Allgemein
    • Android
    • Code-Snippets
    • Datenbanken
    • Elektrotechnik
    • Licht
    • Linux
    • Mac
    • Messe
    • Online-Marketing
    • Programmierung
    • Projektmanagement
    • SEM
    • SEO
    • Server
    • Shell
    • Social Media
    • Web
  • Weiterführende Links

    • Price API
    • encircle360
    • sellytics
  • Impressum
  • Datenschutz

© Patrick Hütter