# 影舞のインストール方法

ここでは、影舞のインストール方法について記述します。

影舞が動作するためには、Webサーバ と Ruby が必要ですが、 それらのインストール方法などについては、ここでは基本的に解説しません。 また、Webサーバの設定についての記述については、 Apache をベースにしていますので、 利用する環境に応じて適時読み替えてください。

## 目次

## Quick Start

ここでは、影舞をとりあえず動作させて試すための方法を記述します。

1. 影舞のアーカイブを Web アクセス可能な場所に、展開する

         $ cd /home/fukuoka/public_html
         $ tar xfvz kagemai-0.9.0.tar.gz
         $ mv kagemai-0.9.0 kagemai

2. guest.cgi がある場所に、Web サーバが書き込めるように適切にパーミッションを変更する
   4で、Web サーバによって kagemai.conf という設定ファイルが作成されます。 su_exec などが有効になっていれば、必要ないかもしれません。
3. html/guest.cgi に Web ブラウザからアクセスする
   http:/www.example.net/~fukuoka/kagemai/html/guest.cgi など。
   *.cgi ファイルが CGI プログラムとして扱われない場合には、 .htaccess などを設定してください。

         $ cat html/.htaccess
         Options +ExecCGI
         AddHandler cgi-script .cgi

4. "管理" -> "全体の設定変更" で、以下の部分を適当に変更する

   home_url | サイトのトップなど
   project_dir | プロジェクトのデータを保存する場所

5. project_dir で指定したディレクトリが存在しないなら、 Web サーバがそのディレクトリを作成できるようにパーミッションを変更しておく。
   あるいは、そのディレクトリをあらかじめ作成し、 Web サーバが書き込み権限を持つようにパーミッションを設定してください。
6. "管理" -> "プロジェクトの作成" で、プロジェクトを作成してみる
7. user.cgi, admin.cgi などに、必要に応じてアクセス制限をかける。
   html/dot.htaccess を参考にしてください。

         $ cat html/.htaccess
         <Files "*.conf*">
           deny from all
         </Files>

         <Files user.cgi>
           AuthName      Kagemai-User
           AuthType      Basic
           AuthUserFile  /etc/kagemai/user.passwd
           Require       valid-user
         </Files>

         <Files admin.cgi>
           AuthName      Kagemai-Administrator
           AuthType      Basic
           AuthUserFile  /etc/kagemai/admin.passwd
           Require       valid-user
         </Files>

## install_ja.rb を用いたインストール

ここでは、install_ja.rb を用いたインストールについて説明します。

1. kagemai グループの作成
   Web ブラウザからの利用の他に、メールでのデータの受付を行う場合には、 影舞のデータへのアクセス用のグループを作成しておきます。

         # groupadd kagemai

   そして、とりあえず Web サーバのユーザ(例えば apache)を作成したグループに追加します。

         # gpasswd -a apache kagemai

2. install_ja.rb の編集
   instann_ja.rb 内の、以下の変数を必要に応じて編集してください。

   $user | データ用ディレクトリのユーザのID。
   $group | データ用ディレクトリのグループのID。
   $root_dir | 影舞のライブラリ、リソースなどのディレクトリ
   $html_dir | Web からアクセス可能な、CGI スクリプトなどを置くディレクトリ
   $data_dir | プロジェクトのデータを保存するディレクトリ
   $passwd_dir | .htaccess での認証用のパスワードを置くディレクトリ

   $user, $gorup は指定する必要がなければ、それぞれコメントアウトしてください。
   $user を指定して、$group を指定しない場合には、データ用ディレクトリと、 そこに置かれるファイルのパーミッションは、それぞれ、0755, 0644 になります。 それ以外では、ディレクトリは 02775, ファイルは 0664 になります。
3. install_ja.rb の実行
   編集が終わったら、install_ja.rb を実行します。（必要なら root になって。）

         # ruby install_ja.rb

4. 動作の確認
   guest.cgi にアクセスして、正しく表示されるか確認します。
   正しく表示されるようであれば、 "管理" -> "プロジェクトの作成" で、プロジェクトを作成してみます。 プロジェクトが作成できるなら、そのプロジェクトでレポートを投稿してみます。

## mod_ruby の利用

影舞 0.8.0 以降から、mod_ruby で動作させることが可能になりました。 dot.htaccess を参考に、guest.cgi, user.cgi, admin.cgi がそれぞれ、 mod_ruby で起動するように設定してください。

