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


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

0 Kommentar(e)

Zum Posten von Kommentaren bitte