CGIなんて久しく使っていなかったのでメモっておく.
Apache2を入れる.
とりあえずコレ的な.
$ sudo apt install apache2
Rubyも入れる
$ sudo apt install ruby
CGIを有効にする
Debian系の設定は初めてで戸惑った.
$ sudo a2enmod cgid
apacheを再起動.
$ sudo systemctl restart apache2
CGIを有効にする(2)
設定ファイルを変更する.
以下を変更.
(普通は上書きしないと思うが, 手抜き)
/etc/apache2/sites-available/000-default.conf
下記をVirtualHost内に追加する.
ディレクトリは
/var/www/cgi-bin
を使うのが一般的だと思うけど, 諸事情でhomeに作った.
ScriptAlias /cgi-bin/ "/home/twinbird/cgi-bin/" AddHandler cgi-script .cgi .rb <Directory "/home/twinbird/cgi-bin"> AllowOverride None Require all granted Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory>
別にやらなくても良いと思うけど, ServerNameをGlobal設定しておくと警告も消えた.
ここまでやったらapache2を再起動.(またはリロード)
sudo systemctl restart apache2
CGIを実行にする
業界の常識に従い, とりあえず挨拶しておく.
上記設定のディレクトリ(この場合は/home/twinbird/cgi-bin/)へ以下を配置.
#!/usr/bin/ruby # /home/twinbird/cgi-bin/sample.cgi require 'cgi' cgi = CGI.new puts cgi.header puts "Hello, world"
権限変更しておく.
$ sudo chmod +x sample.cgi # 705にするのがよかろう
ブラウザで
localhost/cgi-bin/sample.cgi
へアクセスして挨拶されればOK.
RubyでCGIとか学生以来じゃなかろうか.
cgi.headerをputsしてなくて30分以上ハマったのはココだけの話.