「Akiary〜日記作成支援CGI〜」の導入記
-niftyでのCGI-

次へ

CGI とは

 CGI とは Common Gateway Interface の略です。
 通常のWebページでは、HTML 作成したページをそのまま表示するだけです。 アクセスするたびに内容の変化するWebページを作成するための仕組みも必要です。そのための仕組みのひとつがCGIです。 アクセス・カウンターは、ほとんどCGIで実現しています。
 CGIの仕組みは、ブラウザーからサーバに対し、CGIの起動を要求します。実際の要求は<a href=〜 などのURLに組み込みますので、閲覧者が意識することはありません。
 サーバは、要求に対しサーバ内でプログラムを実行します。プログラムの実行結果をもとに、HTML文を変更または作成し、ブラウザに返します。
 同様な仕組みのうちで、CGIは古くから使用されてきました。実行できるプログラムは多数あります。ときには、サーバにとって都合の悪いプログラムでも実行が出来てしまいます。そこで、多くの人が利用するプロバイダでは、CGIの利用に制限をかけていることが一般的です。
 CGIでプログラムを作る場合に使用する言語のうち、最も使用されているのは「Perl」です。【nifty】においても、CGIプログラムを自作する場合には、言語として「Perl」を使用する必要があります。

 同様に、サーバ側でプログラムを動かす仕組みには、PHPやASPやサーバサイドJavaなどがあります。
 また、ブラウザ側のコンピュータでプログラムを動かすしくみに、JavaScript、VBScript、Javaアプレットなどがあります。
 これら、Webブラウザをコンピュータ・プログラムのユーザ・インタフェースとして使用するアプリケーションを広い意味で、Webアプリと呼びます。現在、サーバサイドJava関連の技術は、盛んに開発されています。これから広く使われるだろうサーバサイドJavaを用いる方法を、CGIと区別する意味も含め、狭い意味のWebアプリと呼びます。

Akiaryのインストールまでのいきさつ

 2004年1月中旬、以前より考えていた、仕事を離れた、趣味のWebを公開することを決めました。
 パソコン通信の時代から使っていた、niftyのアカウントを復活させよう。niftyならCGIが使えるはずだ。調べてみると、Perlのみだが使えるようだ。
 掲示板等の仕掛けもレンタルを使うのでなく、自分で組み込んで、運営しよう。そこで、インターネット上で公開されている、CGIについて調べ始めました。
 候補にあがったのは、掲示板、日記、Wikiシステムでした。仕事場で実験用に使っているサーバで動作確認をしながら、選びました。

 掲示板については、Peelのみで動くこと。書き込みにResが付けられること。写真をテーマとするWebにしたいので、写真が添付できることを条件として、最終的には、「CGI RESCUE - ネットサーフレスキューWeb裏技」 http://www.rescue.ne.jp/から『簡易BBSエクセレント(MiniBBS-EX) 』を使わせてもらうことにしました。

 blog(ブログ/ブロッグ)またはWebLogというシステムが注目を集めています。
 Webを使って公開する日記のことです。作者の日々の出来事や感じたことを綴ったものや、仕事や趣味、興味を持っている分野などに関しての記録を公開するもの、また日記の形式を借りた創作物など内容はさまざまです。 毎日、または数日というような短い間隔で更新される個人的な情報発信の手段です。個人の手軽な情報発信の手段として、注目されています。
 日記を普通のWeb同様に作成するだけでは、特にblogが注目される理由にはなりません。しかし、更新頻度が高いので、更新がしやすい、HTMLについての知識がなくとも簡単に情報発信ができる使いやすい、blogツールが開発されています。
 さらに、ユーザ登録するだけで使用できる、blogのホスティング・サービスを開始するところが増えています。これによって、HTMLの知識や、専用のソフトを用意しなくても、ホームページを開くことができ、ホームページ作成の敷居が一段と低くなりました。
 数ある、blogシステムの中から、山本氏により製作された「Akiary〜日記作成支援CGI〜」を、私は選びました。
 

blogを知るためのページ
   「初めてのWeblog」blogとは何か
   【リンク集】誰でも作れる! Blogで新たな情報発信
  「Myblog Japan」blogのための検索サイト


Akiary

 「Akiary〜日記作成支援CGI〜」http://www.hi-ho.ne.jp/yakira/akiary/ から、『akiary051.lzh』をダウンロードします。
 つぎに『akiary051.lzh』を展開します。
 展開すると以下のファイルができます。
00customize.txt    : カスタマイズ方法
00history.txt      : 更新履歴
00readme.txt       : このファイル
00versionup.txt    : バージョンアップ方法
akiary.cfg         : 設定ファイル(同一ディレクトリ用)
akiary.cgi         : CGIスクリプト本体
akiary.cgi-dir.cfg : 設定ファイル(CGI専用ディレクトリ用)
akiary.hi-ho.cfg   : 設定ファイル(Hi-HO用)
lockfile           : ファイルロック用
tmpbn.html         : 日記テンプレート
tmpindex.html      : オプショナル日記(目次)テンプレート
tmpnew.html        : オプショナル日記(最新版)テンプレート
 インストール方法は『00readme.txt』に書いてあります。  

