Настройка Ruby CGI в Apache

Я хочу использовать Ruby в Apache через CGI. В моем файле конфигурации есть следующее:

DocumentRoot /home/ceriak/ruby

<Directory /home/ceriak/ruby>
    Options +ExecCGI
    AddHandler cgi-script .rb
</Directory>

test.rb - это тестовый файл, помещенный в /home/ceriak/ruby/, #!/usr/bin/ruby, включенный в первую строку и заданный исполняемый файл. Тем не менее, когда я навещаю localhost/test.rb, я получаю окно загрузки и могу получить исходный код.

Интересно, когда я помещаю те же script под /usr/lib/cgi-bin/ и вызываю localhost/cgi-bin/test.rb, он работает как предполагается.

(Apache2 на Ubuntu 9.10.)

Любая идея?

Ответ 1

Несколько вещей, которые нужно проверить:

  • Ваш исполняемый файл? Вы можете сделать его выполнимым, перейдя chmod +x /path/to/file
  • Вы выводили правильный тип контента?
  • есть ли между вашими заголовками и вашим выходом пустая новая строка?
  • Вы перезапустили Apache после настройки конфигурации?

Если вы сделали все это, он должен работать нормально. У меня это как файл test.rb:

#!/usr/bin/env ruby

puts <<EOS
Content-type: text/html

<html><body>hi</body></html>
EOS

Ответ 2

Я столкнулся с той же ситуацией и смог исправить ее, добавив следующую строку после AddHandler:

Require all granted

Ответ 3

Двойная проверка того, что mod_cgi включен; по умолчанию Yosemite http.conf отключен.