TABLE OF CONTENTS
install - img0chのインストール方法
img0chのインストールに必要条件は以下の通りです。 ほとんどのレンタルサーバーで動作するように作成しています。
sourceforge.jpのダウンロードページからファイルをダウンロードし、解凍します。
圧縮形式はzip、tar.bz2、7z形式でそれぞれ圧縮されていますが、いずれも中身は同一です。
Windowsの場合は組込みの解凍ウィザードまたは解凍ソフト(+Lhaca、Lhaplusなど)で ファイルをクリックすると展開が行われます。Uni*系統の場合はunzipコマンドで展開します。
Windowsの場合は解凍ソフト(Lhaplusなど)でファイルをクリックすると展開が行われます。 Uni*系統の場合はbunzip2コマンドで展開します。
Windowsの場合は http://www.7-zip.org/ja/download.html から ソフトをダウンロードし、インストールします。Uni*形式の場合は7zコマンドを使って展開します。 上記URLのsourceforgeのリンク経由でダウンロードページをたどり、ソース形式または バイナリ形式をダウンロードし、インストールします。ソース形式の場合はコンパイルが必要になります。
img0ch/test/ディレクトリに移動し、その中のimg0ch-config.cgi.defaultを開きます。 編集が完了したらimg0ch-config.cgi.defaultを img0ch-config.cgiにファイルの名前を変更(リネーム)してください。
以下の設定値を自分のサイトのディレクトリ構造にあわせて変更してください。 なお、configもあわせて参照してください。
通常変更が必要な値はRepositoryRootとzeromin2.session_dirです。
自分のサイトに設置する全ての掲示板を格納するディレクトリのパスを指定します。 通常(CGI環境)はテストディレクトリと一緒に格納するディレクトリの位置を示す..を指定します。
自分のサイトに設置するBBSPathまでの絶対URLを指定します。
レポジトリで使用するモジュール名を指定します。通常Simpleを使用します。 指定しなくてもSimpleが利用されます。
レポジトリまでのディレクトリのパスを指定します。 極力全ての人からアクセス出来ないパスまでを指定してください。 (public_htmlディレクトリがあるならそのディレクトリよりも上に)
どうしても事情があって公開せざるをえないパスに指定しなければならない場合は RepositoryFileExtensionをcgiに指定してください。 直接レポジトリファイルをアクセスされても500で返してアクセス出来なくさせます。
このディレクトリは予め作成する必要があります。
静的ファイルを格納したディレクトリ(static)までの絶対URLを指定します。 絶対URLにする必要があるのはread.cgiにアクセスしたときJavaScriptの URLが意図と異なり、read.cgiにアクセスされ負荷上昇の問題があるからです。
テンプレートファイルを格納したディレクトリを指定します。 基本的にこの値は変更する必要はありません。
テンプレートを解析するエンジンとなるモジュールを指定します。 通常はHTML::Templateを使用します。他にも高速な テンプレートエンジンであるClearSilverを利用することが出来ます。
テンプレートファイルの拡張子を指定します。 HTML::Templateを使用する場合は変更する必要はありません。 ClearSilverを使用する場合は"cs"を指定する必要があります。
Zeromin2で利用するセッションを保存するためのディレクトリを指定します。 このパス先はRepositoryRootと同じく極力全ての人からアクセス出来ない パスまでを指定してください。 (public_htmlディレクトリがあるならそのディレクトリよりも上に)
このディレクトリは作成されていなくてもモジュール側が自動的にディレクトリを 作成しますが、予め作成しておいた方がトラブルが少なく済みます。
img0chディレクトリに移動し、以下のディレクトリをFTP経由でアップロードします。 (readmeディレクトリは説明用なのでアップロードする必要はありません)
_system
_template
static
test
なお、このとき拡張子がcgiのファイルはASCIIモードで、 それ以外のファイルはBINARYモードでアップロードする必要があります。
一部モジュールがバイナリになっているので、拡張子がpmのファイルを ASCIIモードで転送すると動作しなくなります。 (Unicode::Japaneseというモジュールが該当します)
RepositoryRootのパスを存在しなければ作成し、パーミッションを0700にします。 同様にzeromin2.session_dirも作成し、パーミッションを上記と同じにします。
インストール作業に失敗するのであればパーミッションを0770、0777と段階的に上げていきます。 ただし、その分セキュリティ的なリスクが大きいので、なるべく0700にするべきです。
アップロードしたディレクトリの/testディレクトリに移動して、 以下のファイルのパーミッションを0755あるいは0705に変更します。
bbs.cgi
r.cgi
read.cgi
zeromin2.cgi
他にも拡張子がCGIのファイルがありますが、それらは必要になる場合に パーミッションを上記と同様に設定してください。
zeromin2.cgiにアクセスし、インストール作業を行います。 インストールウィザード画面が表示されますので、それに従ってください。
ウィザードに従ってインストール作業を行うとログイン画面になります。
インストール方法のSTEP.1とSTEP.3とSTEP.5を行ってください。 基本的に上書きを行って拡張子がcgiのファイルのパーミッションを変更するのみです。
2.1.7からZeromin2が導入されました。ひきつづきZerominを利用することが出来ますが、 可能であればZeromin2を利用するようにし、Zerominを停止させる必要が出るでしょう。 (その場合はzeromin.cgiのパーミッションを0644にする) 3.xでは2.1.6以前で利用されたZerominの削除が行われ、利用することが出来なくなります。
Zeromin2を利用するにはSTEP.2にあるzeromin2.session_dirの設定が 必要になります。下記の/path/to/session_dirを変更し、img0ch-config.cgiに 追記してください。詳細はimg0chそのもののインストールのSTEP.2を参照してください。
[zeromin2]
session_dir = /path/to/session_dir
STEP.2でimg0ch-config.cgi.defaultに記述されている[compatible]と 以下の値の情報の前にあるコメント(#)を削除することで過去のバージョンとの互換性を 確保してデータを引き継ぐことが出来ます。
過去のバージョンのデータは読み出し専用で読み出し、保存するときデータは全て レポジトリに保存されるため、過去のバージョンのデータが上書きされることはありませんが、 レポジトリに保存されたデータが優先的に利用されます。
typeテンプレートはtDiary互換のXHTMLを出力するテンプレートです。 若干の作業が必要になるため、インストール直後からtypeテンプレートを 利用することは出来ません。以下の手順を踏まえる必要があります。
http://www.tdiary.org のダウンロードからtdiary-full-x.x.x.tar.gzを 入手します(x.x.xはバージョン番号)。
解凍したディレクトリの中のthemeディレクトリの中のファイル及びディレクトリを /static/tdiaryにコピーします。
掲示板設定から「使用するテンプレート名」(BBS_TEMPLATE)に「type」を指定します。
掲示板設定から「typeに適用するテーマ名(BBS_TEMPLATEをtypeにする必要があります。)」 (BBS_TYPE_TEMPLATE)の値に/static/tdiary内にある好きなテンプレート名 (ディレクトリ名)を指定します。指定されない場合はdefaultになります。
インデックスを更新するとBBS_TYPE_TEMPLATEに応じたデザインのHTMLが出力されます。 tdiaryのテーマによってはデザイン構成が崩れることがあります。
read.htmlはブラウザに内蔵されている非同期通信機能を使ってdatを直接取得し、 ブラウザ側でレスを描写するHTMLファイルです。これにより、サーバー側はdatのみを 送るだけでよくなるため、サーバーへの負荷を大幅に抑えることが出来ます。
ただし、テンプレートが使用できなくなるため、デザイン変更は自分で行う必要があります。 また、サーバー側の処理をクライアントで行うことになるため、描写処理の負荷が大きい問題が あります。さらに、utf8にエンコードされたdatを生成するため、書き込み処理が若干 大きくなることとサーバーへの使用容量を増やすことになります。
zerominにログインし、「プラグイン」からプラグインの一覧を表示します。 一覧からImg0ch::Plugin::BBS::UTF8Datに絞りこみ、 表示された結果を全て有効にします。
次のSTEP.2の作業は全てあるいはほとんどのutf8のdatが生成されるまで 作業しない方がよいでしょう。
zerominから有効にする掲示板内の「各種編集処理」の「メタデータ編集」で以下を追加します。 (但しまだ<script>タグがメタデータに入っていない場合のみ)
<script type="text/javascript">
<!--
if (app) app.enableRedirectRenderer();
//-->
</script>
<script>タグが既に存在する場合は以下を追加します。
if (app) app.enableRedirectRenderer();
変更したらインデックスの更新を行うか、書き込みを待ちましょう。
2.1.9以降からread.htmlに機能を追加するプラグイン機構が搭載されました。 これによってread.cgiとほとんど同等の表示を行うことが出来るようになっています。
zerominから有効にする掲示板内の「各種編集処理」の「メタデータ編集」で JavaScriptのコード内に追加します。
// 1つだけプラグインを追加する場合
app.addRendererPlugin("youtube");
// 2つ以上のプラグインを追加する場合
app.addRendererPlugins([ "image", "googlevideo" ]);
これによってほとんどのプラグインが利用可能になります。 ただし、imageプラグインに関しては予めImg0ch::Plugin::Upload::XCSVを 有効にする必要があります。詳細はpluginのImg0ch::Plugin::Upload::XCSVを 参照してください。
現時点で利用可能なプラグインはgooglevideo、image、nicovideo、youtubeです。 これらは全て/static/js/img0ch/app/read/pluginディレクトリに格納されています。
2.1.1からImg0ch::Plugin::Rewrite::ImageでLightboxJS(またはその互換)を利用して 画像を表示することが出来るようになっています。ここではLightboxJSを使うための方法を記載します。
2.1.3からはInterfaceのImagebox(LightboxJSに似たjQueryのプラグイン)が バンドルされるようになりました。
LightboxJS(v2.0)は以下から入手できます。 http://www.huddletogether.com/projects/lightbox2/
LightboxPlusは以下から入手できます。 http://serennz.sakura.ne.jp/toybox/lightbox/?ja
zerominにログインし、「プラグイン」からプラグインの一覧を表示します。 一覧からImg0ch::Plugin::Rewrite::Imageに絞りこみ、 表示された結果を全て有効にします。
掲示板を選択し、「各種編集処理」からMETA編集を行います。
以下はImageBoxでの記述例です。/PATH/TO/STATIC/は img0ch-config.cgiのStaticURIの値に置換してください。
<link rel="stylesheet" href="/PATH/TO/STATIC/css/imagebox.css" type="text/css" media="screen" />
<script type="text/javascript" src="/PATH/TO/STATIC/js/jquery/interface/imagebox.js"></script>
<script type="text/javascript">
<!--
jQuery(function(){
jQuery.ImageBox.init({
"loaderSRC": "/PATH/TO/STATIC/images/imagebox/loading.gif",
"closeHTML": '<img src="/PATH/TO/STATIC/images/imagebox/close.jpg" border="0" />' });
});
//-->
</script>
さらにimg0ch-config.cgiに以下を記述します。これによりImageboxが利用できるようになります。
UploadImageLinkRelative = imagebox_%s
以下はLightboxJS(v2.0)での記述例です。/PATH/TO/STATIC/lightboxには lightboxを格納するディレクトリまでのパスを指定してください。
<script type="text/javascript" src="/PATH/TO/STATIC/lightbox/js/prototype.js"></script>
<script type="text/javascript" src="/PATH/TO/STATIC/lightbox/js/scriptaculous.js?load=effects"></script>
<script type="text/javascript" src="/PATH/TO/STATIC/lightbox/js/lightbox.js"></script>
<link rel="stylesheet" href="/PATH/TO/STATIC/lightbox/css/lightbox.css" type="text/css" media="screen" />
<script type="text/javascript">
//<!--
var fileLoadingImage = "/PATH/TO/STATIC/lightbox/images/loading.gif";
var fileBottomNavCloseImage = "/PATH/TO/STATIC/lightbox/images/close.gif";
//-->
</script>
以下はLightboxPlusでの記述例です。/PATH/TO/STATIC/lightbox_plusには lightbox_plusを格納するディレクトリまでのパスを指定してください。
<script type="text/javascript" src="/PATH/TO/STATIC/lightbox_plus/spica.js"></script>
<script type="text/javascript" src="/PATH/TO/STATIC/lightbox_plus/lightbox_plus.js"></script>
<link rel="stylesheet" href="/PATH/TO/STATIC/lightbox_plus/lightbox.css" type="text/css" media="screen" />
<script type="text/javascript">
//<!--
Event.register(window, "load", function() {
var lightbox = new LightBox({
"loadingimg": "/PATH/TO/STATIC/lightbox_plus/loading.gif",
"expandimg": "/PATH/TO/STATIC/lightbox_plus/expand.gif",
"shrinkimg": "/PATH/TO/STATIC/lightbox_plus/shrink.gif",
"previmg": "/PATH/TO/STATIC/lightbox_plus/prev.gif",
"nextimg": "/PATH/TO/STATIC/lightbox_plus/next.gif",
"effectimg": "/PATH/TO/STATIC/lightbox_plus/zzoop.gif",
"effectpos": { "x": -20, "y": -20 },
"effectclass": "i0_image",
"closeimg": "/PATH/TO/STATIC/lightbox_plus/close.gif",
"resizable": true
});
});
//-->
</script>
lightbox_plus.jsの最後のコードにlightbox_plusを読み込むコードが入っていますが、 これによって以下のコードを実行する前にそのコードが実行されてしまうため、 本来読み込むべきでないパスを読み込んでしまう(read.cgiを呼び出してしまう)ため、 可能であればlightbox_plus.jsに最後に含まれるコード(Event.register()の部分)を 削除するべきでしょう。
META編集を完了させるとread.cgiの場合は即座に反映されます。 掲示板のインデックスを更新することによってindex.htmlに反映され、index.htmlにも反映されます。
2.1.17からGoogle Gearsのローカルサーバ機能を利用してGoogle Gearsをインストールしている 端末に対してサムネイル及びファイルをローカルにキャッシュとして保存させる機能がついています。 これによって二回目以降のアクセスはローカルに保存されたキャッシュが参照されるため、 ネットワークの使用帯域を減らすことが可能になります。 特に画像のサムネイルを多く表示させている掲示板に有効な手段になります。
Zerominでファイルが削除した場合、「削除ファイルのJSONデータ生成」を行ってください。 これによって生成されたファイルをスクリプト側が時々チェックを行い削除されたファイルに 該当するキャッシュを削除します(16回のアクセスで1回の頻度でチェックを行う)。
Google Gearsのローカルサーバ機能を有効にするには 掲示板を選択し、「各種編集処理」からMETA編集を行います。
zerominから有効にする掲示板内の「各種編集処理」の「メタデータ編集」で以下を追加します。 /PATH/TO/STATIC/はimg0ch-config.cgiのStaticURIの値に置換してください。
<script type="text/javascript">
<!--
jQuery(function(){
if (app) app.syncUploadedFiles();
});
//-->
</script>
変更したらインデックスの更新を行うか、書き込みを待ちましょう。
メール経由での画像投稿はブラウザからファイルをアップロードすることが出来ない 携帯電話のための機能です。これを有効にすることによって携帯電話に保存されている画像を 取り込むことが可能になります。
img0ch-config.cgiを開き、[pop3]セクション、MailPostAddress、 SendmailPath(sendmailが利用可能の場合)、 QmailPath(qmailが利用可能の場合)、smtp関連(SMTPを利用する場合)の値を埋めます。 各種説明はconfigにあります。
[pop3]セクションはメールアドレスを管理するサイトから調べる必要があります。 メールソフトを使ってメールを取り込むことが出来るならPOP3を利用することが出来るとみてください。 yahoo!及びGmailはPOP3を利用することが出来ます。 上記の値を間違えるとm.cgiから例外を発行し、投稿が出来なくなりますので注意してください。
MailPostAddressはメール経由の投稿を受け付けるメールアドレスを指定してください。 MailRawAddressは本物のメールアドレスを指定します。そのため、 HTMLのエスケープなどの改変を行わないようにしてください。
以下の事項はエラーを通知するメールを送信するために必要になります。 以下の3つの方法のうちどれか1つに選択してください。
SendmailPathにはsendmailのパスを指定してください。 sendmailが利用できない場合はqmailまたはSMTPを利用してください。
QmailPathにはqmailのパスを指定してください。 qmailが利用できない場合はsendmailまたはSMTPを利用してください。
smtp関連にhost、port、ssl、tlsとありますが、 通常はhostを指定するだけです。利用可能であればsslまたはtlsを使うと 通信内容が暗号化されたメールを送信することが出来ます。
zerominにログインし、「システム」の「POP3サーバ接続のテスト」で実際に POP3サーバに接続できるかどうかを確認します。 接続できない場合はSTEP.1に戻り、img0ch-config.cgiの設定を見直す必要があります。
zerominにログインしたままで有効にする掲示板を選択して「掲示板設定」の「img0ch独自の設定」から 「携帯からのメール投稿を許可する」をチェックして「設定」をクリックして有効にします。 これでメール経由での画像投稿が可能となります。
なお、「携帯からのメール投稿を許可する」にチェックが入っていない掲示板に投稿を行うと 投稿不正とみなされ、メールが破棄されてしまいます。
Img0ch::Plugin::Filter::JPOnlyを使うにはまずIP::Countryの設定を行う必要があります。 これは各種のライセンスの問題上含めることが出来ないため、初回にこの作業を行わなければなりません。
cpanシェルが使える、またはUNIXシェルでコンパイルが出来るのであればGeo::IPを インストールしてください。こちらはC言語を利用しますので、Geo::IP::PurePerlより高速です。
主にcpanシェルを使ってインストールすることが出来ないレンタルサーバーは以下のURLから [Download]をクリックしてGeo::IP::PurePerlを取得します。
http://search.cpan.org/dist/Geo-IP-PurePerl/
この中のPurePerl.pmをtest/img0ch/3/ext/Geo/IP/にアップロードしてください。
次に以下のURLからGeoIP.dat.gzをダウンロードし、Webから見えないディレクトリに アップロードします。
http://www.maxmind.com/download/geoip/database/
img0ch-config.cgiに以下を追加し、括弧を説明通りに置換してください。
IPCountryType = MaxMind
GeoIPDat = (GeoIP.datをアップロードした先のディレクトリとファイル名)
まずIP::CountryのCOPYRIGHT以下の記述を確認してください。 これに同意が出来るのであればURLの次を参照してください。
http://search.cpan.org/dist/IP-Country/lib/IP/Country.pm
下記URLからcc.gifとip.gifをダウンロードします。 この二つのファイルをtest/img0ch/3/ext/IP/Country/Fast/にアップロードして下さい。
http://search.cpan.org/src/NWETTERS/IP-Country-2.22/lib/IP/Country/Fast/
(現時点で最新版は2.22)
img0ch-config.cgiには記述し無くてもFastを使うように指定されますが、 もし記述するのであれば以下を追加してください。
IPCountryType = Fast
VIPクオリティのモジュールを取得します。 ファイル名はvip_quality_v[xxx].zip([xxx]はバージョン番号)です。
http://www.nullpo.org/pablic_html/vip_quality/vip_quality.html
上記のZIPファイルを解凍し、その中のVip_quality.plを開いて変更を行います。 変更を行う箇所は3箇所あります。
# 表示項目ファイルのパスを設定(313行目)
$setting{'$file_path'} = '(/setting/vip_quality/までのパスを入れる)';
# 掲示板設置ルートディレクトリ(318行目)
$setting{'$bbs_path'} = '(img0ch-config.cgiのBBSPathと同じように値を入れる)';
# 掲示板設置ルートディレクトリ(517行目)
$setting{'$bbs_path'} = '(img0ch-config.cgiのBBSPathと同じように値を入れる)';
変更した後保存を行います。ファイルの文字コードはSJISですので、SJISで保存します。 別の文字コードで保存した場合文字化けが発生するおそれがあります。
ZIPファイルを解凍した後に出てくる/setting/vip_quality/のディレクトリを $setting{'$file_path'}に合わせて設置します。
Vip_quality.plを/test/img0ch/3/か/test/img0ch/ext/に設置します。 間違ったパスに入れた場合プラグインを有効にした後に書き込むときに以下のエラーが発生します。
Can't locate Vip_quality.pl in @INC (@INC contains:...
zerominにログインし、「プラグイン」からプラグインの一覧を表示します。 一覧からImg0ch::Plugin::BBS::VIPに絞りこみ、表示された結果を全て有効にします。
お絵書きアプレットを各種ダウンロードします。必要なアプレットファイルは以下になります。 これらのアプレットファイルを/static/applet/に格納します。
v1.2.5以前旧版スクリプトを使用している方は/testディレクトリにあるアプレットファイルを /static/applet/に移動させてください。なお、PaintBBSアプレットのファイル名を paintbbs.jarにしている場合はPaintBBS.jarに名前を変更してください。
ファイル名はpbbsXXX_X.zipです。PCHViewerのリンクからPCHViewerの アプレットをダウンロードすることが出来ます。
http://hp.vector.co.jp/authors/VA016309/paintbbs/pbbs.html
かならず「オールインワンバージョン」をダウンロードしてください。 ファイル名はsptr_allXXXX.zipです。 pchviewXXX.zipのリンクからPCHViewerのアプレットのダウンロードが出来ます。
http://hp.vector.co.jp/authors/VA016309/spainter/
上記のURLの両方にPCHViewerのダウンロードリンクがあります。 中身は同一なので、どちらかのリンクからダウンロードしてください。
img0ch-config.cgiに各種設定を行います。これらは基本的に省略可能です。 各種説明はconfigにあります。
お絵書き途中のファイルの有効期限を設定するDraftExpireを指定します。 指定されない場合は86400秒(一日)です。0秒または数字以外の文字列を指定された場合は デフォルト値(86400秒)が指定されます。
DraftExpire = 86400
古いスクリプトを利用している場合はOekakiTempPathを設定します。 設定しない場合はBBSPathに"/test/oekaki"を付加したパスからお絵書きファイルを探します。
OekakiTempPath = /path/to/oekaki
zerominにログインし、「プラグイン」からプラグインの一覧を表示します。 一覧からImg0ch::Plugin::Upload::Noteに絞りこみ、 表示された結果を全て有効にします。
お絵書きアプレットを有効にする板を選択し、以下のコードをローカルルール(head.txt)に添付します。 [CGIPath]にはoekaki.cgiまでのURLを、[BBS]には掲示板ディレクトリ名にそれぞれ置換します。 これを忘れるとファイルが無い、あるいはフォームエラーの原因になってしまうので必ず行うようにしてください。
<form action="[CGIPath]/img0ch-note.cgi"
style="text-align:center" method="post">
<select name="applet">
<option value="paintbbs;pbbs.PaintBBS.class;paintbbs.jar">PaintBBS</option>
<option value="c_normal;c.ShiPainter.class;spainter_all.jar">しぃペインター </option>
<option value="c_pro;c.ShiPainter.class;spainter_all.jar">しぃペインターPro</option>
</select>
横<input type="text" name="width" value="300" size="4">px
縦<input type="text" name="height" value="300" size="4">px
<input type="hidden" name="bbs" value="[BBS]"><br>
<table>
<tr>
<td><input type="checkbox" name="imgjpeg" value="true" checked="checked">強制JPEG保存</td>
<td><input type="checkbox" name="animation" value="true" checked="checked">描画アニメーション記録</td>
</tr>
</table>
<input type="submit" value="お絵描きをはじめる"><br><br>
<b><a href="[CGIPath]/img0ch-note.cgi/continue/[BBS]/">[続きを書く]</a></b>
</form>
img0ch-config.cgiに各種設定を行います。各種説明はconfigにあります。
dirはアイコンが格納されているディレクトリの相対パスまたは絶対パスを指定します。 urlはこれに対応する相対URLまたは絶対URLを指定します。
[icon]
url = http://localhost/path/to/icon
dir = /path/to/icon
dirに置かれているアイコンは全ての掲示板において利用可能になります。 また、dir/[掲示板ディレクトリ]にアイコンを配置した場合その掲示板でのみ 利用可能になります。アイコンで利用可能な拡張子はjpg、png、gifのみです。
zerominにログインし、アイコン投稿を許可にしたい掲示板を選択して「プラグイン」から プラグインの一覧を表示します。一覧からImg0ch::Plugin::BBS::Iconに絞りこみ、 表示された結果を全て有効にします。
同じくプラグインから「アイコン管理」に移動し、「アイコンの検索」を実行します。 アイコンの画像が期待どおりに表示されたら成功です。表示されない場合は STEP.1の設定を再度見直してください。
アイコンを削除する場合は「アイコンの削除」を行ってから物理的にアイコンの 画像を削除してください。物理的にアイコンの画像が削除されない場合 「アイコンの検索」によって再度表示されます。
mod_perlはApacheのモジュールであり、Perlを常駐させることにより Perlでかかれたスクリプトを高速化させることが出来ます。
img0chもまたmod_perl(1.3x及び2.x両方、但し1.9xは未対応)に 対応しているため、mod_perlを使って動作を高速化させることが出来ます。
mod_perlをインストールします。mod_perl2を利用する場合はさらにmod_apreqが必要になります。 必ずApacheのバージョンにあわせてインストールしてください。
mod_perlは以下のURLから入手できます。
http://perl.apache.org/
mod_apreqは以下のURLから入手できます。
http://httpd.apache.org/apreq/
Windowsでもmod_perlを利用することが出来ます。以下のURLが参考になります。
http://kroko.maxs.jp/~kroko/mt/archives/001710.shtml
mod_perl環境下で動作させるための設定ファイルを作成し、以下の内容を書き込みます。 /PATH/TO/にはimg0chがインストールされている絶対パスを指定します。 相対パスでの設定を行っても動作しません。
# mod_perl2での設定例です
LoadModule apreq_module modules/mod_apreq2.so
PerlSetVar Img0chConfigPath /PATH/TO/test/img0ch-config.cgi
<Perl>
use lib qw(
/PATH/TO/test/img0ch/3
/PATH/TO/test/img0ch/ext
);
no lib qw(.);
use mod_perl2 qw();
use Apache2::Connection qw();
use Apache2::Const qw(-compile);
use Apache2::Request qw();
use Apache2::RequestIO qw();
use Apache2::RequestRec qw();
use Apache2::RequestUtil qw();
use Apache2::Response qw();
use Apache2::Upload qw();
use Img0ch::Config qw();
use Img0ch::Maple qw();
use Img0ch::ModPerl2::Request qw();
Img0ch::Maple->load_application_modules();
</Perl>
<Location /PATH/TO/test/bbs.cgi>
SetHandler modperl
PerlResponseHandler Img0ch::ModPerl2::Request
PerlSetVar Img0chApplicationClass Img0ch::App::BBS
</Location>
<Location /PATH/TO/test/i.cgi>
SetHandler modperl
PerlResponseHandler Img0ch::ModPerl2::Request
PerlSetVar Img0chApplicationClass Img0ch::App::Imager
</Location>
<Location /PATH/TO/test/img0ch-note.cgi>
SetHandler modperl
PerlResponseHandler Img0ch::ModPerl2::Request
PerlSetVar Img0chApplicationClass Img0ch::App::Note
</Location>
<Location /PATH/TO/test/img0ch-sf.cgi>
SetHandler modperl
PerlResponseHandler Img0ch::ModPerl2::Request
PerlSetVar Img0chApplicationClass Img0ch::App::Search::Image
</Location>
<Location /PATH/TO/test/img0ch-st.cgi>
SetHandler modperl
PerlResponseHandler Img0ch::ModPerl2::Request
PerlSetVar Img0chApplicationClass Img0ch::App::Search::Text
</Location>
<Location /PATH/TO/test/img0ch-ufm.cgi>
SetHandler modperl
PerlResponseHandler Img0ch::ModPerl2::Request
PerlSetVar Img0chApplicationClass Img0ch::App::UFM
</Location>
<Location /PATH/TO/test/m.cgi>
SetHandler modperl
PerlResponseHandler Img0ch::ModPerl2::Request
PerlSetVar Img0chApplicationClass Img0ch::App::MailPost
</Location>
<Location /PATH/TO/test/r.cgi>
SetHandler modperl
PerlResponseHandler Img0ch::ModPerl2::Request
PerlSetVar Img0chApplicationClass Img0ch::App::Mobile
</Location>
<Location /PATH/TO/test/read.cgi>
SetHandler modperl
PerlResponseHandler Img0ch::ModPerl2::Request
PerlSetVar Img0chApplicationClass Img0ch::App::Read
</Location>
<Location /PATH/TO/test/zeromin2.cgi>
SetHandler modperl
PerlResponseHandler Img0ch::ModPerl2::Request
PerlSetVar Img0chApplicationClass Zeromin2::App
</Location>
httpd.confの中に記述しても問題はありませんが、なるべくなら別ファイルとして 作成することをお薦めします。別ファイルとして作成した場合は
# /path/to/img0ch.confはパス例
Include /path/to/img0ch.conf
をhttpd.confに追加する必要があります。
Apacheサーバーを再起動させます。初回起動時はPerlモジュールが読み込まれるため、 再起動に多少時間がかかります。
FastCGIはソフトウェアであり、CGIスクリプトまたはプログラムを常駐させることにより 高速化させることが出来ます。
img0chもまたFastCGI対応しているため、FastCGIを使って動作を高速化させることが出来ます。
FastCGIをインストールします。サーバーによっては最初からインストールされている場合もあります。
FastCGIは以下のURLから入手できます。
http://www.fastcgi.com/
cpanシェルからインストールする場合は以下になります。
cpan install FCGI
/test/img0ch/3/Img0ch/FCGI/bin/にある拡張子がfcgiのファイルを /test/ディレクトリに移動させます。拡張子をcgiに変更して上書きすることが出来ますが、 拡張子がcgiのファイルをバックアップをとってことを推奨します。
FastCGI環境下で動作させるための設定ファイルを作成し、以下の内容を書き込みます。 /PATH/TO/にはimg0chがインストールされている相対URLを指定します。 ここではApacheで動作させる場合の例をとります。
拡張子がfcgiの場合はmod_rewriteのインストールが必要になりますが、 拡張子がcgiの場合はAddHandlerをSetHandlerに変更し、 RewriteEngine以下の行を削除してください。
FastCgiIpcDir /tmp/.fcgi
AddHandler fastcgi-script .fcgi
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/PATH/TO/test/[\w\-]+\.cgi
RewriteRule ^.*/test/([\w\-]+)\.cgi(.*)$ /PATH/TO/test/$1.fcgi/$2 [L]
httpd.confの中に記述しても問題はありませんが、なるべくなら別ファイルとして 作成することをお薦めします。別ファイルとして作成した場合は
# /path/to/img0ch.confはパス例
Include /path/to/img0ch.conf
をhttpd.confに追加する必要があります。
サーバーを再起動させます。
上記に加えて外部サーバとして起動させる場合の方法です。
FastCGIをインストールします。サーバーによっては最初からインストールされている場合もあります。
FastCGIは以下のURLから入手できます。
http://www.fastcgi.com/
cpanシェルからインストールする場合は以下になります。
cpan install FCGI
/test/img0ch/3/Img0ch/FCGI/bin/img0ch-fcgi.plを web公開パス以下以外の任意のパスに移動させ、実行権限をあたえます。
img0ch-fcgi.plを稼働させます。以下は実行例です。 img0ch-fcgi.pl内にもドキュメントがかかれています。
img0ch-fcgi.pl \
-c /path/to/test/img0ch-config.cgi \
-i /PATH/TO/test/img0ch/ \
-l /tmp/img0ch-fcgi.sock \
-n 5
-cはimg0ch-config.cgiのパスを指定します。 -iはimg0chのライブラリパスを指定します。 -lはソケットのパスを指定します。ファイルのパス、あるいは HOST:PORT形式のリモートホスト先を引数にとります。 -nは起動時のプロセス数を指定します。
設定ファイルを追記または作成をします。以下は設定例です。
# Apacheの場合
# -socketにSTEP.3での-lで指定したソケットのパスを指定する
FastCgiExternalServer /tmp/img0ch.fcgi -socket /tmp/img0ch-fcgi.socket
RewriteCond %{REQUEST_URI} ^.*/test/[\w\-]+\.cgi
RewriteRule ^.*/test/[\w\-]+\.cgi(.*)$ /tmp/img0ch.fcgi/$1 [L]
# lighttpdの場合
# 引数の"socket"にSTEP.3での-lで指定したソケットのパスを指定する
$HTTP["url"] =~ "/test/[\w\-]+\.cgi" {
fastcgi.server = (
".cgi" => (
"localhost" => (
"socket" => "/tmp/img0ch-fcgi.socket",
"check-local" => "disable"
)
)
)
}
hkrn <hikarin at users dot sourceforge dot jp>