無料(フリー)掲示板CGIプログラムとwebツール

HitBBS お約束 リンク集 初めに 掲示板の種類

サーバに関して

設置の基本

まず初めに、共通した基本的な説明をします。 ここで公開されているものは、全て Perl のインタプリタ型言語で書かれています。 Perl のCGIが実行できるサーバ(レンタルサーバ、共用スペース含む)を貴方でご用意する必要があります。

準備するもの

テキストエディター
ソースを編集するために必要です。 ソースコードがUTF-8のエンコードで書かれている物が多いため、UTF-8(BOM無し)が扱えるものが必要になります、有料か無料かは問いません。 元のエンコードを変更してしまうと不具合が発生する場合があります。

Windousのメモ帳で編集してUTF-8のBOMが付いてしまうと、CGIプログラムの動作に支障が出る事があります。

ついでに言うと、UNIX系の文字改行コードも扱える物が便利です。ちなみに私は、ベクターで購入した「EmEditor」を使用しています。

FFFTPの様なFTPアップロードソフト(アップロードツール・FTPクライアントソフトとも言う)
最近のサーバにはブラウザでアップロードできるファイルマネージャーがある事が多いですが、それでアップロードすると文字コードや改行コードが変更されてしまい、CGIがうまく動作しなくなる事があります。 FTPソフトを使用するようにしてください。

パソコンかそれに準ずる機器
当サイトにあるCGIプログラムは、スマートフォンを使用しての設置及び管理にはちょっと無理があります。 当たり前ですが、インターネット回線も必要です。

アップロードするサーバ
ネット上で公開する為にはサーバーを用意しますが、すでに持っている物を利用すれば専用に用意する必要はありません。
画像掲示板は、それなりにサーバの容量が必要になります。

排他制御(ファイルロック)

サーバの仕様違いによってCGIプログラムの作り方が微妙に違うことがあります。 その一つが排他制御です。排他制御(ファイルロック)とは、実行中のCGIプログラム(プロセス)が読み書きしているファイルを他のプロセスが読み書きするのを制限するものです。 これに失敗するとファイルのデータが駄目になります。

排他制御用の機能「flock関数」が使えるサーバでは、flock関数仕様のCGIプログラムを使う方がいいですが。 使えない場合は他の排他制御方式のCGIプログラムを選ぶ必要があります。

各種設定

アップロードする前に、サーバのperlに関する仕様をサーバ管理者に聞くか、そこのサーバのwebでチェックします。 テキストエディターを使い、CGIプログラムの設定箇所を変更します。 まずは、拡張子が「.cgi」のCGIファイルをエディターで開くと最初の行に「#!/usr/bin/perl」があるはずです。 それをサーバで指定された値に書き換えます。

貴方のサイトや好みに合わせて、HTML表示部や、各種設定を変更します。 詳細は各プログラムのページにあります。

変数について
設定部分には変数と呼ばれるものを使用しています。 たとえば
「$aaa」「$_->{aaa_bbb}」
の様な感じのもので、先頭に $ が付いてたりします。aaa や aaa_bbb は変数の名前部分でいろいろあります、これに
「$aaa = "□□□";」
こんな感じで、半角の "(ダブルクォーテーション)か '(シングルクォーテーション)で囲んで文字を設定します、設定する文字が半角数字だけの場合は、クォーテーション等で囲まなくてもいいですが、カンマ( , )等は入れないで下さい。

文字の設定は、
全角:'たていす'(そのまんま文字)
半角:'abcd'(シングルクォーテーション囲みならそのまんま半角文字)

数字の設定は、
10進法:1245(普通に指定)
16進法:0x124d5a(頭に0xが付く)
8進法:01245(頭に0が付く)

設定なしは、
空文字:""又は''でクォーテーション囲みに何も入れないで設定

文字としての意味以外の特別な意味を持つ半角記号は、
"\$aaa\n"(ダブルクォーテーション囲みの中で使うとその意味を発揮する)

変数は、プログラムが実行されると、先にあるのものから順番に設定された内容に置き換わって(展開されて)処理されますが、 その際に、ダブルクォーテーションで囲むか、シングルクォーテーションで囲むかでは意味が多少違ってくるので、それも注意する必要があります。

ダブルクォーテーションで囲むと、その文字の中に変数などが入っていれば、それを先に展開して処理されます、シングルクォーテーションでは展開されません。 たとえば
「$aaa = "たていす"; $bbb = "$aaaかんな";」
こんな風にした場合、$bbb の内容は「たていすかんな」になります。先に、$aaa を設定しておく必要がありますが。

ここで、$bbb をシングルクォーテーションで
「$aaa = "たていす"; $bbb = '$aaaかんな';」
にした場合は、$bbb の内容は$aaa が展開されず「$aaaかんな」となりそのまんまの文字列になります。

