GNSをWWW環境で使うための方法を解説します。WWWサーバにCGIの形で導入し、WWW掲示板などのような要領でブラウザから日記を書き込み、そのまま公開することができます。

WWWサーバ環境は、*BSD・LinuxなどUNIX系のOSに、apacheを導入したものを想定しています。

  1. GNSの動作に必要なツールを導入する
  2. GNSを導入する
  3. GNSの基本設定をする
  4. GNSの環境テストをする
  5. パスワードを設定する
  6. 日記マスタを書く
  7. 更新通知メール

GNSの動作に必要なツールを導入する

UNIX環境でGNSを動作させるには、以下のツールが必要です。

Perl
Perlは、Perl言語で書かれたプログラムを動かすためのプログラムです。GNSは、その大部分をPerlで書いています。現在のUNIX環境では、すでにPerlがインストール済みであったり、個々のOSの専用パッケージとしてPerlが用意されていることが多いですが、もし必要であれば以下からインストールファイルをダウンロードし、コンパイル・インストールをしてください。
GNSは、バージョン5以上のPerlでの動作を想定しています。もし特定のバージョンのPerlでの動作による不具合を発見した場合は、当方までお知らせいただければ幸いです。
Perlではさまざまな追加モジュールをインストールして使うことができますが、GNSはPerlの追加モジュールの導入の必要はありません。
nkf
nkfは、日本語ファイルの文字コードを変換するツールです。お使いのOSにnkfのパッケージがあればそれを導入、なければ以下からインストールファイルをダウンロードし、コンパイル・インストールをしてください。
GNSは、nkf v2.0以降での動作を想定しています。もし特定のバージョンのnkfでの動作による不具合を発見した場合は、当方までお知らせいただければ幸いです。
テキストエディタ
日記マスタの作成や、GNSの動作設定を行うには、テキストエディタが必要です。GNSの設定ファイルはEUC-JP形式で書かれているので、vi・emacsなどの「EUC-JPの編集に対応したテキストエディタ」をご用意ください。
もちろん、手許のWindowsやMacなどのパソコンで編集して、ftpなどで転送しても構いません。

これらの他に、GNS配布パッケージには、再配布可能なjcode.plというツールを組み込んでいます。もし必要であれば、以下からより新しいバージョンのjcode.plをダウンロードし、置き換えてください。

GNSを導入する

GNSは、zip版とtgz版の2つの配布形態をとっていますが、中身はどちらも同じです。ここでの導入では、tgz版を例に解説を行います。

ファイルを解凍する
GNSの解凍
▲GNSの解凍
GNSの配布パッケージとなっているファイルを、tar+gzipなどを使用して解凍してください。解凍先はどこでも構いませんが、ここでは「public_html/GNS」を解凍先とします。このフォルダを「GNSフォルダ」と呼びます。
解凍が終了すると、「public_html/GNS」の下に"gns300"などの名前のフォルダ("300"はバージョン番号です)が作成されます。これがGNSのプログラムや設定データが入っている部分です。同様に、このフォルダを「GNSプログラムフォルダ」と呼びます。
設定ファイルをコピーする
GNSの基本設定をするためのファイル"config.ph"を作成する必要があります。"config_sample.ph"からコピーして、作成してください。次の項で、この"config.ph"を編集します。
日記マスタ用のフォルダを作成する
「WWW環境」以外の使用方法では、日記マスタを収めるディレクトリを準備する必要があります。
WWW環境においては、GNSのCGIが自動的に準備するため、特別な作業を行う必要はありません。
デフォルトデータベースをコピーする
GNSは、日記マスタから日記ページを作るためのHTMLテンプレートや、マクロ置換用のデータなどを収めた「デフォルトデータベース」というものを持っています。GNSプログラムフォルダにある"keep"というフォルダがそれです。これは初期データであり、各ユーザーが自由に書き換えることができます。
WWW環境においては、GNSのCGIが自動的に準備するため、特別な作業を行う必要はありません。GNSのバージョンアップなどにおいても、データベースの管理作業は自動的に行われ、引き継いで使うことができます。
cssファイルをコピーする
GNSは、cssに対応したHTMLファイルを出力します。「[GNSプログラムフォルダ]/style」ディレクトリに、これらのHTMLに対応したcssファイルセットが収められています。好きなcssファイルを「GNSフォルダ」にコピーして利用してください。
plain ほとんどスタイル指定のないcssファイルです。オリジナルのスタイルを作るときの雛形として使います。
simple デフォルトのスタイル指定が入ったcssファイルです。
同じcssファイルを「GNSプログラムフォルダ」にもコピーすると、「GNS更新フォーム」でもスタイルが有効になります。
CGIスクリプトの起動プログラムを修正する
日記ページの作成に使うCGIスクリプト(*.cgi)をテキストエディタで開いて、1行目の「perlのコマンドライン」を、お使いの環境に合わせて修正してください。
CGIスクリプトに実行属性を追加する
日記ページの作成に使うCGIスクリプト(*.cgi)に、実行属性を付加しておいてください。
GNSプログラムフォルダを保護する
日記を作成するには、GNSプログラムフォルダ内のページをブラウザからアクセスする必要があります。ここは、著者であるあなた以外のアクセスはできないようにしておくべきです。.htaccessによるBASIC認証などを使って、あなた以外のアクセスを封じるようにしてください。

