JIRA auf einem MacMini als Ubuntu Server

Da JIRA auf produktiven Systemen nur unter Linux oder Windows von Atlassian unterstützt wird, habe ich eine repräsentative Umgebung auf einem MacMini aufgebaut. Der MacMini ist ein älteres Modell von 2011 mit 8GB RAM, zwei Festplatten mit je 500GB und einem Intel i7-Quad-Core-Prozessor.

Der Aufbau des Systems besteht aus vier Schritten, die wie folgt aussehen:

  • Installation von Ubuntu Linux
  • Installation und Konfiguration von JAVA
  • Installation und Konfiguration der PostgreSQL Datenbank
  • Installation von JIRA Core

Installation von Ubuntu Linux

Die Systemanforderung von Atlassian an ein Linux-System ließen meine Entscheidung auf die Server-Variante von Ubuntu Linux fallen. Zum aktuellen Zeitpunkt steht für den Long-Term-Support die Version 18.04 .3 (Codename bionic) auf der Homepage von Ubuntu zum Download bereit (https://ubuntu.com/download/server). Auf dem Server wird keine graphische Oberfläche benötigt und kann ohne Monitor und Tastatur remote administriert werden.

Nach dem Download muss das Iso-Image auf einen USB-Stick gebrannt werden. Hierzu verwende ich unter MacOS die Software Etcher, welche seit einiger Zeit balenaEtcher heißt. Die Software ist auch für Linux und Windows erhältlich (Download: https://www.balena.io/etcher/).

Nach der Installation von Etcher muss das Iso-Image auf den Usb-Stick gebrannt werden. Dies ist ziemlich selbsterklärend und muss nicht weiter beschrieben werden.

Um Linux auf dem MacMini zu installieren ist ein Monitor und eine Tastatur (noch) erforderlich, anschließend kann der Rechner ohne diese Komponenten seinen Dienst verrichten.

Sobald der Usb-Stick mit dem Linux Iso-Image an einem USB-Port angesteckt ist, kann der MacMini eingeschaltet werden. Unmittelbar nach Betätigung des Power-Knopfes muss die Alt-Taste gedrückt (und gehalten) werden, damit beim Bootvorgang auf den USB-Stick zugegriffen wird. Anschließend startet der Installationsvorgang. Ich habe bei meiner Hardwarekonfiguration vorerst nur eine der beiden 500GB-Festplatten für die Linux-Installation ausgewählt, die zweite Festplatte binde ich bei Bedarf später ein. Der Installationsvorgang ist ziemlich straight-forward und sollte keine großen Fragen aufwerfen.

Nach vollständiger Installation des Linux-Systems habe ich zusätzlich noch PowerManagement Pakete speziell für den MacMini installiert.

$ sudo apt-get install -y macfanctld applesmc-dkms
$ sudo add-apt-repository ppa:mactel-support
$ sudo apt-get update

Nach dieser kleinen Ergänzung ist die Linux-Installation abgeschlossen und der Server läuft.

$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 18.04.3 LTS
Release:	18.04
Codename:	bionic

Java Installation und Konfiguration

Für JIRA ist die Installation einer Java-Laufzeitumgebung (JRE) erforderlich. Diese kann mit folgendem Kommando durchgeführt werden:

$ sudo apt install default-jre

Nach der Installation der JRE muss noch die Laufzeitvariable JAVA_HOME gesetzt werden. Hierzu gibt es mehrere Möglichkeiten, ich wähle dazu die für Ubuntu Server empfohlene Variante und trage in die Datei /etc/environment hinter der PATH-Variable als neue Zeile Folgendes ein:

JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"

Damit die Änderung sofort wirksam wird, muss die Datei noch ge-sourced werden. Über echo kann überprüft werden, ob die Umgebungsvariable JAVA_HOME korrekt gesetzt wurde.

$ more /etc/environment 
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
$ source /etc/environment 
$ echo $JAVA_HOME
/usr/lib/jvm/java-11-openjdk-amd64

PostgreSQL installieren und konfigurieren

JIRA benötigt für einen produktiven Einsatz eine Datenbank. Hier fiel meine Entscheidung auf die sehr gut dokumentierte und frei verfügbare PostgreSQL Datenbank in der Version 10. Unter Ubuntu erfolgt die Installation mit folgendem Kommando:

$ sudo apt install postgresql

Nach erfolgter Installation geht es an die Konfiguration von PostgreSQL. Sofern der Zugriff auf die Datenbank nicht nur vom lokalen Server erfolgen soll, muss in der Datei /etc/postgresql/10/main/postgresql.conf folgende Zeile ergänzt werden:

listen_addresses = '*'

Durch diesen Eintrag kann man sich prinzipiell von jedem Rechner mit der Postgres-Instanz verbinden. Es macht Sinn, die postgreSQL-Prozesse mit einem eigenen User laufen zu lassen. Ich habe hier den User-Namen postgres gewählt. In meinem Netzwerk möchte ich von jedem Client auf postgreSQL zugreifen können. Deswegen muss in der Datei /etc/postgresql/10/main/pg_hba.conf folgende Zeile ergänzt werden:

host all postgres 192.168.178.0/24 md5

Nachdem diese Änderungen an den Konfigurationsdateien vorgenommen wurden, sollte der postgres-Service mit der neuen Konfiguration ge-restartet werden. Dies erfolgt mit folgendem Kommando:

$ sudo systemctl restart postgresql.service

Der Zugriff auf postgreSQL soll mit dem neu anzulegenden User jira erfolgen. Diesen User lege ich mit dem Home-Verzeichnis wie folgt an:

$ sudo /usr/sbin/useradd --create-home --comment "Account for running Jira Software" --shell /bin/bash jira

Vorbereitend für den JIRA-Zugriff auf postgres macht es Sinn, eine separate Datenbank für JIRA anzulegen. Ich nenne diese DB einfach jiradb und lege diese als User postgres an:

$ sudo su postgres
$ createdb jiradb

Nachdem die Datenbank angelegt wurde, sind dem User jira noch die erforderlichen Rechte einzuräumen. Hierzu bemüht man das command-line-interface (cli) von postgreSQL, welches bei der Installation auf dem Server mit installiert wird. Der Aufruf des cli erfolgt als User postgres mit dem Kommando psql. Es erscheint das Prompt des postgres-cli. Durch die Eingabe des help-Kommandos erhält man eine kurze Hilfestellung. Das postgres-cli verlässt man mit mit \q:

$ sudo su postgres
[sudo] password for woiferl: 
$ psql
psql (10.10 (Ubuntu 10.10-0ubuntu0.18.04.1))
Type "help" for help.

postgres=#

Wie zuvor erwähnt, gibt man dem User jira dann über das cli die erforderlichen Rechte und vergibt ein Passwort.

postgres=# alter user jira with encrypted password 'geheimes_passwort'
postgres=# grant all privileges on database jiradb to jira

Nun sind alle erforderlichen Vorarbeiten zur Installation von JIRA-Core durchgeführt. Über einen SQL-Client (z.B. DBeaver oder das Eclipse-DBeaver-Plugin) kann ein Verbindungstest von einem Client-Rechner erfolgen, um sicherzustellen dass auch ein Zugriff von einem Client funktioniert. Meine Verbindungseinstellungen sehen dabei so aus:

JIRA-Core installieren

JIRA-Core kann von der Atlassian-Homepage heruntergeladen werden. Da ich die Software nicht nur testen, sondern auch produktiv verwenden möchte, habe ich mich zu entschieden die 10 User-Lizenz der Version 8.6 zu erwerben. Diese kostet lediglich 10 australische Dollar (ca. 7,5 €) – der Erlös wird von Atlassian an wohltätige Zwecke gespendet. Da ich gerne die Kontrolle über die Installation habe, wähle ich für Linux das tar-Archive für die Installationsmethode und lege es auf dem Linux-Server ab.

Anschließend muss ein Installationsverzeichnis angelegt werden – ich wähle /opt/jirasoftware. Zusätzlich benötigt JIRA ein Home-Verzeichnis in dem die JIRA-internen Daten (beispielsweise Konfigurationsdatei für den DB-Zugriff) abgelegt werden. Ich verwende dazu /opt/jira_home. Beide Verzeichnissen müssen dem jira-User gehören und alle Rechte eingeräumt werden. Gruppen und anderen sind alle Rechte zu nehmen:

$ sudo mkdir /opt/jirasoftware
$ cd /download/atlassian
$ tar -xzf atlassian-jira-software-8.6.0.tar.gz -C /opt/jirasoftware
$ chown -R jira /opt/jirasoftware
$ chmod -R u=rwx,go-rwx /opt/jirasoftware
$ sudo mkdir /opt/jira_home
$ chown -R jira /opt/jira_home
$ chmod -R u=rwx,go-rwx /opt/jira_home

Anschließend muss JIRA noch mitgeteilt werden, wo sich sein Home-Verzeichnis befindet. Hier gibt es mehrere Möglichkeiten dies zu tun, ich ergänze die erforderliche Zeile im Jira-Start shell-Skript (start-jira.sh) welches im Installationsverzeichnis im Ordner ../bin liegt.

#!/bin/bash
export JIRA_HOME="/opt/jira_home"

Sofern die Standardports verwendet werden hört JIRA auf den Port 8080 und keine weiteren Anpassungen sind erforderlich.

Es wird Zeit JIRA zu starten – dies macht man als User jira und durch anschließender Ausführung des Start-Skriptes:

$ sudo su jira
$ cd /opt/jirasoftware/atlassian-jira-software-8.6.0-standalone/bin
$ ./start-jira.sh

Das war’s (vorerst)! JIRA startet und ein Zugriff von einem Client-Browser kann über den Aufruf der URL des Linux-Servers mit Angabe des Ports 8080 erfolgen.

Sofern dies klappt, kann man sich dann an das Setup der JIRA-Applikation machen. Hierbei führt einen der Setup-Wizzard durch die einzelnen Schritte. Nicht jeder muss sofort ausgeführt werden, eine Änderung kann zu einem späteren Zeitpunkt über die Administrationsoberfläche von JIRA durchgeführt werden.