Kategorien
Tutorials

Redmine unter Ubuntu 20.04 installieren

Wer ein leistungsstarkes Ticket- oder Projektmanagementsystem sucht, findet mit Redmine eventuell die perfekte Lösung. Auch ich verwende Redmine für Nocksoft. Da sich die manuelle Installation als nicht ganz einfach erweist, soll diese Anleitung es auch Einsteigern ermöglichen Redmine unter Ubuntu zu installieren. Die offizielle Anleitung ist hier zu finden und ebenfalls lesenswert.

Bereits mein alter Artikel Redmine unter Ubuntu 16.04 installieren ist auf großen Zuspruch gestoßen. Von daher ist es mit der neuen Ubuntu LTS-Version eine gute Gelegenheit diese Anleitung einmal zu aktualisieren.

Getestet wurde dieser Artikel unter Ubuntu Server 20.04, RVM 1.29.11, Ruby 2.6.6 und Redmine 4.1.1.

Installation des Betriebssystems

Bei der Installation des Betriebssystems ist auf nicht viel zu achten. Ich verwende für diese Anleitung einen frisch installierten Ubuntu Server. Lediglich den SSH-Server habe ich bei der Installation mitinstalliert, um den Server später per PuTTY o.ä. administrieren zu können.

Nach der Grundinstallation nehme ich noch einige Einstellungen vor. In meiner Installation ist die Zeitzone nicht korrekt gesetzt. Das hole ich nach:

sudo unlink /etc/localtime
sudo ln -s /usr/share/zoneinfo/Europe/Berlin /etc/localtime
Ubuntu Zeitzone ändern
Die Zeitzone lässt sich mit zwei Befehlen einfach ändern.

Anschließend installiere ich noch sämtliche zur Verfügung stehenden Updates:

sudo apt update && sudo apt upgrade -y

Apache und MySQL installieren

Redmine benötigt einen Webserver und eine Datenbank. Ich verwende standardmäßig Apache und MySQL. Für die Installation verwende ich folgenden Befehl:

sudo apt install apache2 mysql-server
Ubuntu 20.04 bringt standardmäßig MySQL 8 mit. Offiziell ist Redmine (Stand Januar 2021) noch nicht mit MySQL 8 kompatibel, ich konnte aber keine Komplikationen im Betrieb feststellen.

Datenbank anlegen

Um eine neue Datenbank für Redmine anzulegen, muss sich zunächst an der MySQL-Shell angemeldet werden:

sudo mysql

Mit den folgenden Befehlen erstelle ich die Datenbank redmine und einen Benutzer redmine, der Berechtigungen hat, um sich an der neuen Datenbank anzumelden (password ist natürlich mit dem gewünschten Passwort für den neuen MySQL-Benutzer redmine zu ersetzen):

CREATE DATABASE redmine CHARACTER SET utf8mb4;
CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';
MySQL Redmine Datenbank anlegen
Datenbank und Benutzer werden über die MySQL-Shell erstellt.

Redmine herunterladen und entpacken

Im nächsten Schritt kann Redmine heruntergeladen und installiert werden. Ich werde Redmine unter /var/www/redmine/ installieren. Natürlich kann hier auch ein anderer Pfad verwendet werden.

Mit den folgenden Befehlen wird Redmine heruntergeladen und anschließend entpackt:

cd /var/www/
sudo wget https://www.redmine.org/releases/redmine-4.1.1.zip
sudo apt install unzip
sudo unzip redmine-4.1.1.zip
sudo mv redmine-4.1.1 redmine
Die URL zur aktuellsten Redmineversion kann herausgefunden werden, wenn die Downloadseite von Redmine aufgerufen wird und die Link-Adresse des entsprechenden ZIP-Paketes kopiert wird.

Berechtigungen für /var/www/redmine/ ändern

