Redmine auf CentOS installieren und konfigurieren

Redmine ist ein kostenloses, quelloffenes, beliebtes Projektmanagement- und Problemverfolgungssystem. Es unterstützt PostgreSQL- und MariaDB-Datenbanken und basiert auf dem Ruby on Rails Framework. Es unterstützt Plugins von Drittanbietern, mit denen du mehrere Projekte, Wikis und Foren einrichten kannst. Es bietet eine Vielzahl von Funktionen, darunter E-Mail- und Feed-Benachrichtigungen, Unterstützung mehrerer Sprachen, rollenbasierte Zugriffskontrolle, Dateiverwaltung und vieles mehr.

In diesem Lernprogramm wird erklärt, wie du das Redmine-Projektmanagementsystem auf CentOS installierst.

Voraussetzungen

  • Ein Server, auf dem CentOS 8 läuft.
  • Ein Root-Passwort ist auf dem Server konfiguriert.

Erforderliche Abhängigkeiten installieren

Bevor du beginnst, musst du einige Abhängigkeiten auf deinem Server installieren. Du kannst sie alle mit dem folgenden Befehl installieren:

dnf group install "Development Tools"
dnf install zlib-devel curl-devel openssl-devel -y

Sobald alle Pakete installiert sind, kannst du mit dem nächsten Schritt fortfahren.

MariaDB Datenbank installieren und konfigurieren

Redmine verwendet MariaDB als Datenbank-Backend. Deshalb musst du den MariaDB-Datenbankserver auf deinem Server installieren. Du kannst ihn mit dem folgenden Befehl installieren:

dnf install mariadb-server mariadb-devel -y

Sobald der MariaDB-Server installiert ist, starte den MariaDB-Dienst und aktiviere ihn so, dass er beim Neustart des Systems gestartet wird:

systemctl start mariadb
systemctl enable mariadb

Melde dich dann mit folgendem Befehl in der MariaDB-Shell an:

mysql

Sobald du eingeloggt bist, erstelle eine Datenbank und einen Benutzer für Redmine mit dem folgenden Befehl:

MariaDB [(none)]> CREATE DATABASE redmine CHARACTER SET utf8mb4;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost' IDENTIFIED BY 'password';

Als Nächstes löschst du die Berechtigungen und verlässt MariaDB mit dem folgenden Befehl:

MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;

Sobald du damit fertig bist, kannst du mit dem nächsten Schritt fortfahren.

Ruby und Passenger installieren

Als Nächstes musst du Ruby und Passenger auf deinem System installieren.

Installiere und aktiviere zunächst das EPEL-Repositorium mit dem folgenden Befehl:

dnf install epel-release -y
dnf config-manager --enable epel -y

Als Nächstes installierst du Ruby und Passenger mit dem folgenden Befehl:

dnf install mod_passenger passenger passenger-devel ruby ruby-devel -y

Sobald alle Pakete installiert sind, kannst du mit dem nächsten Schritt fortfahren.

Redmine installieren

Zuerst musst du einen eigenen Benutzer für Redmine anlegen. Du kannst ihn mit dem folgenden Befehl erstellen:

useradd -m -U -r -d /opt/redmine redmine

Als Nächstes loggst du dich als Redmine-Benutzer ein und lädst die neueste Version von Redmine mit dem folgenden Befehl herunter:

su - redmine
wget --no-check-certificate https://www.redmine.org/releases/redmine-4.2.1.zip

Sobald der Download abgeschlossen ist, entpackst du die heruntergeladene Datei mit dem folgenden Befehl:

unzip redmine-4.2.1.zip

Benenne dann das entpackte Verzeichnis mit folgendem Befehl um:

mv redmine-4.2.1 redmine

Wechsle dann in das Verzeichnis Redmine und kopiere die Konfigurationsdatei der Beispieldatenbank:

cd redmine
cp config/database.yml.example config/database.yml

Als Nächstes bearbeitest du die Datenbankkonfigurationsdatei und legst deine Datenbankeinstellungen fest:

nano config/database.yml

Ändere die folgenden Zeilen, die zu deiner Datenbank passen:

production:
  adapter: mysql2
  database: redmine
  host: localhost
  username: redmine
  password: "password"
  encoding: utf8mb4

Speichere und schließe die Datei und installiere den Bundler mit dem folgenden Befehl:

gem install bundler --no-rdoc --no-ri

Als Nächstes installierst du andere Abhängigkeiten mit dem folgenden Befehl:

bundle install --without development test postgresql sqlite --path vendor/bundle

Als Nächstes generierst du ein geheimes Token mit dem folgenden Befehl:

bundle exec rake generate_secret_token

Als Nächstes generierst du die von der Anwendung benötigten Datenbankobjekte mit folgendem Befehl:

RAILS_ENV=production bundle exec rake db:migrate

Starte schließlich die Anwendung mit dem folgenden Befehl:

bundle exec rails server webrick -e production

Du solltest die folgende Ausgabe sehen:

/usr/bin/ruby: warning: shebang line ending with \r may cause problems
=> Booting WEBrick
=> Rails 5.2.5 application starting in production on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
[2021-06-24 00:40:15] INFO  WEBrick 1.4.2
[2021-06-24 00:40:15] INFO  ruby 2.5.5 (2019-03-15) [x86_64-linux]
[2021-06-24 00:40:15] INFO  WEBrick::HTTPServer#start: pid=43076 port=3000

Drücke STRG + C, um die Anwendung zu beenden.

Beende den Redmine-Benutzer mit dem folgenden Befehl:

exit

Erstelle eine Systemd-Dienstdatei für Redmine

Als Nächstes musst du eine Systemd-Dienstdatei erstellen, um die Redmine-Anwendung zu verwalten. Du kannst sie mit dem folgenden Befehl erstellen:

