Подводя итог всем прекрасным советам в этих ответах и самому вашему вопросу (я должен был сделать каждую из этих вещей, так как я начинал с чистого листа):
httpd.conf
Настройте каталог CGI с помощью:
- Опция
+ExecCGI
- Контроль доступа, который позволяет посетителям, которых вы хотите (например,
Require all granted
)
- Установить обработчик для сценариев CGI с помощью
AddHandler
или SetHandler
(см. Примечание ниже)
Пример:
<Directory /home/ceriak/ruby>
Options +ExecCGI
AddHandler cgi-script .rb
Require all granted
</Directory>
Примечание : чтобы использовать CGI без необходимости использовать конкретное расширение файла, например .rb
, вместо него можно использовать SetHandler
:
SetHandler cgi-script
Теперь все в каталоге будет обрабатываться как CGI-скрипт, который, вероятно, в любом случае вам нужен, и вы можете оставить расширения отключенными, что может выглядеть лучше и / или не информировать посетителей о базовой технологии: http://example.com/test
Наконец, убедитесь, что mod_cgi
включено (где ${modpath}
правильно для вашей системы):
LoadModule cgi_module ${modpath}/mod_cgi.so
Не забудьте перезапустить Apache после внесения изменений. На Slackware, например, мы делаем это:
$ sudo /etc/rc.d/rc.httpd restart
Сценарий
Не забудьте о взрывах (#!
) для запуска сценария с интерпретатором Ruby.
Выведите Content-type
, символ новой строки, а затем текст вашего ответа:
#!/usr/bin/env ruby
puts "Content-type: text/html"
puts
puts "<html><body>Hello World!</body></html>"
Убедитесь, что файл является исполняемым (от Apache!):
$ chmod +x /home/ceriak/ruby/test.rb
Эти два документа Apache очень полезны:
https://httpd.apache.org/docs/2.4/howto/cgi.html
https://httpd.apache.org/docs/current/mod/mod_cgi.html