*.cgi の拡張子をたとえば、.rbx に変更する場合には、例えば 以下のようにしてください。

1. guest.cgi, user.cgi, admin.cgi をそれぞれ *.rbx としてコピー

         $ cp -p guest.cgi guest.rbx
         $ cp -p user.cgi user.rbx
         $ cp -p admin.cgi admin.rbx

2. admin.cgi にアクセスして、"全体の設定" から以下の項目を変更する

         guest_mode_cgi : guest.rbx
         user_mode_cgi  : user.rbx
         admin_mode_cgi : admin.rbx

3. guest.rbx でアクセスしてみる

## FastCGI の利用

影舞 0.8.7 から、FastCGI 環境で動作させることが可能になりました。 guest.fcgi, user.fcgi, admin.fcgi を利用してください。

以下、Linux(Fedora7) でのセットアップ例です。

1. FastCGIのライブラリをインストールする
   FastCGI のサイトからダウンロードしてインストールします。

       $ wget http://www.fastcgi.com/dist/fcgi-2.4.0.tar.gz
       $ tar xfvz fcgi-2.4.0.tar.gz
       $ cd fcgi-2.4.0
       $ ./configure
       $ make
       $ su
       # make isntall

2. ruby の fcgi ライブラリをインストールする

       # gem install fcgi

3. mod_fcgid もしくは mod_fastcgi をインストールする
   Fedoraの場合であれば、yum でインストールできます。

       # yum install mod_fcgid

4. mod_fcgid もしくは mod_fastcgi の設定
   httpd.conf などに設定を追加します。パッケージとしてインストールした場合には、 必要ないかもしれません。(Fedora の場合であれば、/etc/httpd/conf.d/fcgid.conf として追加されています。)

       LoadModule fcgid_module modules/mod_fcgid.so
       <IfModule !mod_fastcgi.c>
           AddHandler fcgid-script fcgi
       </IfModule>

5. FastCGI の動作確認
   この段階で、FastCGI が正しく動作するか確認しておきます。 たとえば、以下のようなスクリプトを hello.fcgi として作成して動作を確認してください。

       #!/usr/bin/ruby

       require 'rubygems'
       require 'fcgi'

       FCGI.each_cgi {|cgi|
         print "Content-type: text/plain; charset=iso-8859-1\n\n";
         print "hello world\n"
       }

6. admin.cgi にアクセスして、"全体の設定" から以下の項目を変更する

         guest_mode_cgi : guest.fcgi
         user_mode_cgi  : user.fcgi

7. .htaccess の *.fcgi を拒否する設定を削除する
   影舞の配布ファイルに含まれる dot.htaccess を .hatccess として利用している場合には、 *.fcgi を拒否する設定になっているため、以下の設定を削除します。

       <Files *.fcgi>
         deny from all
       </Files>

8. guest.fcgiでアクセスしてみる。

## FastCGI の利用 (Windows/Apache2.2の場合)

ここでは、Windows 上の Apache 2.2 で影舞を FastCGI で動かす方法を説明します。

1. One-Click Installer 版の Ruby を入れる
   http://rubyforge.org/projects/rubyinstaller/ からダウンロードしてインストールしてください。One-Click Installer 版の Ruby ではなくてもかまいませんが、FastCGI で動かすために fcgi.so が必要になります。(One-Click Installer 版には含まれています。)
2. 影舞の CGI での動作を確認する
   FastCGI で動かす前に CGI で動作することを確認しておいてください。
3. mod_fastcgi をインストールする
   FastCGI のサイトから、Apache-Win32 用の DLL をダウンロードします(2008-03-01 時点での最新は mod_fastcgi-2.4.6-AP22.dll)。 ダウンロードした DLL の名前を mod_fastcgi.dll へと変更して、Apache の modules ディレクトリに入れます。
4. mod_fastcgi 用の設定を httpd.conf に追加する
   httpd.conf に以下のような設定を追加してください。

       LoadModule fastcgi_module modules/mod_fastcgi.dll
       AddHandler fastcgi-script fcgi
       FastCgiConfig -startDelay 30

   PostgreSQL や MySQL でのデータ保存を予定している場合には、FastCgiConfig ディレクティブで PostgreSQL や MySQL の DLL がインストールされているディレクトリの情報を環境変数 PATH として渡す必要があります。

       FastCgiConfig -initial-env PATH=C:\MySQL\bin

   FastCgiConfig -initial-env では、空白の入ったパスをうまく扱えないようです。 C:\Program Files 以下に MySQL などをインストールしている場合には、 必要な DLL (libmySQL.dllなど)をパスに空白のないディレクトリにコピーするか、 以下のように Apache の環境変数 PATH すべてを渡す設定を試してみてください。

       FastCgiConfig -initial-env PATH

