どぅーちゅいむーにー

これ、Twitterでよくね?という日々の記録かも

Ubuntu 10.10 に OpenSlide 環境構築(後編)

前編で、OpenSlideに必要なその他ツールをインストールしました。
具体的には、以下のものです。

swftools のほうはソースからビルドすることになりましたが、CentOS でのあの挫折はなんだったんだ?というぐらい、そんなに時間をかけずにすべてインストールすることができました。
まぁ、まだ動かしていないので、実際に動くかどうかはこれから検証という感じですが。


以下、OpenSlide 本体のインストールと、Apache の設定へと続きますが、残念ながら、unoconv がうまく動作せず、うまくいきません。
Ubuntu環境編unoconv 動作確認編のほうもご参照ください。


OpenSlide のインストールについての説明によると、OpenSlide を動かすための設定は、ApacheCGI が動作するように設定し、DocumentRoot に OpenSlide のファイルを展開して setup.sh を実行する感じのようです。

apt-get でインストールした場合、apache の設定ディレクトリは /etc/apache2 以下になります。
ps でプロセスをみると、本体は /usr/sbin/apache2 なので、以下のようにバージョンを確認(別にしなくても良いかもしれませんが)。


% /usr/sbin/apache2 -v
Server version: Apache/2.2.16 (Ubuntu)
Server built: Nov 18 2010 21:18:30
最近、ApacheTomcat など、JavaJ2EE コンテナとの連携しかやっていないので、CGI を動作させる方法については実はよくわかっていません。
OpenSlide のほうの説明では、apache2.conf の適当な場所に下記の記述を追加します。

AddHandler cgi-script .cgi
...


Options All
....
snip

とあったのですが、そううまくいくはずもなく。


CGI といえば、http://サーバ/cgi-bin/hoge.cgi という形式でアクセスするイメージ。
ちょっと調べてみたところ、Ubuntu に普通に(apt-get で?)インストールした場合、/usr/lib/cgi-bin/ が CGI の置き場所となる、という情報が得られ、実際に /usr/lib/cgi-bin というディレクトリがあったので、OpenSlide のほうに提示されている


#!/usr/bin/env perl
# sample.cgi

print "Content-type: text/plain\n\n";
print "Hello World\n";
を sample.cgi という名前で /usr/lib/cgi-bin/ に置いてみた。
そんでもって、ブラウザより http://サーバ/cgi-bin/sample.cgi でアクセスすると、Heelo World は問題なく表示されました。
が、OpenSlide のインストールについての説明をみると、http://サーバ/openslide/ でアクセスすることになる、ということなので、cgi-bin 以下で sample.cgi が動いただけだときっとダメだよなぁと思い、sample.cgi を、DocumentRoot となる /var/www/ に置いて http://サーバ/sample.cgi でアクセスしてみた。
結果は、CGI の中身が直接表示され、動きませんでした(当たり前ですが)。


というわけで、調査開始。


まず、/etc/apache2/apache2.conf に、CGI の設定らしきものは見つかりません。
apache2.conf の最後に

# Include the virtual host configurations:
Include sites-enabled/
という記述を発見。sites-enabled/ を見てみる(以下、root で実行しています)。

# pwd
/etc/apache2
# ls -l sites-enabled/
合計 0
lrwxrwxrwx 1 root root 26 2011-02-04 13:44 000-default -> ../sites-available/default
この形式、Debian だと普通なのかもしれませんが、CentOS ばかり使っているわたくし的にはちょいと違和感があったりします・・・(ただ、2010年の初めのころに PerlCGI を作成するプロジェクトで見たことのある構成だったのが幸い)。
というわけで、sites-available/default をみてみると・・・


ServerAdmin webmaster@localhost

DocumentRoot /var/www

Options FollowSymLinks
AllowOverride None


Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all

・・・

という感じになっていて、DocumentRoot や CGI の設定もこれで納得。


前述しましたが、CGI の設定方法はよくわかっていなかったので、「apache2 conf CGI 設定」という感じで調べてみると次のページを発見。
http://httpd.apache.org/docs/2.0/ja/howto/cgi.html
この中に「CGI の実行を可能にするために Options を明示的に使用する」というセクションがあり、それをみると


Options +ExecCGI

という感じでエントリを書けば良いことがわかりました。
この設定例の直後に、OpenSlide のインストールについての説明にもある

AddHandler cgi-script .cgi .pl
という記述があったので、まずは試しに、DocumentRoot を次のようにしてみた。


Options Indexes FollowSymLinks MultiViews
AllowOverride None
Options +ExecCGI       ←ここ
AddHandler cgi-script .cgi  ←ここ
Order allow,deny
allow from all

「ここ」の2行を追加です。
apache を再起動(/etc/init.d/apache2 restart)し、http://サーバ/sample.cgi にアクセスすると、めでたく sample.cgi が実行されました。

  • OpenSlide のセットアップ

というわけで、OpenSlide をOpenSlide のインストールについての説明の通り、/var/www/openslide/ に展開し、setup.sh を実行(※ /var/www/ にグループ権限を付与して、root 以外のユーザ、具体的には Ubuntu インストール時に定義したアカウントが書き込みできるようにし、setup.sh はそのアカウントで実行しています)。
※現時点では、openslide の展開先は /var/www/openslide/ でなければならないかもしれません(unoconv 呼び出し時のパスが /var/www/openslide/ 前提の実装となっています。ただ、ここは setup.sh で設定されているかもしれませんので、他の場所でも大丈夫かもしれません)。


% ./setup.sh

# openslide setup (for 0.01)...
prepare...
OPENSLIDE_HOME=.
check ./index.cgi...
ok
do...
check ./data...
check ./user...
.
./config
./lang
./lang/fr
./lang/en
./lang/ja
./lang/ch
・・・(略)・・・
./unoconv.sh
./index.cgi
done

この状態で http://サーバ/openslide/ にアクセスしてみましたが、/var/www/openslide/index.cgi の中身(おそらく)が表示されました。
ええ、Apache の設定が足りていません。 に対して CGI を許可(?)したら再帰的に許可されないかなぁ、というもくろみは通じかなかったっていうことです。
というわけで、/etc/apache2/sites-available/default に以下のエントリを追加。


Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
#2011.02.04
Options +ExecCGI
AddHandler cgi-script .cgi
allow from all

なお、/var/www/ に対して設定した Options +ExecCGI と AddHandler cgi-script は削除しました。


apache を再起動し、再度 http://サーバ/openslide/ にアクセス・・・
無事、画面が表示されました!(ただ、openslide/ のサブディレクトリで cgi が実行される必要がある場合、今回追加した Directory のエントリは修正する必要があるんでしょうねぇ)


  • まず1つファイルをみれるようにしてみる

OpenSlide のインストールについての説明の最後のほうに、admin のアカウント情報があるかと思いますので、画面右上のほうにある login リンクより、ログイン。


ログインが成功したら、画面右上にある add リンクをクリック

ファイル選択の画面になりますので、参照ボタンよりファイルを選択してアップロードボタンを押下。


・・・
残念ながら簡単にはいきませんでした。
というわけで、unoconv 動作確認編に続く。