WhiteBOX設定編/(3)bbs の変更点


#navi(WhiteBOX設定編)

* 掲示板 light.cgiの設定 [#zc5f48c5]

- 掲示板はcgiで動いていますが、フリーの「LIGHT BOARD」を使っています。作者はKentさんで、[[Kent-BBS>http://www.kent-web.com/bbs/]] からダウンロードできます。バージョンの5.6を使用しています。最新はver6.3です。updateしたいのですが、過去にいろいろハマッた経緯があるもので、恐くてなかなか手が付けられません(^^;)

- Windowsでサーバを本格運用始めた時に採用しましたが、Linuxに入れ替えた後も、そのまま使っています。基本的に、OS環境が変わってもそのまま動くのですが、Linuxで使う場合は、ファイルのアクセス権限の設定や文字コードの扱いがシビアですので要注意です。

#contents

** インストール [#i5cc66a8]
- ダウンロードしたlzhファイルを解凍して、サーバにコピーします。もともとWindows環境で開発されたものなので、パーミッションは設定されていません。chmod コマンドを使って、以下のように自分で変更する必要があります。

 【ディレクトリ構成】 
 /var/www/html/index.html  (ホームページ)
 
 /var/www/cgi-bin (掲示板)
     |
     +-- bbs / light.cgi  [755] (掲示板メインプログラム)
          |    light2.cgi [755] (補助プログラム:過去ログ/ログ編集)
          |    light.log  [666] (設定ファイル
          |    jcode.pl   [604] (日本語処理ライブラリー)
          |    pastno.dat [606] ... 過去ログ用カウントファイル
          +-- lock [707] /
          +-- past [707] / 1.html [606] ... 過去ログ...実際はhtml/に配置

- クラリNETでは、ホームページから掲示板(light.cgi)を呼び出す形になっています。cgiを動かす環境はcgi-binの配下に限定しています。このディレクトリにパスワード認証をかけることで、メンバー限定となっています。(ホームページ自体はオープンです。)
- パスワード認証の詳細は、[[WhiteBOX設定編/(2)Apache]]を参照してください。
- 過去ログのディレクトリ構成の調整記録に関しては[[こちらを参照>#change]]して下さい。

** 基本設定 [#d559acf4]
- 設定関係の主要項目は、light.cgi の先頭部分に固まっています。&br;
(1) サーバのperlのパスを確認します。
 #!/usr/bin/perl
スクリプトの第1行に次のような記述があります。Linuxはディストリビューションによって、微妙にディレクトリ構成が異なっています。CGIを動かすための perl はインストールされていてもパスが通っていないと動作しません。まずは、その確認です。&br;
(2) 次に、管理者用のパスワードを変更します。
 # 管理者用マスタパスワード(半角英数字)
 $pass = '1234';
これは、必ず変更してください。

&aname(change);
** クラリNETにおける特別な設定変更個所 [#q6ce5079]
以下は、クラリNETにおけるサーバ環境に起因するカスタマイズというか、苦肉の合わせ技です。一般性は全くありませんが、敢えてメモとして残しています。&br;
(1) 過去ログデータのパス合わせ
- 掲示板の記事は100件を超えると、過去ログとして、1件ずつ自動的に切り出される仕組みになっています。デフォルトのディレクトリ構成のとおり、past/配下の
ファイル(1.html)に追加保存されていきます。
- ところが、CGIが動いている cgi-bin/配下ではファイル表示を規制しています。セキュリティ上の理由で、cgiファイル自体を表示してしまう危険性もあるからです。
- このため、過去ログディレクトリpast/は html/配下にしましたが、単に移すだけでは、過去ログの検索機能の動作にも問題が出ていたようです。
- 最終的には、以下のような調整で切り抜けています。

 ●[light.cgi]の設定変更
 # 過去ログのあるディレクトリ
 $past_dir  = "../../html/past";
 
 ●bbs/past は html/配下の過去ログディレクトリへシンボリックリンクとしました
 ●bbs/past は html/配下の過去ログdirへシンボリックリンクとしました
 past -> /var/www/html/past
- cgi自体が切り出し時に書き込むパスと、過去ログ表示で読み出す時のパス設定が別みたいで、苦肉の策です(^^;)&br;

(2) 文字コードの変更
- 「LIGHT BBS」のCGIスクリプトの文字コードは、もともとはすべてWindows標準の「シフトJIS」で書かれています。また、生成される掲示板や過去ログデータも基本的にはすべて「シフトJIS」です。
- ところが、サーバOSをWindowsからLinuxに変更した際に、文字コードの扱いで食い違いが出て、一部のユーザで文字化け問題が発生しました。また、書き出し時にファイル名にゴミキャラクタが付加されてエラーが発生したりしました。
(過去ログでごく一部の記事が欠損しているのは、その時の後遺症なのです。)
- このため、文字コードをすべてLinux標準の「EUC-JP」に統一することにしました。設定項目だけでなく、CGIスクリプト自体の書換えも必要でしたが、そもそもサポート事項だったので指示通り何個所か修正してOKでした。
- 面倒だったのは、ファイル自体の文字コード変換でした。nkf(network kanji filter)というコマンドで対応しましたが。

結果的には以上ですが、ここに至るまでは、わからんことが多くてずいぶんと悩みました。

** その他一般的な注意事項 [#j34b1acf]
- Apacheでcgiを動かす場合の基本設定については、このあたりが参考になります。
> http://www.stackasterisk.jp/tech/systemConstruction/apache05_04.jsp#4

- ふつうは、windows用のcgiでもたいていそのまま動きますが、Linux環境で動かす場合のチェックポイントとしては、
#br
''cgi側のperlのパスがあってるのか?'' &br;  ディストリビューションによって、perlの所在が異なります。
#br
''cgi内で指定しているファイルのパス?''&br;  関連するファイルのコピー先の確認。パスもcgiのルートを基準にして「相対」、「絶対」といろいろあります。簡単なようでハマリます。
#br
''関係ファイルのパーミッション関係?'' &br;  Linuxの場合、これは極めてシビアです。cgiのドキュメントにも詳細に書いてあるのでそれに合わせる。「chmod」コマンドで設定します。
#br
''cgiスクリプトファイルの先頭にゴミが付いていたり、スペースが入っていないか?'' &br;  これだけで、cgiが実行不能になっていた。
#br
''cgiが作成するファイル名にへんな文字コードが付いていたりしていないか?'' &br;  これでファイルオープンエラーでアウト。(winodwsで動かしたcgiをコピーしたときは注意!)

- 特に、掲示板の過去ロのように、cgi側で生成するファイルがあるときは、要注意です。今回は、最終的には、関連ファイルをすべて完全にEUC化することで収まりました。ホントはあまり関係なかったのかもしれませんが、直すなら徹底してやらないとだめ。

- エラーもcgiが出すエラーなら、動いている証拠ですからまだ救いです。サーバエラーの場合は、まず、上記のような点がチェックポイントです。

- 動作環境確認のためなら、いきなり大きなcgi動かずに、数行のサンプルcgiを動かしてみるのもよいでしょう。


#navi(WhiteBOX設定編)
トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS   リンク元