GNSの基本設定をする

GNSプログラムフォルダには、初期設定となる設定データがすでに入っています。しかし、このままでは日記名や公開先となるURI、連絡先となるメールアドレスなどがあなたのものではありません。まず、基本設定を行う必要があります。

ここでは、最小限の変更についてのみ解説します。詳細は、「config.phによる設定」をご覧ください。

config.phファイルを作成する
config.phを開く
▲config.phを開く
GNSプログラムフォルダに、"config_sample.ph"という名前のファイルがあります。これが、GNSの基本設定を司る"config.ph"ファイルのサンプルです。"config_sample.ph"をコピーして、"config.ph"を作成してください。
config.phファイルをテキストエディタで開く
config.phを開く
▲config.phを開く
"config.ph"というファイルが、GNSの基本設定を司るファイルです。テキストエディタで、このファイルを開いてください。
このファイルには多くの設定項目がありますが、ここで編集を行う必要があるのは、そのごく一部です。以下、順に編集項目を説明します。
公開URLベース名
# 公開URLベース名
$URLBASENAME = 'http://www.example.net/GNS/';

$URLBASENAME = 'http://www.example.ne.jp/GNS/';
日記を公開するときの、URLのディレクトリ名までの部分を編集します。この例では、公開URLのディレクトリ名「http://www.example.ne.jp/GNS/」フォルダにします。この下に日記ページが置かれます。
ダイジェストファイル名
# ダイジェストファイル名
$DIGESTNAME = 'digestdiary.html';

$DIGESTNAME = 'index.html';
日記を公開するときの、ダイジェストページのURLのファイル名部分を編集します。この例では、ダイジェストページのURLを「index.html」とします。「公開URLベース名」の例と組み合わせると、この日記のダイジェストページのURLは、「http://www.example.ne.jp/GNS/index.html」となります。
日記名
# 日記名
$DIARY_TITLE = 'GNS3による日記';

$DIARY_TITLE = 'だいだい だいありー';
日記の名前を編集します。この例では、「だいだい だいありー」という名前になります。
この項目は、出力される日記のすべてのページに埋め込まれます。
著者名
# 著者名
$DIARY_AUTHOR = 'yourname';

$DIARY_AUTHOR = 'あおい';
日記の著者名を編集します。この例では、「あおい」という名前になります。
この項目は、出力される日記のすべてのページに埋め込まれます。
著者メールアドレス
# 著者メールアドレス
$DIARY_EMAIL = 'yourmail@example.net';

$DIARY_EMAIL = 'aoi@example.ne.jp';
著者宛てのメールアドレスを編集します。この例では、「aoi@example.ne.jp」というアドレスになります。
この項目は、出力される日記のすべてのページに埋め込まれます。
日記の説明
# 日記の説明
$DIARY_DESCRIPTION = 'GNS3で日常を綴っています。';

$DIARY_DESCRIPTION = 'あおいの日々の記録です。';
この日記の簡単な説明文を編集します。この例では、「あおいの日々の記録です。」という説明になります。
この項目は、「RSSファイル」に埋め込まれます。
著作権表記
# 著作権表記
$DIARY_COPYRIGHT = 'Copyright (C)2004 GORRY.';

$DIARY_COPYRIGHT = 'Copyright (C)2004 あおい.';
この日記の著作権表記を編集します。この例では、「Copyright (C)2004 あおい.」という著作権表記となります。
この項目は、「RSSファイル」に埋め込まれます。
更新通知メール
# !0で更新通知メールを発信する
$FLAG_POSTMAIL = 0;

$FLAG_POSTMAIL = 1;
更新通知メールを出す場合は、この項を編集します。WWWで日記マスタを更新すると、その内容をメールで発信します。更新履歴を保存(バックアップ)したり、別のサーバにある日記のミラー(複製)を自動更新するのに便利です。
送信先は、次の「$MAILTO」で指定します。
更新通知メールの発信先
# 更新通知メールの発信先メールアドレス(postmail.pl)
$MAILTO = 'yourmail@example.net';

