AzaraC on さくらインターネット

AzaraCとさくらインターネットのレンタルサーバ

このドキュメントでは、AzaraCを使ってさくらインターネットのレンタルサーバ上で高速なCGIを構築する方法について書かれています。

さくらインターネットのレンタルサーバの仕様の確認

スタンダード以上じゃないとgccが使えなかったと思います(未確認)。とりあえず、AzaraCに関わるサーバの仕様は以下のような感じです。

AzaraCのインストール

それでは、サーバAzaraCをサーバ上にインストールします。まず、sshでサーバにログインします。次にAzaraCのソースコードをダウンロードして解凍します。

 % cd /home/bluedwarf
 % wget http://labs.preferred.jp/azarac/download/azarac-0.2.0.tar.gz
 % tar xvfz azarac-0.2.0.tar.gz
 % cd azarac-0.2.0

ソースコードのURLとバージョンについてはAzaraCのダウンロードページを参照してください。ここでは、バージョン0.2.0を扱います。また、サーバ上でのユーザ名は bluedwarf と仮定します。

次にAzaraCをコンパイルしてインストールするのですが、バージョン0.2.0はこのままではこのサーバ上でコンパイルに失敗するので、私が作ったパッチ azarac_patch_for_sakura.diff を当ててコンパイルします。

 % wget http://bd.tank.jp/azarac/azarac_patch_for_sakura.diff
 % patch -p1 < azarac_patch_for_sakura.diff
 % ./configure --prefix=/home/bluedwarf
 % make
 % make install

これでインストールは完了です。

Hello, World!

さて、次に Hello, World! とだけ表示するCGIを作ってみましょう。基本的には、AzaraCのチュートリアルに従っているので、詳細な説明はそちらに任せます。このチュートリアルではさくらインターネットのレンタルサーバ上でCGIを作成するのに必要な詳細な手順を示します。

とりあえずディレクトリを作ります。www以下であればどのような名前のディレクトリでも構いません。

 % mkdir /home/bluedwarf/www/azarac
 % cp /home/bluedwarf/www/azarac

次に、FTPかなんかで hello.tpl と hello.cpp を /home/bluedwarf/www/azarac に作成します。それぞれのファイルの中身は、以下の通りです。

hello.tpl

<%@ page Content-Type="text/html;" %>
<html>
<body>
Hello, World!
</body>
</html>

hello.cpp

#include <azarac/azarac.h>
using namespace azarac;

int main()
{
  setenv("AZARAC_LIBRARY_PATH", "/home/bluedwarf/lib", 0);   setenv("AZARAC_INCLUDE_PATH", "/home/bluedwarf/include", 0);   display("./hello.tpl");
}

ベースはAzaraCのチュートリアルのものを利用していますが、hello.cppに少し変更が加えてあります。

この変更はテンプレートのコンパイルエラーを回避するものです。 AzaraCの中で g++ コマンドを呼び出すのですが、AzaraCのライブラリとヘッダファイルがそれぞれ /home/bluedwarf/lib, /home/bluedwarf/include にインストールされているので、そのままだと azarac/azarac.h が見つからずにテンプレートのコンパイルエラーが発生します。そこで、 setenv関数で AZARAC_LIBRARY_PATHとAZARAC_INCLUDE_PATH環境変数に各ディレクトリを設定しておきます。すると、私のパッチがあたったAzaraCでは、テンプレートのコンパイルに成功します。

さて、最後にhello.cppをコンパイルします。

 % g++ -lazarac -rdynamic -o hello.cgi hello.cpp -I/home/bluedwarf/include -L/home/bluedwarf/lib -rpath /home/bluedwarf/lib

ここでのポイントは2点。
一つは、出力ファイル名のサフィックスは "*.cgi" というようにすることです。さくらインターネットのレンタルサーバでは、サフィックスがcgiでなければCGIとして実行できません。
もう一つは、-rpathオプションをつけることです。CGI実行時に、LD_LIBRARY_PATH環境変数をいちいち指定することはできませんので、あらかじめAzaraCのライブラリがどこにあるのかをコンパイル時に指定します。

テスト & 実行

これでコンパイルまで無事に済んだのでテストしてみましょう。

 % ./hello.cgi

HTTPプロトコルのヘッダとHTML形式の文字列が表示されれれば成功です。

ブラウザで、http://bluedwarf.sakura.ne.jp/azarac/hello.cgi に相当するURLを開くと、"Hello, World!"と表示するCGIが実行されます。

Use OpenOffice.org Get Firefox!