さらに注意する点は、変数の設定の際、囲んだダブルクォーテーションの中で、ダブルクォーテーションを入れると、そのままではエラーになりますので対処する必要があります。

対処方法は、ダブルクォーテーションで囲むのをやめてシングルクォーテーションで囲むか、又はエスケープします。 エスケープとは、特別な意味を持つ記号の直前に半角 \(エンマーク、環境によっては半角バックスラッシュ)記号を付ける事です。ちなみに、\ 自体も特別な意味を持つ記号です。
「$bbb = "<span class=\"$aaa\">";」
こんな風にします、この場合は $aaa は展開されます。

シングルクォーテーションで囲んで変数を設定する際、その中にシングルクォーテーションを使用したいも、同じようにエスケープする必要があります。

設定の後には半角の ;(セミコロン)で締めくくります。これがないと、プログラムが実行された時にエラーとなります。 最初からセミコロンは付いているはずなので、間違えて削除しない様にしましょう。

頭に#の付いた行について。
CGIファイルの一番上の「#!」は除いて「# 」が先頭に付いている行は、コメントアウトです。その行は実行されず飛ばされます、HTMLで言うと「<!-- -->」と同じです。

変数の種類(特徴)について
プログラムを見ても、初めての方は何が変数に当たるものか、どういったものか分かりにくいかと思いますのでいくつか例を上げます。

$abc ${abc}
普通の型(スカラー)、ドルマークの後に、「_(アンダーバー)」を含む半角英数文字(変数の名前)。 文字が「{ }(波カッコ)」で囲まれている事がありますが、この二つは同じ変数として扱われます。
この時の「{ }(波カッコ)」は、変数の後に半角文字などを付けたい時に、変数の名前とそうでない文字とを区別する為に付けています。 大文字と小文字は別の変数として区別されます(違う名前として扱われます)。
$$abc
普通の型の参照型(リファレンス)、ドルマークが二つあります。
ちなみに参照型とは、変数に格納(設定)されている内容そのものでは無く、格納されている場所を格納しています。 だからドルマーク二つで変数の内容そのものを取り出します。
@abc
配列の型(リスト)、ドルマークの代わりにアットマークが付きます。 配列なので、複数の設定が格納されている場合が殆どで、アットマーク直後の文字が、その変数全体を表す名前になってます。
$abc[1]
配列の型(リスト)の中にあるものの一つの変数、普通の型に「[ ](角カッコ)」で囲った数字が付いています。 配列は、ゼロから数字の順番通りに並び、そしてその数字は並んでいるリストの一つの場所を表します。
$abc->[1]
配列の型の中の変数の参照型(配列のリファレンス)、カッコの前に矢印「->」が付きます。
@$abc
配列の型の参照型、アットマークとドルマークが付きます。その配列に格納されている中身全部を示します。
%abc
連想配列の型(ハッシュ)、ドルマークの代わりにパーセントマークが付きます。 これも一つのものに複数格納されていて、パーセントマーク直後の文字が、その変数全体の名前を表します。 上記の配列の様に、決まった順番で並ぶものではなく、その代わりに連想配列ではリストの数字の代わりに文字が使える点が違います。
$abc{name} $abc{'name'}
連想配列の型(ハッシュ)の中の一つを指します、英数文字の後に「{ }(波カッコ)」で囲まれた文字が付きます。 カッコの中の文字は、クォーテーションで囲まれている事あり。 この場合は、連想配列abcの中のnameと言う変数を指します。
$abc->{comment} $abc->{'comment'}
連想配列の型の参照型(連想配列のリファレンス)普通の型に矢印が付き、その後にさらに「{ }(波カッコ)」で文字などが付いたもの。
%$abc
連想配列の型の参照型、パーセントマークとドルマークが付きます。その連想配列に格納されている中身全部を示します。

まだ有りますが、主に使われているものは大体こんな所です。
そして変数は
 $変数名 = '設定値'; @変数名 = ("設定値1","設定値2")
という感じに、イコールで、変数と設定値を繋げて、変数に内容を格納します。

スキンについて
変数の一つですが、外見を作るもので、貴方のサイトに合わせて変更できます。HTMLのタグやCSSの知識が必要です。

クッキーのパッチ値について
パッチ値(path=有効範囲;)はクッキーの有効範囲を指定するもので、通常は空文字の設定で問題ありません、クッキーは保存されたアドレス下が有効範囲となります。
パッチ値の設定が必要になるのは、有効範囲を広げたい時で、例えばスレッドでの投稿でクッキーが保存されたとすると、その上の階層のページなどで無効になってしまいます、そういった場合にパッチ値の設定が必要になります。

パッチ値で「/(スラッシュ)」を指定するとサイト全体で有効になります、範囲が良く分からない時はアンカータグ(ハイパーリンク)で考えれば分かりやすいかと思います。
例えば「/(スラッシュ)」だけのパッチ値は、<a href="/">トップ</a> でアクセスできるアドレス下で有効になります。