Damit auf das Verzeichnis /var/www/redmine/ zugegriffen werden kann, übernehme ich den Besitz mit folgendem Befehl (UBUNTUBENUTZER ist mit dem Ubuntu-Benutzer zu ersetzen. In meinem Beispiel heißt der Ubuntu-Benutzer administrator):

sudo chown -R UBUNTUBENUTZER /var/www/redmine/

Datenbankverbindung konfigurieren

Die Datenbankverbindung wird in der Datei /redmine/config/database.yml konfiguriert. Dafür muss die Datei database.yml.example zuvor entsprechend umbenannt werden.

cd /var/www/redmine/config/
cp database.yml.example database.yml
nano database.yml

Dort sind schließlich die Verbindungsparameter anzugeben. Es ist entsprechend der Benutzer zu verwenden, der vorhin bei der Datenbankerstellung angelegt wurde. In der Regel ist nur der Bereich production anzupassen:

Redmine unter Ubuntu installieren und Datenbankparameter anpassen
Die Datenbankparameter werden in der Datei "database.yml" eingetragen.

Mit den Tasten Strg + O, ENTER und Strg + X lässt sich die Datei speichern und schließen.

Ruby installieren

Redmine ist in Ruby geschrieben und braucht daher auch Ruby, damit es funktioniert. Ruby lässt sich auf verschiedenen Wegen installieren. In dieser Anleitung habe ich bereits verschiedene Installationsmöglichkeiten für Ruby vorgestellt. Ich installiere hier Ruby 2.6 über RVM (BENUTZERNAME ist natürlich entsprechend zu ersetzen):

sudo apt-add-repository -y ppa:rael-gc/rvm
sudo apt update
sudo apt install rvm
sudo usermod -a -G rvm BENUTZERNAME
sudo reboot
rvm install 2.6
rvm list rubies

Der letzte Befehl gibt schließlich die aktivierte Ruby-Version aus. Sie sollte als "current && default" gesetzt sein:

rvm list rubies
"rvm lis rubies" zeigt an, welche Ruby-Version aktiviert ist.

Der Befehl ruby --version sollte dann auch die installierte Ruby-Version anzeigen.

Mehr Infos zu RVM und den oben genannten Befehlen sind in meiner Anleitung zur Installation von Ruby mit RVM zu finden.
Welche Ruby-Versionen von Redmine offiziell unterstützt werden, kann auf der offiziellen Seite nachgelesen werden. Meiner Erfahrung nach sollte man hier auch explizit auf eine unterstützte Ruby-Version achten.
Ich habe mich hier für eine Installation über RVM entschieden, weil derzeit über die Paketquellen von Ubuntu Ruby 2.7.0 installiert wird. Redmine ist derzeit nicht mit Ruby 2.7.0 kompatibel. Auch habe ich mich gegen eine Installation als snap entschieden, weil ich dort ab Ruby 2.6 auf ein Problem bei der Installation von mysql2 gestoßen bin, für welches ich noch keine Lösung finden konnte. Mehr Details zu dem Fehler sind in diesem Thread zu finden.

Abhängigkeiten für Redmine installieren

Es sind noch weitere Abhängigkeiten zu installieren. Dies geschieht mit folgenden Befehlen:

sudo apt install build-essential libmysqlclient-dev
cd /var/www/redmine/
bundle install --without development test

Das optionale Paket ImageMagick lässt sich ebenfalls einfach installieren:

sudo apt install imagemagick
Mehr Informationen zu den Abhängigkeiten sind hier zu finden: https://www.redmine.org/projects/redmine/wiki/redmineinstall#Step-4-Dependencies-installation

Verschlüsselte Cookies

Damit Sessioninformationen in verschlüsselten Cookies gespeichert werden können, muss ein zufälliger Schlüssel erzeugt werden, den Rails später verwenden kann:

bundle exec rake generate_secret_token

Datenbankstruktur erstellen

Um die Redminedatenbank initial befüllen zu lassen, sind folgende Befehle zu verwenden:

