Phusion Passenger und Apache mit Debian

Debian… dieser Hort uralter Software – Aber man muss es halt nutzen. In den Debian–Stable repos ist Ruby 1.8. eingetragen. Aktuell ist aber Ruby 1.9.3. Die Installation von Rails und vor allem dem Phusion Passenger gestaltete sich für mich ziemlich schwierig. Wie es trotzdem klappt, kannst du hier nachlesen.

Ruby installieren

Die Ruby–Version aus der Paketverwaltung kann man wie gesagt vergessen. Also müssen wir rvm nutzen. Am praktischsten ist es, rvm gleich Systemweit zu installieren:

curl -L https://get.rvm.io | sudo bash -s stable

Wichtig ist hier, den Befehl nicht als Root, sondern mit sudo auszuführen, weil rvm einige Variablen benötigt, die mit root anders gesetzt sind
Dann installierst du dir die aktuelle Ruby–Version:

rvm install 1.9.3
rvm use 1.9.3

Nun habe ich mir meine Rails–Applikation geholt und die benötigten Gems mit

bundle install

installiert.

Phusion Passenger einrichten

Passanger installieren:

gem install passenger

Nun muss noch das Modul für Apache installiert werden:

rvmsudo /usr/local/rvm/gems/ruby-1.9.3-p362/gems/passenger-3.0.18/bin/passenger-install-apache2-module

Den Pfad zur Installation musst du Gegebenenfalls anpassen.
Jetzt nur noch die Apache Konfiguration anpassen und danach kann es losgehen:

Füge folgende Zeilen am Ende der /etc/apache2/apache.conf (o.ä.) hinzu:

   LoadModule passenger_module /usr/local/rvm/gems/ruby-1.9.3-p362/gems/passenger-3.0
.18/ext/apache2/mod_passenger.so
   PassengerRoot /usr/local/rvm/gems/ruby-1.9.3-p362/gems/passenger-3.0.18
   PassengerRuby /usr/local/rvm/wrappers/ruby-1.9.3-p362/ruby

Dann erstellst du einen neuen Virtuellen Host: (z.B. /etc/apache2/sites-enabled/yourhost.com.conf)

   <VirtualHost *:80>
      ServerName www.yourhost.com
      # !!! Be sure to point DocumentRoot to 'public'!
      DocumentRoot /somewhere/public    
      <Directory /somewhere/public>
         # This relaxes Apache security settings.
         AllowOverride all
         # MultiViews must be turned off.
         Options -MultiViews
      </Directory>
   </VirtualHost>

Danach musst du die Seite aktivieren und dann Apache neu laden (oder neu starten):

sudo a2ensite yourhost.com.conf
sudo service apache2 restart

Anwendung vorbereiten

Wenn noch nicht getan, solltest du genau jetzt

bundle install

durchführen. Danach erstellen wir die Datenbank und kompilieren die Assets vor:

rake db:migrate RAILS_ENV="production"
bundle exec rake assets:precompile

Wenn du nun deine Seite aufrufst, sollte alles Funktionieren. Wenn eine Leere Seite mit irgendwas mit „Sorry“ kommt, schau in deinen Logs nach: /var/log/apache2/error.log Wenn eine Phusion–Passanger–Fehlerseite kommt, dann lies nach, was dort steht.

Mehr dazu unter…