write ahead log

ロールフォワード用

Ubuntu(17.10)上で手っ取り早くRuby + Apache2でCGIを使う

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分以上ハマったのはココだけの話.