Рубин на Apache с mod_ruby - PullRequest
       9

Рубин на Apache с mod_ruby

5 голосов
/ 13 октября 2009

Я действительно хочу запустить код ruby ​​на сервере Apache. У меня установлены libapache2-mod-ruby и libapache-ruby1.8 (полный список установленных здесь ). Что мне теперь делать, чтобы запустить его ( здесь пример)?

Ответы [ 2 ]

3 голосов
/ 03 сентября 2014

Вот краткое руководство , чтобы запустить и запустить mod_ruby. Краткое описание шагов, которые я использовал в Ubuntu 12.04, приведено здесь:

Установить mod_ruby для apache:

sudo apt-get install libapache2-mod-ruby

Чтобы включить mod_ruby для всех файлов в / var / www, отредактируйте ваш файл конфигурации apache, т.е. /etc/apache2/sites-enabled/000-default

Мне пришлось добавить +ExecCGI к Options и добавить раздел, относящийся к Ruby:

<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 / тип контента из скрипта. Вы должны установить его глобально для всех скриптов ruby ​​с помощью директивы AddType text/html rb.

Наконец, вам нужен тестовый скрипт в / var / www, и он должен быть исполняемым. Например, у меня есть /var/www/test.rb:

<code>#!/usr/bin/ruby

puts "Hello World!<br><pre>"

ENV.each { |k,v|
  puts "#{k}=#{v}"
}

puts "
»

Не забудьте сделать его исполняемым:

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

Я выполнил тест Apache для mod_ruby по сравнению с простым Ruby как CGI (который запускает интерпретатор Ruby при каждом запросе), и mod_ruby был примерно в 8 раз быстрее и на уровне производительности PHP.

2 голосов
/ 13 октября 2009

mod-ruby на самом деле не является предпочтительным способом общения в сообществе ruby.

Самый простой способ запустить его для установки пассажира (через самоцвет) и настроить Apache для его использования.

Это действительно легко сделать,

Вы можете следовать официальному руководству здесь: http://www.modrails.com/install.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...