我真的想在Apache服务器上运行一些ruby代码。我已经安装了libapache2-mod-ruby和libapache-ruby1.8 (已安装的完整列表是here)。现在我该怎么做才能让它运行(here`s是个例子)?
发布于 2009-10-13 14:12:12
mod-ruby并不是ruby社区的首选方式。
启动它的最简单方法是安装passenger (通过gem)并配置apache来使用它。
这真的很容易做到,
你可以在这里遵循官方教程:http://www.modrails.com/install.html
发布于 2014-09-03 22:28:59
这是一个用于启动和运行mod_ruby的quick howto。下面是我在Ubuntu 12.04上使用的步骤的简短总结:
为apache安装mod_ruby:
sudo apt-get install libapache2-mod-ruby要为/var/www下的所有文件启用mod_ruby,请编辑您的apache配置文件,即/etc/apache2/sites-enabled/000-default
我必须在Options中添加Ruby,并添加与+ExecCGI相关的部分:
<Directory /var/www/>
Options Indexes +ExecCGI
# Ruby with mod_ruby
RubyRequire apache/ruby-run
<Files *.rb>
SetHandler ruby-object
RubyHandler Apache::RubyRun.instance
AddType text/html rb
</Files>
</Directory>我看到的主要缺点是,我似乎找不到一种从脚本中设置mime/内容类型的方法。您必须使用AddType text/html rb指令为所有ruby脚本全局设置它。
最后,您需要/var/www中的一个测试脚本,并且它必须是可执行的。例如,我有/var/www/test.rb
#!/usr/bin/ruby
puts "Hello World!<br><pre>"
ENV.each { |k,v|
puts "#{k}=#{v}"
}
puts "</pre>"别忘了让它成为可执行的:
chmod a+x /var/www/test.rb下面的输出是:
Hello World!
HTTP_HOST=10.0.1.3
HTTP_CONNECTION=keep-alive
HTTP_CACHE_CONTROL=max-age=0
HTTP_ACCEPT=text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
HTTP_USER_AGENT=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36
HTTP_ACCEPT_ENCODING=gzip,deflate,sdch
HTTP_ACCEPT_LANGUAGE=en-US,en;q=0.8
HTTP_COOKIE=__test=1;
PATH=/bin:/usr/bin:/usr/ucb:/usr/bsd:/usr/local/bin
SERVER_SIGNATURE=
Apache/2.2.22 (Ubuntu) Server at 10.0.1.3 Port 80
SERVER_SOFTWARE=Apache/2.2.22 (Ubuntu)
SERVER_NAME=10.0.1.3
SERVER_ADDR=10.0.1.3
SERVER_PORT=80
REMOTE_ADDR=10.0.1.3
DOCUMENT_ROOT=/var/www
SERVER_ADMIN=webmaster@localhost
SCRIPT_FILENAME=/var/www/test.rb
REMOTE_PORT=38188
SERVER_PROTOCOL=HTTP/1.1
REQUEST_METHOD=GET
REQUEST_URI=/test.rb
SCRIPT_NAME=/test.rb
MOD_RUBY=mod_ruby/1.2.6
GATEWAY_INTERFACE=CGI-Ruby/1.1我在mod_ruby和简单的Ruby as CGI (每次请求都会启动Ruby解释器)上运行了一个Apache基准测试,mod_ruby大约快8倍,性能与PHP不相上下。
https://stackoverflow.com/questions/1559631
复制相似问题