Wie man mod_ruby für die Verwendung mit ISPConfig (2.2.20 und neuere Versionen) auf verschiedenen Linux Distributionen installiert

Version 1.0
Author: Falko Timme <ft [at] falkotimme [dot] com>

Seit Version 2.2.20 besitzt ISPConfig eine eingebaute Unterstützung für Ruby. Anstatt der Verwendung von CGI/FastCGI ist ISPConfig von mod_ruby abhängig, das im Apache des Servers verfügbar ist. Diese Anleitung veranschaulicht, wie man mod_ruby auf verschiedenen Distributionen, die ISPConfig Unterstützung haben, installiert.

Ich übernehme keine Garantie, dass dies auch bei Dir funktioniert!

1 Debian Etch / Ubuntu 7.10

Auf Debian Etch und Ubuntu 7.10 müssen wir lediglich Folgendes (als Root-Benutzer) ausführen:

apt-get install libapache2-mod-ruby

Eine Konfiguration ist absolut nicht notwendig.

2 Fedora 8 / CentOS 5.1

Für Fedora 8 und CentOS 5.1 ist kein mod_ruby Paket verfügbar, also müssen wir es selbst kompilieren. Zunächst installieren wir einige Voraussetzungen:

yum install httpd-devel ruby ruby-devel

Als Nächstes laden wir mod_ruby runter und installieren es wie folgt:

cd /tmp
wget http://www.modruby.net/archive/mod_ruby-1.2.6.tar.gz
tar zxvf mod_ruby-1.2.6.tar.gz
cd mod_ruby-1.2.6/
./configure.rb –with-apr-includes=/usr/include/apr-1
make
make install

Schließlich müssen wir das mod_ruby Modul der Apache Konfiguration hinzufügen. Also erstellen wir die Datei /etc/httpd/conf.d/ruby.conf…

vi /etc/httpd/conf.d/ruby.conf

LoadModule ruby_module modules/mod_ruby.so

… und starten Apache neu:

/etc/init.d/httpd restart

3 Mandriva 2008.0

Mandriva 2008.0 hat ein mod_ruby Paket, das wir wie folgt installieren können:

urpmi apache-mod_ruby

Dieses Paket enthält eine mod_ruby Konfiguration, die mod_ruby global für alle Webseiten aktiviert. Daher müssen wir es nun deaktivieren, damit es in ISPConfig pro Webseite aktiviert werden kann:

vi /etc/httpd/modules.d/20_mod_ruby.conf

Kommentiere alles in dieser Datei aus oder lösche es bis auf die folgenden Zeilen:

<IfDefine HAVE_RUBY>
    <IfModule !mod_ruby.c>
        LoadModule ruby_module  extramodules/mod_ruby.so
    </IfModule>
</IfDefine>

Starte dann Apache neu:

/etc/init.d/httpd restart

4 OpenSUSE 10.3

OpenSUSE 10.3 hat kein mod_ruby Paket, daher müssen wir es manuell kompilieren. Zuerst installieren wir die Voraussetzungen:

yast -i apache2-devel ruby ruby-devel

Danach bauen wir mod_ruby wie folgt:

cd /tmp
wget http://www.modruby.net/archive/mod_ruby-1.2.6.tar.gz
tar zxvf mod_ruby-1.2.6.tar.gz
cd mod_ruby-1.2.6/
./configure.rb –with-apr-includes=/usr/include/apr-1
make
make install

Um mod_ruby zu aktivieren, öffnen wir /etc/sysconfig/apache2 und fügen ruby der APACHE_MODULES Zeile hinzu, z.B. wie folgt:

vi /etc/sysconfig/apache2

[...]
APACHE_MODULES="actions alias auth_basic authn_file authz_host authz_groupfile authz_default authz_user authn_dbm autoindex cgi dir env expires include log_config mime negotiation setenvif ssl suexec userdir php5 rewrite ruby"
[...]

Danach führen wir Folgendes aus

SuSEconfig

und starten Apache neu:

/etc/init.d/apache2 restart

5 Verwendung von mod_ruby

Lass uns nun davon ausgehen, dass Du in ISPConfig eine Webseite mit dem Dokumenten Root /var/www/web1/web erstellt hast. Wenn Du Ruby für diese Webseite aktivierst, fügt ISPConfig etwas in der Art der Apache vhost Konfiguration hinzu:

<IfModule mod_ruby.c>
  <Directory /var/www/web1/web>
    Options +ExecCGI
  </Directory>
  RubyRequire apache/ruby-run
  #RubySafeLevel 0
  <Files *.rb>
    SetHandler ruby-object
    RubyHandler Apache::RubyRun.instance
  </Files>
  <Files *.rbx>
    SetHandler ruby-object
    RubyHandler Apache::RubyRun.instance
  </Files>
</IfModule>

(Fallst Du ISPConfig nicht verwendest, kannst Du dies natürlich Deiner vhost Konfiguration manuell hinzufügen, aber vergiss nicht, die Pfade anzupassen und Apache danach neu zu starten.)

Um herauszufinden, ob mod_ruby funktioniert, erstellen wir die Ruby Datei /var/www/web1/web/hello_world.rb:

vi /var/www/web1/web/hello_world.rb

# The Greeter class
class Greeter
  def initialize(name)
    @name = name.capitalize
  end

  def salute
    puts "Hello #{@name}!"
  end
end

# Create a new object
g = Greeter.new("world")

# Output "Hello World!"
g.salute

Die Datei muss ausführbar sein, also führen wir dies aus:

chmod 755 /var/www/web1/web/hello_world.rb

Nun kannst Du die Datei in einem Browser aufrufen; wenn alles gut klappt, sollte eine Hello World! Nachricht angezeigt werden.

6 Links

Das könnte Dich auch interessieren …