ドメイン名やサブドメイン名が他の人と同じ共用サーバでは、パッチ値「/(スラッシュ)」だけの設定は他人様のホームページでもクッキーが有効になってしまうのでご注意ください。

ログ保存ディレクトリについて
ログにはアクセスしたアドレスやホストやe-mail等が記録されます。 通常こういったログには外部(ブラウザからの閲覧等)からアクセス出来ないようにする必要があります。

方法としては、パーミッションでアクセスを規制する、 ログファイルをCGIファイルにする(外部からアクセスしてもエラーが出るだけ)、 サーバ管理者が用意したプライベートディレクトリ(外部からアクセス不可能な場所)にログ保存ディレクトリを作る、などがあります。

実際にアクセス出来ない様になっているか、適当なファイルをアップロードして確認しましょう。

CGIのアップロード

FTPソフトでアップロードしますが、アップロードするディレクトリはサーバ側で指定している事があります。 また、どこにアップロードしても実行出来る場合もあります。

通常は、新規でディレクトリを作成して、そこにアップロードします。 既存の場所にアップロードしたい時は、もともとあるファイル名やディレクトリ名と同じにならない様に注意しなくてはなりません。

.cgiや.plファイルやテキストファイルはアスキーモードで転送します、個別にバイナリーモードが指定されているファイルと画像はバイナリーモードで転送します。
.htaccess が必要ならばそれもアップロードします。htaccess は、通常テキスト形式で作成し、サーバにアップロードしてからFTPアップロードソフトでファイル名を「.htaccess」に変更します。
アップロードしたファイルやディレクトリのパーミッションを変更します。パーミッションの値は、サーバの仕様により違う事が多いので注意が必要です。

拡張子.cgiは実行ファイルで「実行・読み取り・書き込み」の権限が必要です。
拡張子.plは、ライブラリ(ファイル)で「読み取り・書き込み」の権限が必要です。
ログファイルにも同じ拡張子が使われている事が多いですが、「実行」の権限は不要です。

一般的なパーミッション
実行ファイル 705、755、775
PLライブラリ 604、644、664
ログファイル 600、660
通常のディレクトリ 755、775
非公開ディレクトリ 700、770
ログ用ディレクトリ 700、770
CSS、HTML、画像等 604、644、664、666

パーミッションの設定をミスすると、CGIが動かなかったり、脆弱性の原因になったりするので、くれぐれも注意して下さい、なるべく小さい数値の方が安全です。

当サイトのCGIプログラムの設定ファイルには、パーミッションを指定する設定箇所があるものがあります、8進法で指定するため、3桁のパーミッション値の前方に0を付け、4桁とし、更に数値を「"」や「'」で囲まずに指定します。(例:$permission = 0705;)

CGIの実行テスト

アップロードが完了したら、ブラウザからCGIファイルにアセスして、動くか確認します。 セットアップ機能があるものは、その説明に従って実行します。

一発でうまくいくとは限りません、エラーが表示されたら設定を確認して修正して再アップードします。 そしてうまく動けば完了です。どうしてもうまくいかない時は、当サイトで配布しているツールで問題が発見できるかもしれません。

エラー画面について

Internal Server Errorについて
500番台のサーバエラーはCGIプログラムの記途がどこか間違っていて、実行出来ないか実行結果が出力出来ない事を示します。文字を「"(クォーテーション)」で囲んでいないとか「;」が無いとか、CGIファイルの「#!/usr/bin/perl」が間違っているとか、原因は多岐に渡ります。

致命的なエラーが発生した時は、設定値の指定の仕方が間違っているかスクリプトの不具合がほとんどです、まれに環境とCGIプログラムの相性が合わない時や必要なモジュールが不足している事もあります。

「致命的なエラー」と表示されたら、エラーが発生したファイルや行番号が表示されるので、それを手がかりに出来ます。

ブラウザからの警告表示について

SSL暗号化通信(HTTPS通信)を利用していないwebページで、掲示板の投稿フォームや、メールフォームを設置すると、一部のブラウザで「保護されていません」とか「危険なサイト」といった様な警告が表示されます。

これは、そのブラウザの仕様(セキュリティー機能)です。 設置したCGIスクリプトに害がなくてもフォームがあれば表示されます。

これを回避するには、フォームを無くすかSSLを利用するしかありません。

最近では無料でSSLが使用できるレンタルサーバ(共用サーバ含む)も、多くなりました。

とくにSEO対策をされる方は、検索順位に影響が出ますのでSSL化する事を進めます。

その後で

たまに、このサイトにアクセスして、CGIプログラムがバグなどの修正版が出ていないか、アップデートが出ているか定期的に確認する事を強く勧めます。

説明文などが訂正または追加される事がありますので、こちらも確認する事を進めます。


HitBBS (c)2017
 管理人:ひとちゃん