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
- mod_ruby: http://www.modruby.net
- Ruby: http://www.ruby-lang.org
- ISPConfig: http://www.ispconfig.org