5. FastCGI の動作確認
   この段階で、FastCGI が正しく動作するか確認しておきます。 たとえば、以下のようなスクリプトを hello.fcgi として作成して動作を確認してください。

       #!C:/ruby/bin/ruby.exe

       require 'rubygems'
       require 'fcgi'

       FCGI.each_cgi {|cgi|
         print "Content-type: text/plain; charset=iso-8859-1\n\n";
         print "hello world\n"
       }

6. admin.cgi にアクセスして、"全体の設定" から以下の項目を変更する

         guest_mode_cgi : guest.fcgi
         user_mode_cgi  : user.fcgi

7. guest.fcgi, user.fcgi の先頭の ruby のパスを書き換える

       #!/usr/bin/ruby

   をたとえば以下のように変更。

       #!C:/ruby/bin/ruby.exe

8. .htaccess の *.fcgi を拒否する設定を削除する
   影舞の配布ファイルに含まれる dot.htaccess を .hatccess として利用している場合には、 *.fcgi を拒否する設定になっているため、以下の設定を削除します。

       <Files *.fcgi>
         deny from all
       </Files>

9. guest.fcgiでアクセスしてみる。

## PostgreSQL の利用

ここでは、 PostgreSQL を用いてデータ保存を行うために必要な設定について説明します。 ただし、PostgreSQL 自体のインストールについては説明しません。また、 PostgreSQL を用いたデータの保存を行わない場合には、以下の設定は必要ありません。

1. Ruby/Postgres を入れる
   http://www.postgresql.jp/interfaces/ruby/index-ja.html からダウンロードするか、gem でインストールします。

          # gem install postgres

2. Ruby/DBI を入れる
   http://rubyforge.org/projects/ruby-dbi/ からダウンロードしてインストールします。

         $ tar xfvz dbi-0.1.1.tar.gz.tar.gz
         $ cd ruby-dbi
         $ ruby setup.rb config --with=dbi,dbd_pg,dbd_mysql
         $ ruby setup.rb setup
         $ su
         # ruby setup.rb install

3. 影舞用のデータベースを作成する
   エンコーディングとして UTF8 を指定してください。

         $ createdb --encoding UTF8 kagemai

4. PostgreSQL に影舞用のアカウントを作成する

         $ createuser kagemai
         Shall the new role be a superuser? (y/n) n
         Shall the new role be allowed to create databases? (y/n) n
         Shall the new role be allowed to create more new roles? (y/n) n
         CREATE ROLE

5. "全体の設定の変更" で、enable_postgres を true にする
   また、以下の項目を設定する。

   postgres_host | PostgreSQL が動作しているホスト名。Unix ドメインソケットを利用している場合には、PostgreSQL で設定したディレクトリを指定。デフォルトは、/tmp。
   postgres_port | TCP で接続する場合のポート番号
   postgres_user | PostgreSQL アカウントのユーザ名
   postgres_pass | PostgreSQL アカウントのパスワード
   postgres_dbname | PostgreSQLの影舞用のデータベース名

6. プロジェクトの作成で、データの保存形式として、 PostgresStore4 が選択可能になっていることを確認する
7. データの保存形式として PostgresStore4 を選んでプロジェクトを作成してみる

## MySQL の使用

ここでは、MySQL を用いてデータ保存を行うために必要な設定について説明します。

1. MySQL/Rubyを入れる
   http://www.tmtm.org/mysql/ruby/ からダウンロードするか、gem でインストールします。

          # gem install mysql

2. PostgreSQL 用の設定と同じように Ruby/DBI を入れる
3. MySQL に影舞用のデータベースを作成する

         $ mysql -u root -p
         mysql> create database kagemai;

4. MySQL に影舞用のユーザを作成する
   影舞用のデータベースにアクセスできるユーザーを作成します。

         mysql> grant all on kagemai.* to kagemai@localhost;

   必要に応じて、パスワードも設定してください。
5. "全体の設定の変更" で、enable_mysql を true にする
   また、以下の項目を設定する。

   mysql_host | MySQLが動作しているホスト名。デフォルトは、'localhost'。
   mysql_port | MySQLのポート番号。デフォルトは 3306。
   mysql_user | MySQLのユーザ名
   mysql_pass | MySQLのパスワード
   mysql_dbname | MySQLの影舞用のデータベース名

