Ein einfaches „apt-get install redmine“ reicht nicht mehr, um eine aktuelle Redmine-Installation auf Ubuntu zu installieren. Aus diesem Grund dokumentiere ich hier, wie ich bei mir Redmine installiert habe.
Orientiert an dieser Anleitung poste ich hier meine Arbeitsschritte:
Prequisits / Voraussetzungen für Redmine schaffen
Apache installieren
apt-get install --no-install-recommends apache2 libapache2-mod-passenger logrotate ssl-cert
Ruby, git und andere Redmine-Abhängigkeiten installieren:
apt-get install --no-install-recommends git ruby ruby-dev ruby-rmagick rake make gcc libmysqlclient-dev patch
Quelltext von RUBY mittels git herunterladen
Apache installieren
cd /var/www git clone https://github.com/redmine/redmine
Anschließend wird das redmine-repository geklont:
Anschließend wechselt ihr in das redmine-Verzeichnis und wechselt den Branch auf den aktuellen Stable:
cd redmine git checkout 3.1-stable
Als nächstes bedienen wir uns dem offiziellen „Ruby Paketsystem“, um die Abhängigkeiten für Ruby downzuloaden. Achtet darauf, bei dem Befehl die HTTPS-Verbindung zur Paketquelle anzugeben!
Dafür müssen wir als erstes die Paketquelle in eine Datei schreiben mit dem Befehl:
cat << EOF >> /etc/gemrc
In die Datei schreibt ihr die folgenden Zeilen:
:sources: - https://rubygems.org EOF
Anschließend wechselt ihr in das Verzeichnis /var/www/redmine und installiert die Pakete „bundler“ und „nokogiri“
cd /var/www/redmine gem install --no-ri --no-rdoc bundler nokogiri hash -r
An dieser Stelle weiche ich von der oben genannten englischen Anleitung ab und gebe meinen externen MySQL-Server an, indem ich die Config kopiere und editiere:
cd config sudo cp database.yml.example database.yml sudo vim database.yml
Kopiert noch diese Zeilen in die database.yml:
# Clean up the environment unset REDMINE_PASSWORD
Nutze Bundler zum installieren erforderlicher gems und deaktiviere nicht genutzte:
cd /var/www/redmine bundle install --without development test postgresql sqlite rmagick
Konfiguration
Um eine MySQL-Datenbank anzulegen, verbindet Euch mit dem MySQL-Server Eurer Wahl oder legt einen lokalen mittelt apt-get install mysql-server an.
Mit den folgenden Befehlen legt ihr eine mysql-Datenbank mit einem zufääligen Passwort an:
REDMINE_PASSWORD=$(openssl rand -base64 33) mysql -e "CREATE DATABASE redmine CHARACTER SET utf8;" mysql -e "CREATE USER 'redmine'@'localhost' IDENTIFIED BY '$REDMINE_PASSWORD';" mysql -e "GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';"
Redmine
Als nächstes legt ihr einen User „redmine“ an:
adduser --quiet --system --group --gecos 'Passenger user for redmine' --shell /usr/sbin/nologin --home /nonexistent --no-create-home redmine
Korrigiert die Berechtigung für die Konfigurationsdatei:
touch /var/www/redmine/config/database.yml chmod 640 /var/www/redmine/config/database.yml chgrp redmine /var/www/redmine/config/database.yml
Als nächstes legt eine configuration.yml an und füllt sie mit den nachstehenden Inhalten:
touch /var/www/redmine/config/configuration.yml chmod 640 /var/www/redmine/config/configuration.yml chgrp redmine /var/www/redmine/config/configuration.yml cat << EOF > /var/www/redmine/config/database.yml
production: adapter: mysql2 database: redmine # XXX: Unix sockets are faster than loopback connections #host: 127.0.0.1 socket: /var/run/mysqld/mysqld.sock username: redmine password: "$REDMINE_PASSWORD" encoding: utf8 EOF
Solltet ihr an dieser Stelle Berechtigungsprobleme erhalten, versucht es nochmal mit sudo -i.
Als nächstes bereitet ihr die Datenbank vor inklusive Beispieldaten:
# Re-run Bundler to automatically install the right DB adapter now that database.yml is populated cd /var/www/redmine sudo bundle install --without development test postgresql sqlite rmagick # Generate a secret token and protect it sudo rake generate_secret_token sudo chmod 0640 config/initializers/secret_token.rb sudo chgrp redmine config/initializers/secret_token.rb sudo RAILS_ENV=production rake db:migrate sudo RAILS_ENV=production REDMINE_LANG=en rake redmine:load_default_data # Encrypt SCM and LDAP passwords sudo RAILS_ENV=production rake db:encrypt
Bereite ein paar Verzeichnisse vor:
cd /var/www/redmine mkdir -p tmp tmp/pdf public/plugin_assets sudo chown -R redmine: files log tmp public/plugin_assets sudo chmod -R 0755 public/plugin_assets sudo chmod -R 0750 files log tmp # can contain sensitive data sudo find files log tmp public/plugin_assets -type f -exec chmod -x {} +
Konfiguriere die LOG-Rotation, damit die Log-Dateien nicht das Dateisystem vollschreiben:
sudo -i cat << EOF > /etc/logrotate.d/redmine /var/www/redmine/log/*.log { daily missingok rotate 7 compress notifempty copytruncate } EOF exit
Apache Konfiguration
Ich werde als Aufruf-URL ein https://host/pm konfigurieren. Dafür ergänze ich in der configuration.yml folgende Zeilen:
# Configuration of the autologin cookie. # autologin_cookie_name: the name of the cookie (default: autologin) # autologin_cookie_path: the cookie path (default: /) # autologin_cookie_secure: true sets the cookie secure flag (default: false) autologin_cookie_name: autologin_cookie_path: "/pm" autologin_cookie_secure: true
Anschließend lege ich einen symbolischen Link an:
ln -s public pm
Optional könnt ihr ungenutzte Module entfernen:
a2dismod access_compat alias authz_groupfile autoindex cgid deflate dir env filter negotiation status > /dev/null
Konfiguriert die SSL-Konfiguration des Apache
cat << EOF > /etc/apache2/sites-available/pm.svc.sdeziel.info-ssl.conf <VirtualHost _default_:443> ServerName EUER_SERVERNAME ServerAdmin webmaster@EUREDOMAIN.DE ErrorLog /var/log/apache2/redmine-error.log CustomLog /var/log/apache2/redmine.log combined SSLEngine On SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key # Passenger user PassengerUser redmine # XXX: If NOT using a sub-URI #DocumentRoot /var/www/redmine/public # XXX: If using a sub-URI (/pm) DocumentRoot /var/www/redmine/pm RailsBaseURI /pm PassengerAppRoot /var/www/redmine </VirtualHost> EOF
Den nachfolgenden Schritt in der Anleitung kann ich nicht nachvollziehen, habe ihn aber dennoch durchgeführt:
„Tweak Passenger performance:“
cat << EOF > /etc/apache2/conf-available/zz-passenger-performance.conf # Passenger tuning PassengerMaxPoolSize 2 PassengerMinInstances 1 # XXX: Pick one of those PassengerPreStart #PassengerPreStart https://pm.svc.sdeziel.info/ #PassengerPreStart https://pm.svc.sdeziel.info/pm PassengerMaxRequests 5000 PassengerUploadBufferDir /tmp/ # Breaks compatibility with mod_autoindex and mod_rewrite PassengerHighPerformance on # Do not reveal too much about the server ServerTokens Prod ServerSignature Off
Es empfiehlt sich, nur HTTPS-Verbindungen zuzulassen:
sudo a2dissite default 000-default default-ssl sudo a2ensite EUER_SERVERNAME.info-ssl sudo a2enmod ssl passenger sudo a2enconf zz-passenger-performance sudo apache2ctl -S && service apache2 restart