Linux: Redmine Chroot / warum? wofür?

Da ich in der letzten Zeit doch ein paar anfragen bekommen habe, warum ich die Redmine-Chroot gebaut habe und was man damit machen kann, schreibe ich es hier für alle nieder.

Fangen wir am Anfang an: Redmine ist eine Software für die Projektverwaltung – man kann damit Projekte verwalten – online.

Frage: Warum hast du die Redmine Chroot gebaut?
Antwort: Weil man für die Installation und Einrichtung von Redmine von Grund auf schon tieferes Wissen benötigt (Linux, Ruby, SQL) und eine manuelle Installation sowohl sehr Zeitaufwändig ist.

Frage: Und das ist mit deiner Redmine Chroot anders?
Antwort: Ja, in der tat. Der Benutzer muss hier eigentlich nur wissen was eine Chroot ist und ob der Port 3000 auf dem Host noch frei ist 🙂

Frage: Aber du weißt schon, dass es auch z.b. Den Bitnami Installer mit Redmine Stack gibt (auch für Linux) ?
Antwort: Jap, diesen benutze ich sogar selbst unter Windows (vielleicht komme ich ja noch irgendwann dazu einen Artikel über meinen .NET Buildserver mit cc.net / nant / svn und Redmine zu schreiben)

Frage: Und wo genau ist jetzt der unterschied zwischen dem Bitnami Redmine Stack und deiner Redmine Chroot?
Antwort: Nun ja. Der Installer von Bitnami Installiert ein funktionierendes Redmine mitsamt Apache, Mongrel, MySQL, Ruby, Rails, jedemenge Dokumentation und viel Zeug, welches mal zum reinen Betrieb von Redmine eigentlich gar nicht braucht.
Vor der Installation hat man einen 140 MB großen Installer heruntergeladen – und am Ende hat man nach der Installation ein GB Großes Daten-Verzeichnis und ein paar Prozesse mehr, welche den Server „belasten“.

Hinter meiner Redmine Chroot steckt ein anderes Konzept. Ich wollte hier eine minimalistische Redmine Version bauen, welche aber durchaus auch produktiv benutzt werden kann. Dabei war das Hauptziel eine möglichst geringe Größe und weniger Prozesse – Die Chroot sollte noch auf einem minimalen vserver mit 128 MB RAM laufen – und das tut sie jetzt auch 🙂
Der Download der eingepackten Chroot beträgt gerade mal etwas mehr als 16 MB (dies ist grob 10 mal kleiner als der Bitnami Installer).
Nach dem auspacken des Downloads beträgt die Größe der Chroot 78 MB. Noch mal: Alles was zum Ausführen des Redmine benötigt wird ist in einer 78 MB kleinen Datenwurst enthalten 🙂

Frage: Wie kommt es zu diesem Größenunterschied wenn beide „Produkte“ doch eigentlich am Ende das selbe machen?
Antwort: Zum einen habe ich Ruby und Rails selbst kompiliert und viele Module und Sprachdateien bzw. Dokumentationen gelöscht.
Zum anderen Benutze ich Zum anzeigen der Webseiten einen Lighttpd statt eines Apache mit Mongrel.
Statt MySQL benutze ich SQLite als Datenbank – und Außerdem existiert als Quellcode-Verwaltung nur ein Subversion.
Als einziger Prozess auf dem Server für das Redmine läuft somit nur der Lighttpd (trägt den Namen „redmine“), welcher das eigentliche Redmine via FastCGI läd.

Frage: Das Klingt interessant! Du hast eben geschrieben das dies auf einem Minimalen vserver mit 128 MB RAM läuft? Hast du dafür beweise?

Antwort: Klaro 😀
Ich habe eine Installation auf solch einem Besagten vserver mit 5GB HDD und 128 MB RAM laufen (kostet 1,49€ / Monat).
Anschauen könnt ihr euch die Redmine-Installaion unter diesem Link: http://quelltexttiger.de:3000 – nach dem Registrieren könnt ihr euch anmelden und euer eigenes Projekt erstellen.
Die Munin Grafiken zur Server-Auslastung gibt es dort zu sehen: http://quelltexttiger.de:3000/munin.
Vielleicht findet sich ja hier ein Sponsor für einen dickeren Server, dann kann ich damit auch einen richtigen Redmine Hosting Service auf machen 🙂

Frage: OK, das klingt überzeugend – Wie kann ich die Chroot selbst auf meinem Server benutzen?
Antwort: Das ist ziemlich einfach – Herunterladen, Auspacken, evtl. verschieben, in die Chroot wechseln und starten.
Hier ein kleines Howto zum nachmachen:

# cd /tmp
# wget http://downloads.sourceforge.net/project/linuxchroots/RedmineChroot/redmine_2.2.3_svn_lighttpd.tar.bz2?use_mirror=mesh
# tar -xvjf redmine_2.2.3_svn_lighttpd.tar.bz2
# mv ./redmine /redmine
# chroot /redmine /login

Nun wird man mit der Login motd begrüßt:

===============================================================
RedmineChroot 2.2.3 - http://linuxchroots.sourceforge.net

Redmine Version 2.2.3 / SQLite Datenbank
lighttpd 1.4.32 / Port 3000
Subversion 1.7.8 / Neon 0.29.6 / APR 1.4.6 / APR-utils 1.5.1
Subversion Support sheme for HTTP / HTTPS / SVN / FILE

Starten des Redmine mit /start
===============================================================


BusyBox v1.1.3 (2006.06.01-20:13+0000) Built-in shell (ash)
Enter 'help' for a list of built-in commands.

/ $

Und dann nur noch:

# /start

Wenn man dann ein pstree außerhalb der Chroot aufruft, sollte ein „redmine“ prozess sichtbar sein:

├─redmine───dispatch.fcgi

Das war es auch schon – nun läuft das Redmine und man kann es über http://hostname:3000 aufrufen.
Der Admin Benutzer ist „admin“ und das Passwort für diesen Benutzer ist ebenfalls „admin“.

Frage: Wow! Das war ja mal einfach! Super! *freufreufreu* 🙂
Antwort: Ja – gern geschehen 🙂

Alle Fragen die ihr habt könnt ihr wie immer in den Kommentaren hinterlassen 🙂

leave your comment


*

Unterstütze den Frickelblog!