6. プロジェクトの作成で、データの保存形式として、 MySQLStore4 が選択可能になっていることを確認する
7. データの保存形式として MySQLStore4 を選んでプロジェクトを作成してみる

## SQL Server の使用

ここでは、SQL Server を用いてデータ保存を行うために必要な設定について説明します。

1. PostgreSQL 用の設定と同じように Ruby/DBI を入れる
   config の設定で、--width=dbi,dbd_ado を指定します。

         > tar xfvz dbi-0.1.1.tar.gz.tar.gz
         > cd ruby-dbi
         > ruby setup.rb config --with=dbi,dbd_ado
         > ruby setup.rb setup
         > ruby setup.rb install

2. SQL Server に影舞用のユーザを作成する
3. SQL Server に影舞用のデータベースを作成する
4. "全体の設定の変更" で、enable_mssql を true にする
   また、以下の項目を設定する。

   mssql_dsn | SQL Server のデータベースの指定。デフォルトは、"Provider=SQLOLEDB;Server=.\SQLEXPRESS;Database=kagemai" になっています。 Server にSQL Server のサーバ\インスタンス名（上の例では、ローカルホスト上のSQL Server Expressのデフォルト名）、Databaseにデータベースの名前を指定します。Providerは通常 SQLOLEDEB のままです。
   mssql_user | SQL Serverのユーザ名
   mssql_pass | SQL Server のパスワード

5. プロジェクトの作成で、データの保存形式として、 MSSqlStore4 が選択可能になっていることを確認する
6. データの保存形式として MSSqlStore4 を選んでプロジェクトを作成してみる

## RMagickを用いた画像認証

RMagick をインストールすることで、ゲストによる投稿に画像認証をかけることができます。

1. RMagick をいれる

         # gem install RMagick

   ImageMagick をインストールしていない場合には、先に ImageMagick をインストールしてください。
2. captcha_font, captcha_char_length の設定
   影舞の全体の設定で、captch_font に画像認証に使用する TrueType フォントのパスを設定してください。 また、captcha_char_length に画像認証で表示するの文字の長さを設定してください（1以上）。
3. 動作の確認
   ゲストで新規投稿とリプライのフォームを開いて、それぞれ画像認証が追加されていることを確認します。

## GD, GDChart を用いたグラフの作成

GD と GDChart をインストールすれば、レポート数の累積グラフを表示できます。 グラフが必要なければ、以下の設定を行う必要はありません。

以下の説明でインストールするライブラリは、 http://www.daifukuya.com/archive/kagemai/lib/ にも置いてあります。影舞の動作確認に使用したバージョンが置いてありますが、 各ライブラリは最新のものでは無いかもしれません。

1. GD を入れる 必要に応じて、http://www.boutell.com/gd/ からダウンロードしてインストールします。
   PNG と TrueType フォントを有効にするためには、libpng, zlib, FreeType があらかじめインストールされている必要があります。(少なくとも、GD 2.0.15 では configure スクリプトを走らせれば、それぞれのライブラリを使用できるかどうか表示されます。)

         $ tar xfvz gd-2.0.15.tar.gz
         $ cd gd-2.0.15
         $ CFLAGS="-g -O2 -DJISX0208" ./configure
         ...(snip)...
         ** Configuration summary for gd 2.0.15:

          Support for PNG library:          yes
          Support for JPEG library:         yes
          Support for Freetype 2.x library: yes
          Support for Xpm library:          yes
         ...(snip)...
         $ make
         $ sudo make install

2. Ruby/GD を入れる
   http://raa.ruby-lang.org/project/ruby-gd からダウンロードしてインストールします。
   --with-ttf, --with-freetype を configure 時に指定する必要があります。

         $ tar xfvz ruby-GD-0.7.4.tar.gz
         $ cd ruby-GD-0.7.4
         $ ruby extconf.rb --with-ttf --with-freetype
         $ make
         $ sudo make install

3. Ruby/GDChart を入れる
   http://sourceforge.jp/projects/ruby-gdchart/ からダウンロードしてインストールします。(Ruby/GDChart は GDChart の拡張ライブラリですが、 GDChart は Ruby/GDChart のアーカイブに含まれています。)

         $ tar xfvz ruby-gdchart-0.0.9-beta.tar.gz
         $ cd ruby-gdchart-0.0.9-beta
         $ ruby extconf.rb
         $ make
         $ sudo make install

