如何安装mod_ruby在各种Linux发行版上使用ISPConfig(2.2.20及以上)
版本1.0
作者:Falko Timme
从版本2.2.20开始, ISPConfig内置了对Ruby的支持。 而不是使用CGI / FastCGI,ISPConfig取决于服务器的Apache中可用的mod_ruby。 本文介绍如何在ISPConfig支持的各种发行版上安装mod_ruby。
我不会保证这将为您工作!
1 Debian Etch / Ubuntu 7.10
在Debian Etch和Ubuntu 7.10上,我们所要做的就是运行(以root用户身份):
apt-get install libapache2-mod-ruby
根本不需要配置。
2 Fedora 8 / CentOS 5.1
对于Fedora 8和CentOS 5.1,没有可用的mod_ruby包,因此我们必须自己编译。 首先我们安装一些先决条件:
yum install httpd-devel ruby ruby-devel
接下来我们下载并安装mod_ruby,如下所示:
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
最后,我们必须将mod_ruby模块添加到Apache配置中,因此我们创建文件/etc/httpd/conf.d/ruby.conf
...
vi /etc/httpd/conf.d/ruby.conf
LoadModule ruby_module modules/mod_ruby.so |
...并重新启动Apache:
/etc/init.d/httpd restart
3 Mandriva 2008.0
Mandriva 2008.0有一个mod_ruby包,我们可以安装如下:
urpmi apache-mod_ruby
该软件包附带一个mod_ruby配置,可以在全球范围内为所有网站启用mod_ruby。 因此,我们现在必须禁用它,以便可以在每个网站的基础上在ISPConfig中启用它:
vi /etc/httpd/modules.d/20_mod_ruby.conf
注释掉或删除该文件中的所有内容,但以下行除外:
<IfDefine HAVE_RUBY> <IfModule !mod_ruby.c> LoadModule ruby_module extramodules/mod_ruby.so </IfModule> </IfDefine> |
然后重新启动Apache:
/etc/init.d/httpd restart
4 OpenSUSE 10.3
OpenSUSE 10.3没有一个mod_ruby包,因此我们必须手动编译它。 首先我们安装先决条件:
yast -i apache2-devel ruby ruby-devel
之后我们建立mod_ruby如下:
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
要启用mod_ruby,我们打开/ etc / sysconfig / apache2
并将ruby
添加到APACHE_MODULES
行,例如:
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" [...] |
之后我们跑
SuSEconfig
并重新启动Apache:
/etc/init.d/apache2 restart
5使用mod_ruby
现在假设您已经在ISPConfig中使用文件root / var / www / web1 / web
创建了一个网站
。 如果您为该网站启用Ruby,则ISPConfig会将这样的内容添加到网站的Apache vhost配置中:
<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> |
(如果不使用ISPConfig,那么您当然可以手动将其添加到您的vhost配置,但不要忘了调整路径,然后重新启动Apache。)
要查看mod_ruby是否正常工作,我们创建Ruby文件/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 |
该文件必须是可执行的 ,所以我们运行:
chmod 755 /var/www/web1/web/hello_world.rb
现在你可以在浏览器中调用该文件 如果一切顺利,应该显示一个Hello World!
信息。
6链接
- mod_ruby: http : //www.modruby.net
- Ruby: http : //www.ruby-lang.org
- ISPConfig: http : //www.ispconfig.org