nano /usr/lib/systemd/system/redmine.service

Füge die folgenden Zeilen hinzu:

[Unit]
Description=Redmine server
After=syslog.target
After=network.target

[Service]
Type=simple
User=redmine
Group=redmine
ExecStart=/bin/ruby /opt/redmine/redmine/bin/rails server webrick -e production

# Give a reasonable amount of time for the server to start up/shut down
TimeoutSec=300

[Install]
WantedBy=multi-user.target

Speichere und schließe die Datei und lade den systemd-Daemon mit dem folgenden Befehl neu:

systemctl daemon-reload

Starte als Nächstes den Redmine-Dienst und aktiviere ihn so, dass er beim Neustart des Systems gestartet wird:

systemctl start redmine
systemctl enable redmine

Überprüfe nun den Status von Redmine mit folgendem Befehl:

systemctl status redmine

Du solltest die folgende Ausgabe sehen:

? redmine.service - Redmine server
   Loaded: loaded (/usr/lib/systemd/system/redmine.service; disabled; vendor preset: disabled)
   Active: active (running) since Thu 2021-06-24 04:26:51 EDT; 1min 37s ago
 Main PID: 44044 (ruby)
    Tasks: 3 (limit: 25014)
   Memory: 121.6M
   CGroup: /system.slice/redmine.service
           ??44044 /bin/ruby /opt/redmine/redmine/bin/rails server webrick -e production

Jun 24 04:26:51 centos8 systemd[1]: Started Redmine server.
Jun 24 04:26:52 centos8 ruby[44044]: /bin/ruby: warning: shebang line ending with \r may cause problems
Jun 24 04:26:56 centos8 ruby[44044]: [2021-06-24 04:26:56] INFO  WEBrick 1.4.2
Jun 24 04:26:56 centos8 ruby[44044]: [2021-06-24 04:26:56] INFO  ruby 2.5.5 (2019-03-15) [x86_64-linux]
Jun 24 04:26:56 centos8 ruby[44044]: [2021-06-24 04:26:56] INFO  WEBrick::HTTPServer#start: pid=44044 port=3000

Zu diesem Zeitpunkt ist Redmine gestartet und lauscht auf Port 3000. Du kannst das mit dem folgenden Befehl überprüfen:

ss -antpl | grep 3000

Du solltest die folgende Ausgabe erhalten:

LISTEN    0         128                0.0.0.0:3000             0.0.0.0:*        users:(("ruby",pid=44044,fd=9))   

Nginx als Reverse Proxy für Redmine konfigurieren

Als Nächstes musst du Nginx als Reverse Proxy für Redmine installieren und konfigurieren. Installiere zunächst den Nginx-Server mit dem folgenden Befehl:

dnf install nginx -y

Als Nächstes erstellst du eine Konfigurationsdatei für den virtuellen Nginx-Host mit folgendem Befehl:

nano /etc/nginx/conf.d/redmine.conf

Füge die folgenden Zeilen hinzu:

upstream backend {
  server 127.0.0.1:3000;
}

server {
    listen 80;
    server_name redmine.example.com;
    access_log /var/log/nginx/redmine.example.com-access.log;
    error_log /var/log/nginx/redmine.example.com-error.log;

    location / {
        proxy_pass http://backend/;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $http_host;

        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forward-Proto http;
        proxy_set_header X-Nginx-Proxy true;
        proxy_redirect off;
    }
}

Speichere und schließe die Datei und überprüfe Nginx mit dem folgenden Befehl auf Syntaxfehler:

nginx -t

Du solltest die folgende Ausgabe erhalten:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Starte als Nächstes den Nginx-Dienst und aktiviere ihn so, dass er beim Neustart des Systems startet:

systemctl start nginx
systemctl enable nginx

Du kannst den Status von Nginx auch mit dem folgenden Befehl überprüfen:

systemctl status nginx

Du solltest die folgende Ausgabe erhalten:

? nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
  Drop-In: /usr/lib/systemd/system/nginx.service.d
           ??php-fpm.conf
   Active: active (running) since Thu 2021-06-24 04:33:48 EDT; 25s ago
  Process: 45832 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
  Process: 45830 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
  Process: 45828 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
 Main PID: 45833 (nginx)
    Tasks: 3 (limit: 25014)
   Memory: 5.3M
   CGroup: /system.slice/nginx.service
           ??45833 nginx: master process /usr/sbin/nginx
           ??45834 nginx: worker process
           ??45835 nginx: worker process

Jun 24 04:33:48 centos8 systemd[1]: Starting The nginx HTTP and reverse proxy server...
Jun 24 04:33:48 centos8 nginx[45830]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Jun 24 04:33:48 centos8 nginx[45830]: nginx: configuration file /etc/nginx/nginx.conf test is successful
Jun 24 04:33:48 centos8 systemd[1]: Started The nginx HTTP and reverse proxy server.

Zugriff auf Redmine

Jetzt kannst du über die URL http://redmine.example.com auf die Redmine-Weboberfläche zugreifen . Du solltest die folgende Seite sehen:

Klicke auf die Schaltfläche Anmelden. Du solltest die Redmine-Anmeldeseite sehen:

Gib den Standardbenutzer und das Passwort admin ein und klicke dann auf die Schaltfläche Anmelden. Du wirst zur Seite „Passwort ändern“ weitergeleitet:

Lege dein neues Admin-Passwort fest und klicke auf die Schaltfläche Speichern, um die Änderungen zu speichern.

Fazit

Herzlichen Glückwunsch! Du hast Redmine erfolgreich auf CentOS 8 mit Nginx installiert. Jetzt kannst du Redmine in deiner Organisation nutzen und dein Projekt von einem zentralen Ort aus verwalten.

Das könnte dich auch interessieren …