README for mod_fast_bbs

mod_fast_bbs: Apache のモジュールとして動作するスレッド型掲示板

Contents

mod_fast_bbs とは?

mod_fast_bbs は,スレッド型の掲示板を Apache のモジュールとして実装 したものです.以下のような特長があります.

動作サンプル

http://acapulco.dyndns.org:6060/bbs/

動作環境

mod_fast_bbs は,UNIX 系 OS で動作します.(WIndows Windows 版はこちら)

詳細を以下に示します.

開発は, Gentoo Linux Kernel 2.6.10 ,GCC 3.3.5 ,Apache 2.0.54 ,ImageMagick 6.1.8.8 で行っています.

各環境で必要になる主なパッケージ

CentOS

  • gcc-c++
  • make
  • libtool
  • httpd-devel
  • ImageMagick-c++-devel

Debian

  • libtool
  • apache2-mpm-prefork
  • apache2-prefork-dev
  • libmagick++6-dev

FedoraCore

  • gcc-c++
  • make
  • libtool
  • httpd-devel
  • ImageMagick-c++-devel
  • freetype-devel
  • fontconfig-devel

FreeBSD

  • www/apache20 or www/apache22
  • graphics/ImageMagick

Gentoo Linux

  • gcc
  • make
  • libtool
  • apache
  • imagemagick

Ubuntu Linux

  • g++
  • apache2-mpm-prefork
  • apache2-prefork-dev
  • libmagick++9-dev

ライセンス

The zlib/libpng LicenseThe zlib/libpng License の翻訳 )に従 います.

ダウンロード

CVS リポジトリ

下記のようにすることで check out できます.(パスワードは空)

$ cvs -d:pserver:anonymous@cvs.sourceforge.jp:/cvsroot/mod-fast-bbs login
$ cvs -z3 -d:pserver:anonymous@cvs.sourceforge.jp:/cvsroot/mod-fast-bbs co mod_fast_bbs

また, ViewCVS 経由で参照 することもできます.

コンパイル方法

GNU Compiler Collection でコンパイルする場合は,

$ ./configure
$ make apache-module

とします. Intel C++ Compiler でコンパイルする場合は,

$ env CC=icc ./configure
$ make apache-module

とします.

configure は次のオプションを受け付けます.エラーがでた場合は, --with-apxs2--with-apctl2--with-aprconf を試してみてく ださい.

--with-apxs2 = APXS
apxs コマンドのパスを指定します.自動的に検出されない場合に使用して下 さい.
--with-apctl2 = APCTL
apachectl コマンドのパスを指定します.自動的に検出されない場合に使用 して下さい.
--with-aprconf = APRCONF
apr-config コマンドのパスを指定します.自動的に検出されない場合に使用 して下さい.
--with-libtool = LIBTOOL
libtool コマンドのパスを指定します.自動的に検出されない場合に使用し て下さい.
--with-march = CPU
特定の CPU 向けに最適化したい場合に使用します.例えば,Pentium 4 に最 適化したい場合は, --with-march = pentium4 とします.
--with-mconf = MCONF
Magick++-config コマンドのパスを指定します.自動的に検出されない場合 に使用してください.

各環境での例

CentOS, FedoraCore, Gentoo Linux, Ubuntu Linux

$ ./configure
$ make apache-module

FreeBSD

$ ./configure
$ gmake apache-module

Mac OSX Tiger + Fink

$ ./configure
$ env MACOSX_DEPLOYMENT_TARGET=10.4 make apache-module

インストール

次のコマンドを実行するだけで OK です.

$ su
# make -f GNUmakefile.apache install

設定

設定は,Apache の設定ファイル( .htaccess は不可)に,以下のように記 述します.( * 印がついているものは必須)

テンプレートは,tmpl ディレクトリに入っている index.htmcomment.htmthread.htmpost_thread.htm を利用してください.

<Location 掲示板を設置するパス>
    SetHandler                fast_bbs
</Location>

FastBBSBaseUrl                掲示板の URL *
FastBBSDataDirectory          スレッドのデータを保存するディレクトリ *
FastBBSFileDirectory          添付ファイルを保存するディレクトリ *
FastBBSTempDirectory          一時ファイルを保存するディレクトリ *
FastBBSIndexVIewTemplate      トップページのテンプレートファイル *
FastBBSCommentVIewTemplate    コメントページのテンプレートファイル *
FastBBSThreadVIewTemplate     スレッド一覧ページのテンプレートファイル *
FastBBSPostThreadVIewTemplate スレッド作成ページのテンプレートファイル *

