TACS Triangle Community System / Triangle AUTO Contents System 簡単な説明 Ver.0.1 2003年1月15日 (1) TACSとは  TACSはレビュー型コミュニティ「東京グルメ」(http://gourmet.zubapita.com/)で使用されているシステムです。 TACSをインストールすることで、誰でも東京グルメと同じレビュー型コミュニティを構築・運営できます。 カスタマイズも容易なので、扱うテーマに合わせてデザインや機能を変更できます。 (2) TACSに必要なもの ・常時接続環境  アクセス数が少なければ、フレッツISDNでも大丈夫です。 1万PV/日〜3万PV/日くらいなら、ADSLでもいけるでしょう。 それ以上では、FTTHなどを用意したほうが安心です。 (以上はあくまで目安) ・LinuxをインストールしたPC  TACSの開発と運用は、2003年1月現在「Turbolinux 8 Server」で行っています。 なるべくバージョンの新しいLinuxを用意してください。  TACSは膨大なディレクトリと小さなテキストファイルを作成します。 Linux標準のext2ファイルシステムでは、運用しているうちにiノードが足りなくなります。 reiserfsなどのiノードの制約がなく、かつ膨大なディレクトリ&ファイル数でもアクセス速度が落ちない ファイルシステムを用意してください。 ・サーバソフト Apache 1.3.27(Webサーバ) PHP-4.3.0(プログラミング言語) APC(PHP用キャッシュソフト) Perl 5.6.1(プログラミング言語) PostgreSQL 7.3.1(データベースソフト) Pgperl(PerlからPostgreSQLをアクセスするインターフェイス) インストール手順は参考文献を参照してください。 なお、configureオプションは、 ・Apache OPTIM="-O2" ./configure --enable-module=so ・PHP ./configure --with-pgsql --without-mysql -with-apxs=/usr/local/apache/bin/apxs --enable-mbstring --enable-mbregex --disable-session --enable-memory-limit --enable-zend-multibyte ・PostgreSQL ./configure initdb --encoding=EUC_JP --no-locale また、postgresql.confの中で #tcpip_socket = false を tcpip_socket = true としなければいけません(行頭の#を取る)。 また、PostgreSQLの管理ユーザーでnobodyをデータベースユーザーとして登録しておいてください。 $ createuser nobody nobodyがデータベースやユーザーを作成できるようにするか権限を聞かれますが、 いずれもno (n)と答えたほうが安全でしょう。  さらにTACSを使用するユーザーをルート権限で作成します。 TACSのデフォルトでは、ユーザー名=データベース名となります。 仮に本屋さんのレビューサイトを作るなら、bookshopというユーザーにします。 この場合、TACSのホームディレクトリは、/home/bookshopとなり Webサーバのディレクトリは、/home/bookshop/public_htmlとなります。 public_htmlは口述のmake時に自動的に生成されます。  Web経由の外部ユーザー(nobody)がこのディレクトリにアクセスできるように $ chmod o+x /home/bookshop としておきましょう。  また、このユーザーbookshopもデータベースユーザーとして登録してください。 $ createuser bookshop このユーザーはデータベースが作成できるようにyes (y)としてください。 (3)TACSのインストール  Apache、PHP、PostgreSQLなどのインストールが終了し、動作を確認したらTACSを動かすユーザーディレクトリに アーカイブファイルを置いてください。 /home/bookshopにTACSのアーカイブファイルを置いて展開します。 $ tar xvfz tacs091.tar.gz すると、/home/bookshopにMakfileとsrc/が展開されます。  TACSユーザー管理用のデータベースを作成しておきます $ createdb userauth $ psql userauth < src/sql/masterauth.sql データベースuserauthは、同じサーバ内の別のTACSシステムとも共有されます。別のテーマのTACS(たとえばレストランや映画館)を 同じサーバにインストールするときは、この作業は最初の1回以外は不要です。 あとはmakeします。 $ make これでエラーが出て止まることがなければ、インストールは終了です。 外部から(Web経由で)アクセスしてみて、動作を確認してください。 (Apacheをスタートするのを忘れずに!。 また、PostgreSQLを終了するときやリスタートするには、Apacheを止める必要があります。 これはTACSが一度動くと、PostgreSQLのデータベースと接続しっぱなしになるためです) なお、TACSをインストールした状態では、テストモードで動作しています。 テストモードでは、TACSのキャッシュ機能がOFFになっているため、動作が重くなります。 本番運用を行うときは、public_html/index.phpをエディタで開き、 //define("TEST", false); // 本番モード define("TEST", true); // テストモード を define("TEST", false); // 本番モード //define("TEST", true); // テストモード と直して、apacheをリスタートしてください。 アクセス数が多くなってきたら、「apc」などのPHPのコードキャッシュの導入が効果的です。 (4)カスタマイズ ●カテゴリのカスタマイズ  まず、カテゴリのカスタマイズをします。category/category.xlsがサンプルです。これにならって Excelなどの表計算ソフトで、カテゴリ分類表を作ります。  カテゴリは「大分類」「中分類」「小分類」の3段階の階層関係になるように設定します。  TACSでは、柔軟なカテゴリ検索を実現するために、1つのカテゴリの2つの親カテゴリを設定できます。  アイテム登録時にカテゴリとして設定できるのは、「子を持たないカテゴリ」のみです。 ひとつ以上の子カテゴリを持つ親カテゴリ(大分類、もしくは中分類)は、アイテムに設定することは できませんが、カテゴリ検索時に子カテゴリを一括検索するのに使用されます。  カテゴリ分類表の.xlsファイルができたら、タブ区切りテキスト形式で、category/category.datに  保存します。そしてコマンドラインから、 $ bin/mkca.sh として、エラーがでなければ、カスタマイズは成功のはずです。  Webからしてアクセスして、ページ上部のカテゴリメニューが変化しているか、きちんと思ったとおりに 動作するか確認してください。このカテゴリメニューの表示をカスタマイズしたい場合は、 public_html/ihtml/categorymenu.ihtmlを編集してください。categorymenu.ihtmlは、mkca.shを 実行するたびに、新しく作られます。気を付けてください。 ●エリアのカスタマイズ  エリアの元データは、ディレクトリarea/にあります。これを書き換えて、いくつか操作をすれば、 エリアのカスタマイズができます。このためのツールは将来のバージョンで提供される予定です。 ●アイテムのカスタマイズ  TACSでは、アイテムのカスタマイズを簡単にできます。標準の状態でも、名前、住所、電話番号などを 登録できます。これに加えて開店時間や定休日などさまざまなデータを足したり削ったりしたい場合は、 tabledef/item.datを編集します。編集が終わったら、コマンドラインから $ bin/mdef --sql-exec ~/tabledef/item.dat とします。これを行うと、以前に登録されたアイテムデータはすべて消去され、データベースに新しい アイテムテーブルが作成されます。このアイテムデータの定義は、 public_html/def/item.def sql/(データベース名).sql の2つのファイルの保存されます。 ●WebのUIのカスタマイズ  TACSのユーザーインターフェイスは、public_html/ihtml内の*.ihtmlに記述されています。 *.ihtmlはTACS独自のテンプレートシステムを使用したHTMLテンプレートです。  TACSではユーザーがコメント&採点する対象を「アイテム」と呼びます。レストランや映画館や本屋がアイテムとなります。 アイテムはデータベース名(=ユーザー名)と同名のテーブルとして登録されています。この内容を変更するためには、 以下のファイルを変更する必要があります。 (ユーザー名bookshopのとき) /home/bookshop/sql/bookshop.sql (テーブル定義) /home/bookshop/public_html/def/bookshop.def (TACS用テーブル定義。bookshop.sqlと対応する) /home/bookshop/public_html/ihtml/item_set.ihtml (アイテムデータ登録フォーム) /home/bookshop/public_html/ihtml/item_brow.ihtml (アイテムページ表示用HTML)  アイテム名を「書店」や「レストラン」に変えたいときは、/home/bookshop/public_html/index.php内の  定義を書き換えてください。表の見出しや各行の色などもindex.phpで定義されています。 (5) 参考文献 「PHP4徹底攻略 Webとデータベースの連携プログラミング」 ソフトバンク刊 「PHP4徹底攻略 実戦編 実践的Webアプリケーション開発技法」 ソフトバンク刊 「PC UNIXユーザーのための PostgreSQL完全攻略ガイド」 技術評論社刊