$MAILTO = 'akai@example.ne.jp';
更新通知メールを出す場合は、この項を編集します。前の「$FLAG_POSTMAIL」を1にすると、このアドレスに更新通知メールが発信されます。

以上で、編集は終了です。

GNSの環境チェックをする

GNSトップ画面
▲GNSトップ画面

以上が完了したら、いよいよブラウザからGNSを使用します。アクセス先は、「GNSプログラムフォルダのindex.html」です。上の例の場合は、「http://www.example.ne.jp/GNS/gns300/index.html」へアクセスしてください。右のような画面になります。

一番下の、[動作環境のチェック]をクリックしてください。


GNSチェック画面
▲GNSチェック画面

動作チェックが正しく終了した場合、右のような出力が得られます。何かエラーが発生した場合は、赤文字で表示されます。

パスワードを登録する

GNSパスワード登録画面
▲GNSパスワード登録画面

動作チェックが終了したら、「GNSプログラムフォルダのindex.html」ページから[パスワードの登録]をクリックして、パスワードを登録します。パスワードを登録しないと、日記を書くことはできません。

パスワード登録画面になったら、「PASSWORD」と「RETYPE PASSWORD」に同じパスワードを入れ、[OK]ボタンをクリックします。パスワードが同じでない場合は、受け付けられません。

すでにパスワードが登録されているときは、パスワードの登録を受け付けません。パスワードを再登録したいときは、ftpやシェルなどから「日記マスタフォルダのkeepディレクトリ」にある"upload.pass"を削除してください。

日記を書く

GNS更新フォーム
▲GNS更新フォーム

パスワードの登録が終了したら、GNSトップページへ戻り、[日記を書く]をクリックします。右のような画面が現れ、日記の書き込みができる状態になります。

画面上には、いくつかの操作子があります。順に解説します。