http://foo/bbs/ に設置する場合の設定例は以下のようになります. /img/css/js の Alias は必須ではありません.テンプレートを 書き換えたくない場合に指定してください.(これはあくまでも例です.ディ レクトリやファイルのパスは環境よって違ってきます)

<Location /bbs>
    SetHandler                fast_bbs
</Location>

FastBBSBaseUrl                "http://foo/bbs"
FastBBSDataDirectory          "/path/to/mod_fast_bbs/data"
FastBBSFileDirectory          "/path/to/mod_fast_bbs/file"
FastBBSTempDirectory          "/path/to/mod_fast_bbs/temp"
FastBBSIndexVIewTemplate      "/path/to/mod_fast_bbs/tmpl/index.htm"
FastBBSCommentVIewTemplate    "/path/to/mod_fast_bbs/tmpl/comment.htm"
FastBBSThreadVIewTemplate     "/path/to/mod_fast_bbs/tmpl/thread.htm"
FastBBSPostThreadVIewTemplate "/path/to/mod_fast_bbs/tmpl/post_thread.htm"

Alias /bbs_img                "/path/to/mod_fast_bbs/img"
Alias /bbs_css                "/path/to/mod_fast_bbs/css"
Alias /bbs_js                 "/path/to/mod_fast_bbs/js"

起動

Apache を普通に起動すれば OK です.設置した場所にブラウザでアクセス してみましょう.

お試し実行

次のコマンドを入力して,http://127.0.0.1:8080/bbs/ にアクセスすることで することでインストールせずに動作を確認できます.

他のホストからアクセスする場合は, 127.0.0.1 の部分を適当に置き換えて ください.

$ su -
# make -f GNUmakefile.apache start

もし, LoadModule 関連のエラーが出た場合は,conf/apache.conf を適宜修 正してください.

停止は,次のようにします.

# make -f GNUmakefile.apache stop

注意事項

画像やスタイルシートが正しく表示されない場合は, conf/apache.conf の 次の行を適等に書き換えてください.

FastBBSBaseUrl                "http://127.0.0.1:8080/bbs"

テスト結果

テスト結果一覧

API ドキュメント

http://acapulco.dyndns.org/mod_fast_bbs/api/

ツール

プログラムの作成にあたってお世話になったツールを紹介します.

Valgrind
メモリの不正な参照や解放し忘れなどをチェックしてくれるツール.デバッ グでかなりお世話になりました.

寄付

PayPal 経由での寄付を受け付けています.mod_fast_bbs が気に入った場合は よろしくお願いします.いただいたお金は開発のための書籍購入などにあてさ せていただきます.

参考文献

プログラムの作成にあたってお世話になった文献を紹介します.

Apacheモジュール プログラミングガイド Secure Coding in C And C++

Apacheモジュール プログラミングガイド
Apache のモジュール作成に必要になる事柄を一通り説明した本.痒いと ころに手が届いているので,手元に置いておくと重宝します.
Secure Coding in C And C++
C/C++ でプログラムを作るときにセキュリティホールが発生してしまう原理と その対策について詳しく説明した本です.丁寧に書かれているので内容を しっかりと理解することができます.
Advanced Topics in Module Design: Threadsafety and Portability
Apache 2.0 でモジュールを作成するときに必要になってくるテクニック が解説されたパワポ.そんなに長くないので,モジュール書く前にさらっと 読んでおきましょう.
Apache API C++ Cookbook
C++ を使って Apache のモジュールを作成する際の注意事項について説明 したサイト.
libapr (apache portable runtime) programming tutorial
APR のチュートリアル.サンプルコードおよび,間違いやすい点についての 記述が多いので重宝します.
Using libavformat and libavcodec: An Update
libavformat と libavcodec を使って動画からフレーム画像を取り出す方法 を解説したページ.丁寧に書かれています.
STL のページ
C++ の標準テンプレートライブラリである STL について簡潔にまとめられた サイト.
RubyExtensionProgrammingGuide
Ruby の拡張ライブラリの書き方を解説したサイト.基本的な事項から少し高 度な話題まで非常に良くまとまってます.
Compiler Construction Lecture
コンパイラ作成に関する実践的な内容が簡潔にまとめられたサイト.簡単な インタプリタもどきを作るんだったら,このサイトだけで十分かも.