Redmine ist ein leistungsfähiges, kostenloses und quelloffenes Projektmanagement-Tool. Es basiert auf dem Ruby-on-Rails-Framework, läuft webbasiert und kann mit verschiedenen Datenbanksystemen betrieben werden. Zu den umfangreichen Funktionen gehören Multi-Projekt-Unterstützung, rollenbasierte Zugriffskontrolle und ein integriertes Ticketsystem. Weitere Features umfassen Gantt-Diagramme, Kalender, Dateiverwaltung, projektbezogene Wikis und Foren sowie Kompatibilität mit Versionskontrollsystemen wie Git, SVN und CVS. Redmine ist mehrsprachig und unterstützt bis zu 49 Sprachen.
Diese Anleitung wurde für Redmine Version 3.4.4 verfasst, ist aber möglicherweise auch auf neuere Versionen anwendbar.
Systemvoraussetzungen
- Ein aktiver CentOS 7 Server
- Ein Benutzerkonto mit sudo-Rechten
- Eine auf den Server verweisende Domain
In diesem Beispiel wird die IP-Adresse 192.168.1.1 und die Domain redmine.example.com verwendet. Ersetze diese Werte durch deine tatsächliche IP-Adresse und Domain.
Stelle sicher, dass dein CentOS 7 System vor Beginn auf dem neuesten Stand ist. Siehe dazu die Anleitung How to Update CentOS 7. Nach dem Update kannst du mit der Installation der erforderlichen Pakete fortfahren.
Passende Infrastruktur bei centron
Zum Ausprobieren braucht es keine eigene Hardware: ccloud³ VMs mit vollem Root-Zugriff gibt es ab 3,12 € im Monat, stundengenau abgerechnet und in Sekunden bereit. Cloud Server mieten →
Apache installieren
Da Redmine auf Ruby on Rails basiert, wird Phusion Passenger benötigt, um die Anwendung über Apache bereitzustellen. Installiere zuerst Apache:
sudo yum -y install httpd httpd-devel libcurl-develUm Redmine zu kompilieren, sind zusätzliche Entwicklungswerkzeuge erforderlich. Installiere diese mit folgendem Befehl:
sudo yum -y install ImageMagick ImageMagick-devel git libxml2-devel libxslt-devel gcc bzip2 openssl-devel zlib-devel gdbm-devel ncurses-devel autoconf automake bison gcc-c++ libffi-devel libtool patch readline-devel sqlite-devel glibc-headers glibc-devel libyaml-devel libicu-devel libidn-develPostgreSQL für Redmine unter CentOS 7 einrichten
Redmine unterstützt verschiedene Datenbanksysteme wie MySQL, MSSQL und PostgreSQL. In dieser Anleitung verwenden wir PostgreSQL als Datenbank für Redmine.
PostgreSQL ist ein modernes objekt-relationales Datenbanksystem. Da das standardmäßige CentOS-Repository nur eine veraltete Version enthält, wird zunächst das offizielle PostgreSQL-Repository hinzugefügt:
sudo yum -y install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-1.noarch.rpmInstalliere nun den PostgreSQL-Server und zusätzliche Komponenten:
sudo yum -y install postgresql10-server postgresql10-contrib postgresql10Initialisiere anschließend das Datenverzeichnis von PostgreSQL:
sudo /usr/pgsql-10/bin/postgresql-10-setup initdbAktiviere den automatischen Start des Dienstes und starte ihn sofort:
sudo systemctl start postgresql-10
sudo systemctl enable postgresql-10Setze ein Passwort für den voreingestellten Benutzer postgres:
sudo passwd postgresWechsle in die PostgreSQL-Benutzerumgebung:
sudo su - postgresLege einen neuen PostgreSQL-Benutzer für Redmine an (Name frei wählbar):
createuser redmineStarte die PostgreSQL-Shell:
psqlVergib nun ein Passwort für den zuvor erstellten Benutzer:
ALTER USER redmine WITH ENCRYPTED password 'DBPassword';Ersetze DBPassword durch ein sicheres Kennwort. Lege anschließend die Redmine-Datenbank an und übertrage dem Benutzer die Rechte:
CREATE DATABASE redmine WITH ENCODING='UTF8' OWNER=redmine;Verlasse die psql-Konsole:
\qWechsle zurück zum ursprünglichen sudo-Nutzer:
exitBearbeite nun die Datei pg_hba.conf, um die Authentifizierungsmethode auf md5 umzustellen:
sudo nano /var/lib/pgsql/10/data/pg_hba.confÄndere die Datei wie folgt ab:
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
Starte den PostgreSQL-Dienst neu, damit die Änderungen aktiv werden:
sudo systemctl restart postgresql-10Installiere zum Schluss noch zusätzliche PostgreSQL-Bibliotheken, die Redmine benötigt:
sudo yum -y install libpqxx-devel protobuf-develPostgreSQL für Redmine unter CentOS 7 einrichten
Redmine unterstützt verschiedene Datenbanksysteme wie MySQL, MSSQL und PostgreSQL. In dieser Anleitung verwenden wir PostgreSQL als Datenbank für Redmine.
PostgreSQL ist ein modernes objekt-relationales Datenbanksystem. Da das standardmäßige CentOS-Repository nur eine veraltete Version enthält, wird zunächst das offizielle PostgreSQL-Repository hinzugefügt:
sudo yum -y install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-1.noarch.rpmInstalliere nun den PostgreSQL-Server und zusätzliche Komponenten:
sudo yum -y install postgresql10-server postgresql10-contrib postgresql10Initialisiere anschließend das Datenverzeichnis von PostgreSQL:
sudo /usr/pgsql-10/bin/postgresql-10-setup initdbAktiviere den automatischen Start des Dienstes und starte ihn sofort:
sudo systemctl start postgresql-10
sudo systemctl enable postgresql-10Setze ein Passwort für den voreingestellten Benutzer postgres:
sudo passwd postgresWechsle in die PostgreSQL-Benutzerumgebung:
sudo su - postgresLege einen neuen PostgreSQL-Benutzer für Redmine an (Name frei wählbar):
createuser redmineStarte die PostgreSQL-Shell:
psqlVergib nun ein Passwort für den zuvor erstellten Benutzer:
ALTER USER redmine WITH ENCRYPTED password 'DBPassword';Ersetze DBPassword durch ein sicheres Kennwort. Lege anschließend die Redmine-Datenbank an und übertrage dem Benutzer die Rechte:
CREATE DATABASE redmine WITH ENCODING='UTF8' OWNER=redmine;Verlasse die psql-Konsole:
\qWechsle zurück zum ursprünglichen sudo-Nutzer:
exitBearbeite nun die Datei pg_hba.conf, um die Authentifizierungsmethode auf md5 umzustellen:
sudo nano /var/lib/pgsql/10/data/pg_hba.confÄndere die Datei wie folgt ab:
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
Starte den PostgreSQL-Dienst neu, damit die Änderungen aktiv werden:
sudo systemctl restart postgresql-10Installiere zum Schluss noch zusätzliche PostgreSQL-Bibliotheken, die Redmine benötigt:
sudo yum -y install libpqxx-devel protobuf-develRuby und Phusion Passenger für Redmine installieren
Um eine bessere Trennung und Sicherheit zu gewährleisten, sollte Redmine nicht als Root-Benutzer ausgeführt werden. Lege daher einen separaten Benutzer an und wechsle zu diesem:
sudo adduser redmine
sudo su - redmineZur Installation und Verwaltung von Ruby-Versionen wird RVM (Ruby Version Manager) verwendet. Importiere zunächst die notwendigen GPG-Schlüssel:
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDBInstalliere RVM und lade die RVM-Umgebung:
curl -sSL https://get.rvm.io | bash -s stable
source ~/.rvm/scripts/rvmZeige alle verfügbaren Ruby-Versionen an:
rvm list knownInstalliere aus der Liste die gewünschte Ruby-Version und aktiviere sie direkt im Anschluss:
rvm install 2.4
rvm use 2.4Prüfe die installierte Ruby-Version:
ruby -vBeispielausgabe:
[redmine@centron ~]$ ruby -v
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]
Installiere nun Bundler, den Paketmanager für Ruby-Abhängigkeiten:
gem install bundlerPhusion Passenger installieren
Als Nächstes wird Phusion Passenger installiert, um Ruby mit dem Apache-Webserver zu verbinden:
gem install passengerStelle sicher, dass der Benutzerordner von Redmine ausführbar ist, damit Passenger darauf zugreifen kann:
chmod o+x "/home/redmine"Installiere nun das Apache-Modul für Passenger:
passenger-install-apache2-moduleWährend der Installation zeigt das Skript eine Übersicht an und fordert zur Auswahl der Programmiersprache auf. Wähle Ruby aus und bestätige mit Enter.
Passenger prüft anschließend die Systemanforderungen, kompiliert das Modul und installiert es automatisch, sofern keine Fehler auftreten.
Nach erfolgreicher Installation erscheint ein Konfigurationsbeispiel, das später in Apache eingefügt werden muss:
LoadModule passenger_module /home/redmine/.rvm/gems/ruby-2.4.1/gems/passenger-5.1.12/buildout/apache2/mod_passenger.so
PassengerRoot /home/redmine/.rvm/gems/ruby-2.4.1/gems/passenger-5.1.12
PassengerDefaultRuby /home/redmine/.rvm/gems/ruby-2.4.1/wrappers/ruby
Drücke Enter, um diesen Schritt zu überspringen – der aktuelle Benutzer hat keine sudo-Rechte. Die Konfiguration wird später im Tutorial ergänzt.
Am Ende überprüft das Installationsskript die Umgebung. Es kann eine Warnung anzeigen, wenn die Apache-Konfigurationsdatei die Passenger-Direktiven noch nicht enthält:
Validating installation...
* Checking whether this Passenger install is in PATH... ✓
* Checking whether there are no other Passenger installations... ✓
* Checking whether Apache is installed... ✓
* Checking whether the Passenger module is correctly configured in Apache... (!)
You did not specify 'LoadModule passenger_module' in any of your Apache
configuration files. Please paste the configuration snippet that this
installer printed earlier, into one of your Apache configuration files, such
as /etc/httpd/conf/httpd.conf.
Detected 0 error(s), 1 warning(s).
Press ENTER to continue.
Phusion Passenger wurde nun erfolgreich installiert. Du kannst jetzt mit dem Herunterladen und Einrichten von Redmine fortfahren.
Redmine unter CentOS 7 herunterladen und installieren
Beginne damit, die aktuellste Redmine-Version von der offiziellen Webseite herunterzuladen:
cd ~
wget http://www.redmine.org/releases/redmine-3.4.4.tar.gzEntpacke das Archiv und benenne den Ordner zur besseren Übersicht um:
tar -xf redmine-*.tar.gz
mv redmine-*/ redmine/Kopiere die Beispielkonfigurationsdateien in ihre entsprechenden Zielpfade:
cd redmine
cp config/configuration.yml.example config/configuration.yml
cp config/database.yml.example config/database.ymlBearbeite nun die Datenbankkonfiguration und trage die PostgreSQL-Daten ein:
nano config/database.ymlKommentiere die MySQL-Konfiguration für die Abschnitte production, development und test aus:
#production:
# adapter: mysql2
# database: redmine
# host: localhost
# username: root
# password: ""
# encoding: utf8
#development:
# adapter: mysql2
# database: redmine_development
# host: localhost
# username: root
# password: ""
# encoding: utf8
#test:
# adapter: mysql2
# database: redmine_test
# host: localhost
# username: root
# password: ""
# encoding: utf8
Aktiviere und passe die PostgreSQL-Konfiguration wie folgt an (beachte die Einrückung mit zwei Leerzeichen):
production:
adapter: postgresql
database: redmine
host: localhost
username: redmine
password: "DBPassword"
Lege den Pfad zur PostgreSQL-Konfiguration für den Build-Vorgang fest:
bundle config build.pg --with-pg-config=/usr/pgsql-10/bin/pg_configInstalliere die notwendigen Ruby-Bibliotheken, jedoch ohne Entwicklungs- und Testmodule:
bundle install --without development testAm Ende der Installation wird eine Meldung wie diese erscheinen:
Installing roadie-rails 1.1.1
Bundle complete! 31 Gemfile dependencies, 55 gems now installed.
Gems in the groups development and test were not installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
Erzeuge einen geheimen Schlüssel für die Sitzungsverschlüsselung:
bundle exec rake generate_secret_tokenFühre die Datenbankmigration für die Produktionsumgebung durch:
RAILS_ENV=production bundle exec rake db:migrateLade nun die Standarddaten und Sprachdateien in die Datenbank:
RAILS_ENV=production bundle exec rake redmine:load_default_dataWährend der Ausführung wirst du aufgefordert, die Standard-Sprache auszuwählen. Standard ist Englisch:
[redmine@centron redmine]$ RAILS_ENV=production bundle exec rake redmine:load_default_data
Select language: ar, az, bg, bs, ca, cs, da, de, el, en, en-GB, es, es-PA, et, eu, fa, fi, fr, gl, he, hr, hu, id, it, ja, ko, lt, lv, mk, mn, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sq, sr, sr-YU, sv, th, tr, uk, vi, zh, zh-TW [en]
====================================
Default configuration data loaded.
Erstelle anschließend die notwendigen Verzeichnisse und setze die Dateirechte korrekt:
mkdir -p tmp tmp/pdf public/plugin_assets
chown -R redmine:redmine files log tmp public/plugin_assets
chmod -R 755 files log tmp public/plugin_assetsDamit sind alle Schritte unter dem eingeschränkten Benutzer abgeschlossen. Wechsle zurück zu deinem Hauptnutzer mit sudo-Rechten:
su - <username>Apache-Konfiguration für Redmine mit SSL unter CentOS 7
Aktiviere zunächst das Passenger-Modul in der Apache-Konfiguration, damit es beim Systemstart automatisch geladen wird:
echo "LoadModule passenger_module /home/redmine/.rvm/gems/ruby-2.4.1/gems/passenger-5.1.12/buildout/apache2/mod_passenger.so" | sudo tee -a /etc/httpd/conf.modules.d/00-base.confErstelle anschließend eine neue Virtual-Host-Konfiguration für Redmine:
sudo nano /etc/httpd/conf.d/redmine.confFüge folgenden Inhalt ein und ersetze redmine.example.com mit deiner Domain:
<VirtualHost *:80>
ServerName redmine.example.com
DocumentRoot /home/redmine/redmine/public
PassengerRoot /home/redmine/.rvm/gems/ruby-2.4.1/gems/passenger-5.1.12
PassengerRuby /home/redmine/.rvm/gems/ruby-2.4.1/wrappers/ruby
PassengerUser redmine
<Directory /home/redmine/redmine/public>
Allow from all
Options -MultiViews
Require all granted
</Directory>
</VirtualHost>
Vergewissere dich, dass die Pfade korrekt sind, indem du folgenden Befehl ausführst:
sudo su redmine -c "passenger-config about ruby-command"Starte Apache neu, damit die neue Konfiguration aktiv wird:
sudo systemctl restart httpdÖffne die Firewall für HTTP (Port 80):
sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --reloadRedmine ist jetzt über http://redmine.example.com erreichbar. Die Standard-Zugangsdaten sind admin / admin.
HTTPS mit Let's Encrypt SSL aktivieren
Um die Verbindung zu verschlüsseln, richte ein SSL-Zertifikat mit Let's Encrypt und Certbot ein.
Installiere die nötigen Pakete:
sudo yum -y install epel-release
sudo yum -y install certbot mod_sslErlaube HTTPS (Port 443) in der Firewall:
sudo firewall-cmd --zone=public --add-service=https --permanent
sudo firewall-cmd --reloadHinweis: Die Domain muss bereits auf den Server zeigen.
Fordere nun das SSL-Zertifikat an:
sudo certbot certonly --webroot -w /home/redmine/redmine/public -d redmine.example.comDie Zertifikate findest du unter /etc/letsencrypt/live/redmine.example.com/.
Richte einen Cronjob ein, um die automatische Erneuerung zu ermöglichen:
sudo crontab -eFüge folgende Zeile für die tägliche Erneuerung um 5:30 Uhr hinzu:
30 5 * * * /usr/bin/certbot renew --quiet
Bearbeite nun die Apache-Konfigurationsdatei für Redmine:
sudo nano /etc/httpd/conf.d/redmine.confErgänze die Datei wie folgt, um HTTP auf HTTPS umzuleiten und SSL zu aktivieren:
<VirtualHost *:80>
Redirect permanent / https://www.example.com/
ServerName redmine.example.com
</VirtualHost>
<VirtualHost *:443>
ServerAdmin admin@example.com
ServerName redmine.example.com
DocumentRoot "/home/redmine/redmine/public"
<Directory "/home/redmine/redmine/public">
Options None
Require all granted
</Directory>
PassengerAppEnv production
PassengerRoot /home/redmine/.rvm/gems/ruby-2.4.1/gems/passenger-5.1.12
PassengerRuby /home/redmine/.rvm/gems/ruby-2.4.1/wrappers/ruby
PassengerUser redmine
PassengerHighPerformance on
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/redmine.example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/redmine.example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/redmine.example.com/chain.pem
SSLProtocol all -SSLv2 -SSLv3
SSLHonorCipherOrder on
SSLCipherSuite ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS
<IfModule headers_module>
Header always edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure
Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains"
</IfModule>
</VirtualHost>
Speichere die Datei und starte Apache neu, um die Änderungen zu übernehmen:
sudo systemctl restart httpdRedmine ist jetzt sicher über https://redmine.example.com erreichbar.
Herzlichen Glückwunsch! Die Redmine-Installation unter CentOS 7 ist vollständig eingerichtet und mit SSL geschützt. Du kannst jetzt Projekte erstellen oder importieren und loslegen.
Fazit
Du hast die Installation und Konfiguration von Redmine 3.4.4 unter CentOS 7 erfolgreich abgeschlossen – inklusive Apache, PostgreSQL und Phusion Passenger. Die Plattform ist nun live geschaltet und durch ein SSL-Zertifikat von Let's Encrypt geschützt, was eine verschlüsselte Kommunikation über HTTPS ermöglicht. Durch die Einhaltung bewährter Sicherheitspraktiken – wie der Nutzung eines nicht privilegierten Benutzers und der automatischen SSL-Erneuerung – ist dein System sowohl sicher als auch betriebsbereit.
Mit der einsatzbereiten Redmine-Umgebung kannst du nun Aufgaben verwalten, Probleme nachverfolgen, im Team zusammenarbeiten und Projektzeitpläne visualisieren – dank integrierter Tools wie Gantt-Diagrammen und dem Ticketsystem. Ob du bestehende Daten importierst oder dein erstes Projekt startest: Redmine bietet dir eine leistungsstarke und anpassbare Plattform für dein Projektmanagement.
Du kannst deine Redmine-Instanz jederzeit erweitern – z. B. durch Plugins, E-Mail-Benachrichtigungen oder die Anpassung von Benutzerrechten, wenn dein Team wächst. Viel Erfolg bei der Projektarbeit!
Testen Sie Ihr Setup auf ccloud³
Registrieren Sie sich in der ccloud³ und erhalten Sie 200 € Startguthaben für Ihr Projekt – z. B. für eine PostgreSQL-VM mit automatischen Backups.