前編で、OpenSlideに必要なその他ツールをインストールしました。
具体的には、以下のものです。
swftools のほうはソースからビルドすることになりましたが、CentOS でのあの挫折はなんだったんだ?というぐらい、そんなに時間をかけずにすべてインストールすることができました。
まぁ、まだ動かしていないので、実際に動くかどうかはこれから検証という感じですが。
以下、OpenSlide 本体のインストールと、Apache の設定へと続きますが、残念ながら、unoconv がうまく動作せず、うまくいきません。
Ubuntu環境編、unoconv 動作確認編のほうもご参照ください。
OpenSlide のインストールについての説明によると、OpenSlide を動かすための設定は、Apache で CGI が動作するように設定し、DocumentRoot に OpenSlide のファイルを展開して setup.sh を実行する感じのようです。
- Apache の設定
apt-get でインストールした場合、apache の設定ディレクトリは /etc/apache2 以下になります。
ps でプロセスをみると、本体は /usr/sbin/apache2 なので、以下のようにバージョンを確認(別にしなくても良いかもしれませんが)。
最近、Apache は Tomcat など、Java の J2EE コンテナとの連携しかやっていないので、CGI を動作させる方法については実はよくわかっていません。
% /usr/sbin/apache2 -v
Server version: Apache/2.2.16 (Ubuntu)
Server built: Nov 18 2010 21:18:30
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 のほうに提示されている
を sample.cgi という名前で /usr/lib/cgi-bin/ に置いてみた。
#!/usr/bin/env perl
# sample.cgi
print "Content-type: text/plain\n\n";
print "Hello World\n";
そんでもって、ブラウザより 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 の最後に
という記述を発見。sites-enabled/ を見てみる(以下、root で実行しています)。
# Include the virtual host configurations:
Include sites-enabled/
この形式、Debian だと普通なのかもしれませんが、CentOS ばかり使っているわたくし的にはちょいと違和感があったりします・・・(ただ、2010年の初めのころに Perl で CGI を作成するプロジェクトで見たことのある構成だったのが幸い)。
# pwd
/etc/apache2
# ls -l sites-enabled/
合計 0
lrwxrwxrwx 1 root root 26 2011-02-04 13:44 000-default -> ../sites-available/default
というわけで、sites-available/default をみてみると・・・
という感じになっていて、DocumentRoot や CGI の設定もこれで納得。
ServerAdmin webmaster@localhostDocumentRoot /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
・・・
前述しましたが、CGI の設定方法はよくわかっていなかったので、「apache2 conf CGI 設定」という感じで調べてみると次のページを発見。
http://httpd.apache.org/docs/2.0/ja/howto/cgi.html
この中に「CGI の実行を可能にするために Options を明示的に使用する」というセクションがあり、それをみると
という感じでエントリを書けば良いことがわかりました。
Options +ExecCGI
この設定例の直後に、OpenSlide のインストールについての説明にもある
という記述があったので、まずは試しに、DocumentRoot を次のようにしてみた。
AddHandler cgi-script .cgi .pl
「ここ」の2行を追加です。
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Options +ExecCGI ←ここ
AddHandler cgi-script .cgi ←ここ
Order allow,deny
allow from all
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 で設定されているかもしれませんので、他の場所でも大丈夫かもしれません)。
この状態で http://サーバ/openslide/ にアクセスしてみましたが、/var/www/openslide/index.cgi の中身(おそらく)が表示されました。
% ./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
ええ、Apache の設定が足りていません。
というわけで、/etc/apache2/sites-available/default に以下のエントリを追加。
なお、/var/www/ に対して設定した Options +ExecCGI と AddHandler cgi-script は削除しました。
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
#2011.02.04
Options +ExecCGI
AddHandler cgi-script .cgi
allow from all
apache を再起動し、再度 http://サーバ/openslide/ にアクセス・・・
無事、画面が表示されました!(ただ、openslide/ のサブディレクトリで cgi が実行される必要がある場合、今回追加した Directory のエントリは修正する必要があるんでしょうねぇ)
- まず1つファイルをみれるようにしてみる
OpenSlide のインストールについての説明の最後のほうに、admin のアカウント情報があるかと思いますので、画面右上のほうにある login リンクより、ログイン。
ログインが成功したら、画面右上にある add リンクをクリック
ファイル選択の画面になりますので、参照ボタンよりファイルを選択してアップロードボタンを押下。
・・・
残念ながら簡単にはいきませんでした。
というわけで、unoconv 動作確認編に続く。