4. enable_gdchart, gd_font, gd_charset の設定
   影舞の全体の設定で、enable-gdchart オプションを true に設定します。そして、gd-font に、日本語の TrueType フォントのパスを指定します。
   また、GD が -DJISX0208 オプションつきでコンパイルされていない場合は、gd_chasert を UTF-8 に設定してください。
5. 動作の確認
   レポートが１つ以上投稿されているプロジェクトの統計ページを開いて、 グラフが表示されることを確認します。
   統計ページはキャッシュされるため、レポートやリプライの投稿を行うか、 プロジェクトディレクトリの cache/cache.pstore ファイルを削除しないと変更が反映されないかもしれません。

## メールインタフェースの設定

メールインタフェースを使用するには、まず、mailif.rb 中の kagemai_root, config_file, $LOGFILE の３つの変数が適切に設定されている必要があります。 (install_ja.rb でインストールした場合には、 インストールした時点で自動的に適切な値に設定されます。)

プロジェクトを作成すると、そのプロジェクト用に、 sendmail などで使用可能な include ファイルが作成されます。 これは、例えば以下のような内容になっています。

      $ cat /var/lib/kagemai/project/test/include
      "|/usr/bin/ruby /usr/local/kagemai/bin/mailif.rb test"

ここで、'test' はプロジェクトの ID です。

sendmail であれば、このファイルを呼び出すように /etc/aliases を編集して、 /etc/aliases.db を更新します。

      # grep 'test-bugs' /etc/aliases
      test-bugs: :include:/var/lib/kagemai/project/test/include
      # /usr/bin/newaliases

include はデフォルトでは group writable なディレクトリに置かれます。 必要に応じて別のディレクトリに移動させて使用してください。

デフォルトのメールテンプレートでは、投稿されたレポートに対応した BTS 上の URL が挿入されますが、正しい URL を入れるためには、"全体の設定の変更" で、 base_url を適切に設定してください。base_url は、guest.cgi がある場所まで の URL です。 例えば、guest.cgi が 'http://www.example.net/kagemai/guest.cgi' にある場合には、 base_url は 'http://www.example.net/kagemai/' に設定します。

また、投稿されたメールが新規のレポートなのか、 既存のレポートへのリプライなのかは、 そのメールの 'Subject', 'In-Reply-To' ヘッダを用いて自動的に判定されます。

## 手動でのインストール例

ここでは、すべての設定を手動で行った場合のインストール例を示します。

1. インストールするディレクトリの決定

         影舞のライブラリなど : /usr/local/kagemai
         CGI スクリプトなど   : /var/www/html/kagemai
         データ用ディレクトリ : /var/lib/kagemai

   また、/var/www/html/kagemai に置かれたファイルは、 http://www.example.net/kagemai/ という URL でアクセス可能であるとします。
2. ディレクトリの作成と、ファイルのコピー

         $ tar xfvz kagemai-0.8.7.tar.gz
         $ cd kagemai-0.8.7

         $ su
         # mkdir /usr/local/kagemai
         # mkdir /var/www/html/kagemai
         # mkdir /var/lib/kagemai
         # mkdir /var/lib/kagemai/project

         # cp -pr bin /usr/local/kagemai
         # cp -pr lib /usr/local/kagemai
         # cp -pr resource /usr/local/kagemai
         # cp -p html/* /var/www/html/kagemai

3. ファイル中のパスの編集
   以下のファイルの、(a) 先頭の ruby のパス, (b) kagemai_root, (c) config_file を修正する。
   - /usr/local/kagemai/bin/convert.rb
   - /usr/local/kagemai/bin/mailif.rb
   - /usr/local/kagemai/bin/migrate.rb
   - /var/www/html/kagemai/guest.cgi
   - /var/www/html/kagemai/user.cgi
   - /var/www/html/kagemai/admin.cgi
   ここでは、kagemai_root は、'/usr/local/kagemai' に、 config_file は、'/var/www/html/kagemai/kagemai.conf' とする。
   また、mailif.rb 中の $LOGFILE を、'/var/lib/kagemai/mailif.log' にする。
4. kagemai グループの追加とパーミッションの設定

         # groupadd kagemai
         # cd /var/lib
         # chgrp -R kagemai kagemai
         # chmod -R 02770 kagemai

   また、apache を kagemai group に追加します。

         # gpasswd -a apache kagemai

5. 全体の設定で以下の変数を修正

         project_dir : /var/lib/kagemai
         base_url    : http://www.example.net/kagemai/

以上。