Pour résumer tous les bons conseils donnés dans ces réponses et dans votre question elle-même (j'ai dû faire chacune de ces choses puisque je partais d'une page blanche) :
httpd.conf
Configurer le répertoire CGI avec :
- En
+ExecCGI
option
- Un contrôle d'accès qui autorise les visiteurs que vous souhaitez (
Require all granted
par exemple)
- Définir un gestionnaire pour les scripts CGI avec
AddHandler
ou SetHandler
(voir note ci-dessous)
Exemple :
<Directory /home/ceriak/ruby>
Options +ExecCGI
AddHandler cgi-script .rb
Require all granted
</Directory>
Note : pour utiliser les CGI sans avoir à utiliser une extension de fichier spécifique telle que .rb
vous pouvez utiliser SetHandler
à la place :
SetHandler cgi-script
Maintenant, tout ce qui se trouve dans le répertoire sera traité comme un CGI script, ce qui est probablement ce que vous voulez de toute façon et vous pouvez laisser les extensions désactivées, ce qui peut paraître plus joli et/ou ne pas informer les visiteurs de la technologie sous-jacente : http://example.com/test
Enfin, vérifiez que mod_cgi
est activé (où ${modpath}
est correcte pour votre système) :
LoadModule cgi_module ${modpath}/mod_cgi.so
N'oubliez pas de redémarrer Apache après avoir effectué vos modifications. Sur Slackware, par exemple, nous faisons cela :
$ sudo /etc/rc.d/rc.httpd restart
Le script
N'oubliez pas le "she-bang" ( #!
) pour exécuter le script avec l'interpréteur Ruby.
Sortie a Content-type
, un saut de ligne, puis le corps de votre réponse :
#!/usr/bin/env ruby
puts "Content-type: text/html"
puts
puts "<html><body>Hello World!</body></html>"
Assurez-vous que le fichier est exécutable (par Apache !):
$ chmod +x /home/ceriak/ruby/test.rb
Ces deux documents Apache sont très utiles :
https://httpd.apache.org/docs/2.4/howto/cgi.html
https://httpd.apache.org/docs/current/mod/mod_cgi.html