編集部
文書の編集を行う部分です。
入力フォーム
いちばん大きい入力枠が、日記の入力を行うエリアです。ここで、日記マスタや各種データとなる文書を編集します。
日付
年・月・日で数値を入力する枠が、日付を入力するエリアです。この日付の日記マスタや、各種データの読み出し・書き込みを行います。
(日記マスタでなく)各種データの読み書きを行うときは、ここには特殊な定数が入ります。このときは、[yesterday][tomorrow]ボタンは効きません。
yesterday
現在の日付に対して「昨日」の日記マスタを表示します。
latest
「最後に日記を書いた日」の日記マスタを表示します。
tomorrow
現在の日付に対して「明日」の日記マスタを表示します。
RESET
すべての操作子の状態を、初期値に戻します。
読み出し/書き込み
[OK]ボタンの動作を切り替えます。
[読み出し]のときに[OK]ボタンをクリックすると、指定日の日記マスタを読み出して表示します。
[書き込み]のときに[OK]ボタンをクリックすると、指定日の日記マスタ(または各種データ)を指定内容で更新します。
test
現在の日記マスタがどのように表示されるかをテスト表示します。
このボタンを押した直後は、まだ文書の更新は行われません。この状態でブラウザの画面を閉じると、現在編集中の文書は破棄されます。
(日記マスタでなく)各種データの編集をしているときは、このボタンは何も行いません。
OK
文書の読み出し、または書き込みを実行します。どちらを行うかは、「読み出し/書き込み」セレクタの内容に従います。
一覧も更新
このチェックをONにして日記マスタの書き込みを実行すると、インデックスページの更新も同時に行います。
インデックスページの更新の分だけ、CGIの動作時間が増えて遅くなります。ご注意ください。
PASS
登録したパスワードをここで入力しておかないと、文書の書き込みはできません。
Digest
ダイジェストページを別ウィンドウで表示します。
Help
このヘルプを表示します。
データベースの呼び出し部
ここから先は、(日記マスタでなく)日記ページに埋め込まれる各種データを集めた「データベース」を呼び出すためのボタンです。
データベースを更新しても、日記ページには即時反映されません。日記ページへの反映は、それ以降に作成した日記ページにのみ反映されます。
D-Head
ダイジェストページに埋め込まれる、「先頭からメモブロック直前まで」を表示します。タイトルや、各種注釈・注意書きなどをここで表示することを想定しています。
$KEEPDIR/10.htmlが対象です。
D-Memo1
ダイジェストページに埋め込まれる、「日記本文より手前のメモブロック」を表示します。読者に対して告知性の高いメモをここで表示することを想定しています。
$KEEPDIR/11.htmlが対象です。
D-Memo2
ダイジェストページに埋め込まれる、「日記本文より後のメモブロック」を表示します。著者にとってのメモをここで表示することを想定しています。
$KEEPDIR/20.htmlが対象です。
D-Foot
ダイジェストページに埋め込まれる、「メモブロックから末尾まで」を表示します。著作権表記・メールアドレス・著者名などをここで表示することを想定しています。
$KEEPDIR/21.htmlが対象です。
B-Head
ベースページに埋め込まれる、「日記本文より手前の部分」を表示します。タイトルや、各種注釈・注意書きなどをここで表示することを想定しています。
$KEEPDIR/30.htmlが対象です。
B-Foot
ベースページに埋め込まれる、「日記本文より後の部分」を表示します。著作権表記・メールアドレス・著者名などをここで表示することを想定しています。
$KEEPDIR/40.htmlが対象です。
L1-Head
年次インデックスページに埋め込まれる、「本文より手前の部分」を表示します。タイトルや、各種注釈・注意書きなどをここで表示することを想定しています。
$KEEPDIR/50.htmlが対象です。
L1-Foot
年次インデックスページに埋め込まれる、「本文より後の部分」を表示します。著作権表記・メールアドレス・著者名などをここで表示することを想定しています。
$KEEPDIR/51.htmlが対象です。
L2-Head
カテゴリインデックスページに埋め込まれる、「本文より手前の部分」を表示します。タイトルや、各種注釈・注意書きなどをここで表示することを想定しています。
$KEEPDIR/52.htmlが対象です。
L2-Foot
カテゴリインデックスページに埋め込まれる、「本文より後の部分」を表示します。著作権表記・メールアドレス・著者名などをここで表示することを想定しています。
$KEEPDIR/53.htmlが対象です。
ユーザーデータベースの呼び出し部
ここから先は、(日記マスタでなく)日記マスタから日記ページを生成するときの材料となる各種データを入力フォームに呼び出すためのボタンです。
Item
日付部などに埋め込まれるアイテム文字列を呼び出します。詳細は、以下をご覧ください。
$KEEPDIR/98.htmlが対象です。
URI
日記マスタ内の本文から、外部ページへのリンクを簡単に作成する、URI置換のデータベースファイルを呼び出します。詳細は、以下をご覧ください。
$KEEPDIR/99.htmlが対象です。
Macro
名前と引数を与えることでさまざまな文を自動生成できる、ユーザーマクロのデータベースファイルを呼び出します。詳細は、以下をご覧ください。
$KEEPDIR/97.htmlが対象です。
日付を指定
▲日付を指定

では、日記を実際に書いてみましょう。まず日付を指定します。日付に"2004"・"06"・"15"と入力し、読み書きセレクタを[読み出し]に設定し、[OK]ボタンをクリックしてください。

もしこの日の日記マスタがあれば表示されますが、なければ何も表示されません。

@title いか〜
@category 料理

@s
夕飯にイカを買ってくる。さくさくとさばいて、身は刺身、ゲソはにら・キャベツ・豚バラと野菜炒め、ワタとえんぺら・身とゲソの残りで塩辛に。

@s
・・・したはずだったんだが、最後に刺身を盛って食卓へ・・・というところで床へ皿が落下・・・(汗)。
▲日記マスタの例

次に、日記マスタを入力します。ここでは、以下の文章を入力してみます。

日記マスタを入力
▲日記マスタを入力

日記マスタの入力が終わったら、[test]ボタンをクリックします。これで、この日記マスタがどのように表示されるかを確認することができます。

これでよければ、読み書きセレクタを[書き込み]に設定し、[OK]ボタンをクリックしてください。日記マスタの書き込みと、日記ページの出力が行われます。

「Password Error.」という表示が出た場合は、パスワードの入力が正しくありません。ブラウザのBackボタンで戻り、正しいパスワードを「PASS:」に入力してから、再度[OK]ボタンをクリックしてください。

作成された日記は、[Digest]リンクをクリックすることで、すぐ見ることができます。確認してみてください。

作業中になんらかのエラーが発生した場合は、ブラウザ画面上にそれが表示されます。また、「[GNSプログラムフォルダ]/tmp/cgierr.log」にエラーログが記録されます。


更新通知メール

config.phの「$FLAG_POSTMAIL」を1にすると、ブラウザによる日記更新を行うたびに、その更新内容を指定メールアドレスへ発信することができます。

メールのフォーマットは、「メール環境」で発信するメールと同一です。詳細は、以下をご覧ください。