RAILS_ENV=production bundle exec rake db:migrate
RAILS_ENV=production bundle exec rake redmine:load_default_data

Beim zweiten Befehl ist das entsprechende Länderkürzel anzugeben, etwa de.

Passenger installieren

Um Redmine korrekt ausführen zu können, muss das Passenger-Modul installiert werden:

sudo apt install libcurl4-openssl-dev apache2-dev libapr1-dev libaprutil1-dev
gem install passenger --no-document
passenger-install-apache2-module
Der Parameter --no-ducument überspringt das Erstellen einer Dokumentation und macht die Installation ein bisschen schneller.
Die offizielle Dokumentation zu Passenger ist hier zu finden.

Während des letzten Befehls erscheint eine Konfiguration, die wir später noch für die Apache-Konfiguration brauchen. Diese sollte daher einmal gesichert werden. In meinem Beispiel etwa:

Ubuntu passenger-install-apache2-module
Das Passenger-Modul für Apache benötigt eine kleine Anpassung an der Apache-Konfiguration.
LoadModule passenger_module /usr/share/rvm/gems/ruby-2.6.6/gems/passenger-6.0.7/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
  PassengerRoot /usr/share/rvm/gems/ruby-2.6.6/gems/passenger-6.0.7
  PassengerDefaultRuby /usr/share/rvm/gems/ruby-2.6.6/wrappers/ruby
</IfModule>

Als nächstes erstelle ich zwei neue Konfigurationsdateien:

cd /etc/apache2/mods-available/
sudo touch passenger.load passenger.conf

Von der vorher gesicherten Konfiguration wird jetzt die erste Zeile LoadModule… in der neu angelegten Datei passenger.load eingetragen:

sudo nano passenger.load
passenger.load
Die neue Konfigurationsdatei passenger.load...

Anschließend wird der komplette Block IfModule… in der Datei passenger.conf eingetragen:

sudo nano passenger.conf
passenger.conf
Die neue Konfigurationsdatei passenger.conf...

Das Passenger-Modul ist jetzt noch zu aktivieren:

sudo a2enmod passenger
Wenn das Passenger-Modul nicht korrekt installiert ist, erscheint beim Aufruf von Redmine im Browser nicht Redmine, sondern die Ordnerstruktur von Redmine. Der Apache erkennt Redmine dann nicht als Ruby-Applikation.

Apache konfigurieren

Der Apache erfordert noch einige weitere Konfigurationen, damit später alles reibungslos läuft. Ich erstelle einen VirtualHost für Redmine, wo ich alle relevanten Konfigurationen vornehme:

cd /etc/apache2/sites-available/
sudo nano redmine.conf

Dort nehme ich folgende Konfiguration vor:

<VirtualHost *:80>
  ServerName 192.168.0.67
  ServerAlias redmine
  DocumentRoot /var/www/redmine/public

  <Directory /var/www/redmine/public>
    AllowOverride all
    Options -MultiViews 
    Require all granted
  </Directory>
</VirtualHost>
Redmine unter Ubuntu installieren und Apache VirtualHost (redmine.conf) einrichten
Der VirtualHost für Redmine ermöglicht, dass der Apache weiß, wie auf Redmine zugegriffen werden soll.
ServerName legt fest, unter welchem DNS-Namen / IP-Adresse Redmine erreichbar sein soll. Mit ServerAlias können optional weitere DNS-Namen und IP-Adressen angegeben werden, unter denen Redmine erreichbar sein soll.
In meinem Beispiel ist Redmine unter /var/www/redmine/ installiert. Der Pfad in der Konfiguration oben ist entsprechend anzupassen, wenn Redmine an einem anderen Ort installiert ist.

Die neue Konfiguration muss jetzt noch eingebunden werden:

sudo a2ensite redmine.conf
Wenn der VirtualHost nicht korrekt konfiguriert ist, erscheint beim Aufruf von Redmine im Browser nicht Redmine, sondern die Standardseite vom Apache Webserver.