【nifty】での設定

 テキストエディタで『akiary.cgi』ファイルを修正します。

 1行目(Perlのパス)は【nifty】では、「#! /usr/local/bin/perl」のままです。
 CGIの1行目には、必ずパスの指定があります。プロバイダの指示によって変更します。ほとんどのプロバイダで「#! /usr/local/bin/perl」または「#! /usr/bin/perl」です。
 15行目にパスワードがあります。
  $PASSWORD = "YamamotoAkira";
 日記を他人に書き換えられないようにするためのパスワードです。必ず変更して下さい。
 以上で『akiary.cgi』の修正は終わりです。

 【nifty】では、CGIプログラムの実行は、ディレクトリ『/cgi-bin』で行います。 そこで、『00readme.txt』の「○専用ディレクトリでのみCGIが動作可能な場合」 にしたがって、設定します。
 すなわち、設定ファイル『akiary.cfg』は削除します。その後、設定ファイルは『akiary.cgi-dir.cfg』を 『akiary.cfg』に名前変更して使用します。
 『akiary.cfg』の11行目から26行目のファイル・ディレクトリの指定を、以下のように変更します。最後の日記のURLは、私の場合です。それぞれのURLに置き換えてください。
# 日記テンプレートファイル
diary_tmp_file="../homepage/diary/tmpbn.html"
# 日記ディレクトリ
diary_dir="../homepage/diary/"
# ロックファイルのディレクトリ
lock_dir="../homepage/diary/"
# オプショナル日記1のテンプレートファイル
opt_diary_tmp_file_1="../homepage/diary/tmpnew.html"
# オプショナル日記1の出力ファイル
opt_diary_file_1="../homepage/diary/new.html"
# オプショナル日記2のテンプレートファイル
opt_diary_tmp_file_2="../homepage/diary/tmpindex.html"
# オプショナル日記2の出力ファイル
opt_diary_file_2="../homepage/diary/index.html"
# 日記のURL
diary_url="http://homepage3.nifty.com/o_sama/diary/"
 サーバーに以下の通りFTPで転送します。アスキー・モードで転送する必要があります。[ ]内はパーミッションです。
 +-- cgi-bin/ [755]
 |    +-- akiary.cfg [644] (akiary.cgi-dir.cfg)
 |    +-- akiary.cgi [755] (CGIスクリプト本体)
 +-- homepage/ [777]
      +-- diary/ [777]
           +-- lockfile [666] (ファイルロック用)
           +-- tmpbn.html [644] (日記テンプレート)
           +-- tmpnew.html [644] (オプショナル日記(最新版)テンプレート)
           +-- tmpindex.html [644] (オプショナル日記(目次)テンプレート)
パーミッションについて
 CGIを動かすサーバの場合、主に使われているOSは、UNIXである。CGIを活用する場合、UNIXのパーミッションに対する知識が必要です。
 パーミッションとは、多くの利用者を前提とするUNIXの、ファイルとディレクトリに対するアクセスを、許可したり拒否する属性です。
 すべてのファイルとディレクトリには、ファイルの作成者である所有者と、所有者の属するグループである所属グループが決められています。そして、所有者、所属グループとその他の3種類のユーザそれぞれに対して、読込み、書込み、そして実行を許可するのか拒否するのかを決めます。
 パーミッションは3桁の8進数で表示します。上位より1桁目は所有者、2桁目は所属グループ、最後の桁はその他に対するパーミッションです。読込み許可なら4、書込み許可なら2、実行許可なら1とし、その和でそれぞれのパーミッションをあらわしています。
 たとえば[755]は、所有者にはすべてを許可し、所属グループとその他ユーザには読込みと実行を許可しています。
 CGIの場合、プログラムを実行するのはサーバの特別のユーザで、その他ユーザのパーミッションが適応されます。
 FTP転送をする場合、なにかFTPクライアント・ソフトを使うと思います。私の場合には「FFFTP」というソフトを使っています。「FFFTP」の場合、メニューの[コマンド]→[属性変更]でパーミッションの表示・変更ができます。


Akiaryの実行

 Webブラウザで、サーバーの『akiary.cgi』にアクセスして下さい。
 URLは、私の場合「http://hpcgi3.nifty.com/o_sama/akiary.cgi」です。

 パスワードを聞いてきますので、設定したものを入力して下さい。


 正しい場合は「更新/修正/削除」画面が現われます。


 日付と題名と内容を入力して、更新ボタンを押して下さい。
 ここでakiary.cgiは、日記テンプレートファイルを読み、ディレクトリ『/homepage/diary/』に日記ファイルを作成します。Akiaryの場合、閲覧者が呼び出すのは、作成された日記ファイルです。日記ファイルは普通のHTML文のファイルです。閲覧者は、直接CGIを呼び出すことはありません。
 日記ファイルの最新版のURLは、私の場合「http://homepage3.nifty.com/o_sama/diary/new.html」 です。


続き「日記テンプレートファイルの編集」