Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
Redmine unter Ubuntu 9.10
Redmine is a flexible project management web application. Written using Ruby on Rails framework, it is cross-platform and cross-database.
Es ist besonders für Programmentwicklungen geeignet, da es Schnittstellen zu SVN, Git und anderen Versionierungstools mitbringt. Der Unterschied zu Wikis oder Foren ist eben, dass es Projektbasierend ist. Das heißt soviel, dass man ein Projekt anlegen kann und darin ein Wiki, Foren und so weiter anlegen kann.
Im Folgenden möchte ich erklären wie man es unter Ubuntu 9.10 installiert und mit einem Mongrel Cluster und Apache lauffähig und vor allem es performanter macht.
Pakete installieren
Im ersten Schritt installieren wir alle Pakete die benötigt werden. Ich benutze bspw. MySQL, es ist aber auch mit anderen Datenbanken möglich.
aptitude install mysql-server-5.0 libmysql-ruby subversion apache2-mpm-itk ruby rubygems irb ri rdoc ruby1.8-dev rake libapache2-mod-fastcgi libopenssl-ruby1.8
Anschließend installieren wir Ruby on Rails und Mongrel (Das kann ein wenig dauern)
gem install rails mongrel mongrel_cluster daemons --include-dependencies
Danach muss man noch ein paar Symlinks anlegen
ln -s /var/lib/gems/1.8/bin/mongrel_rails /usr/bin/mongrel_rails ln -s /var/lib/gems/1.8/bin/rails /usr/bin/rails ln -s /var/lib/gems/1.8/bin/mongrel_cluster_ctl /usr/bin/mongrel_cluster_ctl
Datenbank vorbereiten
Für die Installation müssen wir nun noch einen Benutzer und eine Datenbank anlegen.
mysql -u root -p create user 'redmine'@'localhost'; set password for 'redmine'@'localhost' = password('PASSWORT'); create database redmine; grant all on redmine.* to 'redmine'@'localhost'; quit
Redmine konfigurieren
Nun können wir die aktuelle Version von Redmine via subversion runterladen. Dazu müssen wir in das Verzeichnis wechseln, in das wir Redmine installieren wollen. Ich habe es einfach in /var/www installiert (auf dem Server läuft nichts anderes)
cd /var/www svn co http://redmine.rubyforge.org/svn/trunk .
Anschließend müssen wir die Datenbankverbindung angeben und ein paar Sachsen an der config/enviroment.rb ändern
cd config/ cp database.yml.example database.yml nano -w database.yml
Gleich im ersten Block müssen wir etwas ändern. Es sollte so aussehen (natürlich müsst ihr eurer Passwort eintragen)
production: adapter: mysql database: redmine host: localhost username: redmine password: PASSWORT encoding: utf8
Danach müssen wir die Rails Version in der enviroment.rb auskommentieren (wir haben bei 9.10 eine aktuellere Version) und ein „Secret Word“ für einen Cookie setzen.
nano -w enviroment.rb
Einfach eine Raute davor:
# Specifies gem version of Rails to use when vendor/rails is not present # RAILS_GEM_VERSION = '2.3.4' unless defined? RAILS_GEM_VERSION
In die vorletzte Zeile dann die Cookie Information (das :secret habe ich mittels pwgen erzeugt)
# [...] config.action_controller.session = { :key => "_myapp_session", :secret => "FZRVfSdulCHtXfE1I1gGit49VVRM8gS2Pin9JlLA" } end
Nun können wir das Schema in die Datenbank schreiben
rake db:migrate RAILS_ENV="production"
Der erste Start
ruby /var/www/script/server -e production
Jetzt schauen wir ob wir Redmine sehen können:
Konfiguration für Apache
Nun können wir das Mongrel Cluster konfigurieren und starten. Der erste Befehl erstellt drei Instanzen auf den Ports 8000,8001,8002 und zwar mit dem Benutzer www-data
mongrel_rails cluster::configure -e production -p 8000 -N 3 -c /var/www --user www-data --group www-data mongrel_rails cluster::start
Anschließend weißen wir www-data alle Dateien und Ordner im /var/www zu
chown -R www-data:www-data /var/www/
Für Apache müssen ein paar Module nachgeladen werden:
a2enmod proxy_balancer a2enmod proxy a2enmod proxy_http a2enmod rewrite a2enmod ssl
Nun da wir die Module geladen haben, müssen wir noch erlauben, dass der Proxy benutzt werden darf. Dies steht in der proxy.conf unter /etc/apache2/mods-enabled/
nano -w /etc/apache2/mods-enabled/proxy.conf
So sollte es dann aussehen:
<Proxy *> AddDefaultCharset off Order allow,deny Allow from all #Allow from .example.com </Proxy>
Da ich nur eine Website (eben das Redmine) laufen habe, musste ich keinen neuen vHost anlegen, sondern habe den existierenden geändert
nano -w /etc/apache2/sites-enabled/000-default
Noch dazu lasse ich das alles nur via https laufen, aber ohne sehe es nicht viel anders aus
<VirtualHost *:80> ServerAdmin postmaster@systemli.org ServerName subdomain.systemli.org RedirectMatch ^/(.*) https://subdomain.systemli.org/$1 </VirtualHost> <VirtualHost *:443> ServerAdmin postmaster@systemli.org ServerName subdomain.systemli.org SSLEngine On SSLCipherSuite HIGH SSLProtocol all -SSLv2 SSLCertificateFile /etc/ssl/subdomain.systemli.org.crt SSLCertificateKeyFile /etc/ssl/subdomain.systemli.org.key RewriteEngine On # Redirect all non-static requests to cluster RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f RewriteRule ^/(.*)$ balancer://redminecluster%{REQUEST_URI} [P,QSA,L] </VirtualHost> <Proxy balancer://redminecluster> BalancerMember http://127.0.0.1:8000 BalancerMember http://127.0.0.1:8001 BalancerMember http://127.0.0.1:8002 </Proxy>
Abschließend starten wir den Apache Server neu und können die Domain aufrufen
service apache2 restart