Damit alle neuen Konfigurationen (Passenger und VirtualHost) auch geladen werden, muss der Apache Webserver noch neu gestartet werden:

sudo service apache2 restart

Installation testen

Die Installation von Redmine ist jetzt komplett. Wenn alles richtig gemacht wurde, lässt sich Redmine jetzt im Browser aufrufen:

Ubuntu Redmine installieren
Damit ist Redmine unter Ubuntu erfolgreich installiert.

Redmine unter Ubuntu zu installieren wäre also erledigt. Künftige Updates von Redmine fallen unkomplizierter aus. Hier ist die offizielle Updateanleitung von Redmine ein guter Ratgeber.

HTTPS aktivieren

In einer produktiven Umgebung sollte auf jeden Fall noch HTTPS aktiviert werde. Wie das geht habe ich bereits in HTTPS mit SAN-Zertifikat für Apache unter Ubuntu konfigurieren ausführlich erklärt. Der VirtualHost für Redmine sähe in diesem Beispiel wie folgt aus:

<VirtualHost *:80>
  ServerName 192.168.0.67
  ServerAlias redmine

  RewriteEngine On
  RewriteCond %{HTTPS} off
  RewriteRule (.*) https://%{SERVER_NAME}$1 [R,L]
</VirtualHost>


<VirtualHost *:443>
  SSLEngine on
  SSLCertificateFile /etc/apache2/ssl/redmine.cer
  SSLCertificateKeyFile /etc/apache2/ssl/redmine.key
  SSLProtocol -ALL +TLSv1.2 +TLSv1.3
  Header always set Strict-Transport-Security "max-age=4838400; includeSubdomains;"

  ServerName 192.168.0.67
  ServerAlias redmine
  DocumentRoot /var/www/redmine/public

  <Directory /var/www/redmine/public>
    AllowOverride all
    Options -MultiViews
    Require all granted
  </Directory>
</VirtualHost>

Weiterführende Links
https://nocksoft.de/tutorials/ruby-unter-ubuntu-installieren/
https://rvm.io/deployment/cron

Quellen
https://linuxhint.com/change_timezone_ubuntu_2004/
https://github.com/rvm/ubuntu_rvm
https://www.phusionpassenger.com/docs/advanced_guides/install_and_upgrade/apache/install/oss/rubygems_rvm.html
https://github.com/rubygems/heroku-buildpack-bundler2/pull/1

Seit mehreren Jahren begeistere ich mich privat und beruflich für die IT. Das habe ich dann auch zum Anlass genommen, diesen Blog ins Leben zu rufen, um dort praxisnahe Tutorials über verschiedene IT-Themen zu schreiben und meine selbst geschriebene Software zu veröffentlichen.

3 Antworten auf „Redmine unter Ubuntu 20.04 installieren“

hoi, leider bekomme ich massive Probleme bei der rvm installation.
Ich musste den path setzten
export PATH="/usr/share/rvm/rubies/ruby-2.6.6/bin:$PATH"
sonnst findet er die ganzen bins nicht, da hilft auch kein reboot.
Des weiteren, sollte erwähnt werden dass
"bundle install --without development test" NICHT als ROOT ausgeführt werden sollte ..
und an dem Punkt passenger-install-apache2-module wähle ich Ruby aus ,und bekomme ich Fehler " * Checking for Apache 2...
Found: yes
Location of httpd: /usr/sbin/apache2
Apache version: 2.4.41
Unable to autodetect the currently active RVM gem set name. This could happen if you ran this program using 'sudo' instead of 'rvmsudo'. When using RVM, you're always supposed to use 'rvmsudo' instead of 'sudo!'.

Please try rerunning this program using 'rvmsudo'. If that doesn't help, please contact this program's author for support."

Und da komme ich ned weiter rvmsudo will er auch ned fressen.
habe alles auf frischer Ubuntu 20.04.2 LTS probiert. Hast nee idee ?

Schreibe einen Kommentar

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