blosxom悪のマニュアル

このHTML文書は、 blosxomのインストールや設定・運営方法など、blosxomの利用方法を一通り説明するものです。 なんとなくどこかで見たような煽り文句があっても、貴方の心の隅っこに置いておいて、 決して反応したりしないで下さい。突っ込んだら負けです。

  1. blosxom or die!!
  2. インストールぶっこ抜き
  3. 文字化けハック
  4. 新規エントリー超入門
  5. カテゴリー分けで人気者!
  6. 悪用厳禁!テンプレートでデザインを変えろ!
  7. RSSでシンジケーションの裏テク!
  8. プラグイン機能で一刀両断!
  9. ダイナミックはもう古い!これからはスタティックの時代だ!
  10. blosxom万歳!

blosxom or die!!

blosxomって何?

blosxomはオフ書きのweblogツールです。 例えばMovable Typeなどのweblogツールは、ブラウザで管理者画面にアクセスし、 フォームに書き込んで投稿……など、すべてオンラインで管理を行います。

対してblosxomは、ローカル(オフライン)で書いた文章ファイルをFTPでサーバーにアップロードして、 CGIはそのファイルを読み込んで表示するだけというシンプルなものです。 シンプルといっても、カテゴリー分類、RSSの出力、Permalink、テンプレートによるデザインの変更など、 基本的な機能はそろっています。

なんかweblogってごちゃごちゃしてて……という貴方は、blosxomを試してみてはいかがでしょうか?

インストールぶっこ抜き

快適ダウンロード

公式サイトraelity bytesdownloadから、安定版のversion 1.2、またはベータ版の2.0をダウンロードします。 ベータ版はplug-in機能が新たにサポートされているので、今回はこちらを使って説明します。

設定を書き換えて楽々インストール!

解凍して出てきたblosxom_2_0_rc5.cgiを、 名前が長ったらしいのでblosxom.cgiと変更した後、 エディタで開き、設定をしましょう。 (blosxom_2_0_rc5.cgiは2003/06/16の時点でのバージョンです)

$blog_title

貴方のウェブログのタイトルです。 ここでは$blog_title = "幻ブログ";とします。

$blog_description

貴方のウェブログの説明を書きます。これはRSSなどに使われます。 ここでは$blog_description = "幻のブログは実在した!You is a Big fool man! Hahahaha...";とします。

$blog_language

貴方のウェブログの国名を書きます。日本ならばjaです。これはRSSなどに使われます。 ここでは$blog_language = "ja";とします。

$datadir

エントリーを保存するディレクトリをフルパスで指定します。 エントリーは日本語で言うと登録・記入といった意味でしょうか。 要するに貴方が書いた文章を保存するディレクトリです。 フルパスというのはルートディレクトリ(/)からはじまるパス名です(フルパスについては後述します)。 ここでは$datadir = "/usr/home/blosxom/db";とします。 相対パスでは上手く動作しませんでした。

$url

貴方のウェブログのURLを書きます。例えばhttp://blogdex.tripod.co.jp/blosxom/なら、 $url = "http://blogdex.tripod.co.jp/blosxom";と書きます。最後の/(スラッシュ)は書かないでください。 よく判らないなら空のままにしておいて下さい。

$depth

(※この項目は最初は変更しなくて構いません。判らない場合は0にしておいて下さい) blosxomは$datadirの中にディレクトリを作ることによってカテゴリ分けを行います。 $depth = 0;の場合は無限にディレクトリを辿ってカテゴリを作ります。 $depth = 1;の場合は$datadirのみからエントリーを読み込み、カテゴリー分けを行いません。 その他の数字を指定した場合は、その分の深さだけディレクトリを辿ります。

$num_entries

トップページにいくつのエントリーを表示するかの設定です。 ここでは10を設定します。 $num_entries = 10;

$file_extension

blosxomでは$datadirの中にある$file_extensionで設定した拡張子のファイルのみが、エントリーとして扱われます。 例えば$file_extension = "txt";なら、 $datadir/music.txtや$datadir/underground/proxy.txtはエントリーとして扱われますが、 $datadir/music.htmlや$datadir/underground/fuck.jpgはエントリーとして扱われません。 特に問題が無い限り、txtのままにしておきます。

$default_flavour

(6/19追記:さっきまで書いてたのは嘘ですわはは何書いてるんだ) 特に問題が無い限り、htmlのままにしておきます。

$show_future_entries

blosxomはエントリーファイルの最終更新日時(mtime)を日付として扱います。 この時、現在の時刻よりも先(未来)の日時が最終更新だった場合、 そのファイルをエントリーとして表示するかどうか、という設定です。 普通に更新作業をしていれば、おそらく縁の無いものですので0のままにしておいて下さい。

基本設定は以上です。 一行目のPerlのパス#!/usr/bin/perlを貴方のサーバーに合わせて変更し、 CGIファイルをアップロードすれば一先ず完了です。

文字化けハック

実は初期設定のまま利用すると日本語が文字化けするので、 text/html; charset=Shift_JISと書いたファイルをcontent_type.htmlという名前で$datadirに保存します。 Shift_JIS以外の文字コードを利用している場合はそれぞれ対応してください(EUC-JP,UTF-8など)。 これはCGIモジュールがデフォルトでISO-8859-1という文字コードをセットする為です。

新規エントリー超入門

それでは実際に何かエントリーを書いてみましょう。 blosxomは一行目をタイトル、二行目以降を内容として扱います。

はじまりです
blosxomを使った激ヤバblog、題して<em>幻ブログ</em>が開始したぜ!<br>
むやみにアクセスするとIP抜くぜ!
<font size="7" color="#ff0000">(爆)</font>
ギコハハハ(^^)/~~

上記内容をstart.txtという名前で保存し (もちろん名前は別のものでも構いません。ただし拡張子は$file_extensionと同じものにして下さい)、 $datadirの中にアップロードします。 ここではアップロードしたファイルの場所は/usr/home/blosxom/db/start.txtとします。

それではblosxom.cgiにアクセスしてみましょう。 先ほどのエントリーが表示されていれば成功です。 表示されない場合は$datadir$url$file_extensionなどの設定を見直して下さい。

デフォルトの設定では、 投稿はエントリーごとに<p></p>で囲まれます。 タイトルは<b></b>でマークアップされ、 次の行に本文、二行開けて更新時刻、path、permanent linkの順になります。

この調子で$datadirの中にエントリーファイルを追加していけば、 順調に更新していくことができます。 でもこのままでは何か物足りないですね。 カテゴリー分けは?デザインの変更は? そんな疑問には次項以降でお答えしましょう。

カテゴリー分けで人気者!

ある程度更新を重ねるうちに、エントリーをカテゴリー分けしたくなるかもしれません。 その場合は、$datadirの中に新たにディレクトリを作成するだけでOKです。 例えばhackerというカテゴリーを作りたい場合は、 hackerという名前のディレクトリを$datadirの中に作成するだけです。

例えば、hackerディレクトリの中にエントリーファイルをアップロードした後、 blosxom.cgiにアクセスすると、投稿時間(posted at XX:XX)の横にカテゴリ名が表示されているはずです。 posted at XX:XX | path: /hacker | permanent link to this entry もしhackerディレクトリの中のエントリーファイルが表示されていない場合は、 $depthなどの値を見直してください。

blosxomはカテゴリーの中にさらにサブカテゴリーを作ることが出来ます。 先ほどのhackerディレクトリの中に、また新たにwarezディレクトリを作り、 その中にエントリーファイルをアップロードしてみましょう。 posted at XX:XX | path: /hacker/warez | permanent link to this entry ちゃんと表示されましたか? もしhacker/warezディレクトリの中のエントリーファイルが表示されていない場合は、 $depthなどの値を見直してください。

このカテゴリーを上手く利用すればweblogが管理しやすくなり、 また閲覧者にとっても判りやすいWebサイトとなるでしょう。

悪用厳禁!テンプレートでデザインを変えろ!

HTMLを書きまくれ!

素のblosxomのデザインでは少々寂しいので、デザインを変更してみましょう。 blosxom.cgiをエディタで開き一番下までスクロールすると、 # Default HTML and RSS template bitsという部分があります。 このなにやらゴチャゴチャしている部分がblosxomのデフォルトのデザインになっています。 ただこの部分をそのまま変えるのは、失敗した時などに元に戻せなくなって困ることがあるので、 直接は変更しません。代わりにテンプレートファイルを作ります。

__DATA__から__END__の間の部分は、 「出力タイプ(flavour) 名前 HTMLソース」という形式になっています。 例えば2行目のhtml head <html>…なら、 head.htmlというファイルを作れば、HTMLソースを上書きすることができます。

あれこれ説明するよりも実際にやってみましょう。 以下のHTMLを全て$datadirの中に保存して下さい (面倒ならCSSの項でサンプルをダウンロードできるようにしてますので、そちらを利用してください)。

head.html
<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE html
   PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
    <meta http-equiv="Content-Type"
        content="text/html; charset=Shift_JIS" />
    <meta http-equiv="Content-Style-Type"
        content="text/css" />
    <link rel="alternate" type="application/rss+xml"
        title="RSS" href="$url/index.rss" />
    <title>$blog_title
        $path_info_da $path_info_mo $path_info_yr</title>
</head>
<body>
<h1>
    $blog_title
    $path_info_da $path_info_mo $path_info_yr
</h1>

<!--start of main-->
<div id="main">
date.html
<h2>$dw, $da $mo $yr</h2>
story.html
<div class="entry">
<h3><a name="$fn" id="$fn">$title</a></h3>
  <p class="body">
    $body
  </p>
  <p class="meta">
    posted at $ti |
    category: <a href="$url$path">$path</a> |
    <a href="$url/$yr/$mo_num/$da#$fn">Permalink</a>
  </p>
</div>
foot.html
</div>
<!--end of main-->

<p id="powered">
  <a href="http://www.raelity.org/apps/blosxom/">
    <img src="http://www.raelity.org/images/pb_blosxom.gif"
         alt="powered by blosxom." />
  </a>
</p>

</body>
</html>

blosxom.cgiにアクセスすれば、デフォルトのHTMLソースから、 新たに作ったテンプレートのHTMLソースに変更されていると思います。

$のついた謎の文字列は、 実際にやっているうちに判ってくると思いますが、 例えば$blog_titleがブログのタイトル(この例では「幻ブログ」)に置き換えられたり、 $urlがblosxom.cgiのURLに置き換えられるといった風に、 プログラムの中で変換される特別な文字列です。

CSSで超クール!

上記のようにテンプレートを保存したならば、 CSSでデザインを変更するのは容易でしょう。 サンプルを書いてみたのでよければ参考にしてください (CSSについてはここでは解説しません)。

CSSサンプル(HTMLファイルつき)

ちなみに、外部CSSを利用するには、head.htmlに以下のタグを付け足す必要があります。 CSSのURLは各自で変更して下さい。フルパスで書かないと正しく動作しません。

<link rel="stylesheet" type="text/css"
      title="CSS" href="http://YOURWEBSITE.com/index.css" />

RSSでシンジケーションの裏テク!

blosxomはRSSの出力機能を持っています。 URLはhttp://YOURWEBSITE.com/blosxom.cgi/index.rssになります(head.htmlを参照)。 しかし文字コードの問題が発生するため、若干設定をいじる必要があります。

まず以下の内容をcontent_type.rssという名前で$datadirに保存します (Shift_JIS以外の文字コードの場合はそれに応じて以降も変更してください)。

text/xml; charset=Shift_JIS

次に以下のソースをhead.rssという名前で同じように$datadirに保存します。

<?xml version="1.0" encoding="Shift_JIS"?>
<!-- name="generator" content="blosxom/$version" -->
<!DOCTYPE rss PUBLIC "-//Netscape Communications//DTD RSS 0.91//EN"
    "http://my.netscape.com/publish/formats/rss-0.91.dtd">
<rss version="0.91">
  <channel>
    <title>$blog_title $path_info_da $path_info_mo $path_info_yr</title>
    <link>$url</link>
    <description>$blog_description</description>
    <language>$blog_language</language>

これで"一応"設定は終了です。 "一応"と書いているのは、それ以外の点で注意が必要だからです。

blosxomが生成するRSSファイルはエントリーのタグが除去されません。 RSSファイルはXMLなので、開始タグ・終了タグが文法上正しく書かれていなくてはいけません (例えばbrのような空要素は<br>ではなく<br />)。 また、そもそもRSS v0.91の規格ではタグは許可されておらず、 プレーンテキストである必要があります。 この辺りを正しくしたい場合はRSS 2.0など新しいバージョンを利用するといいでしょう。

プラグイン機能で一刀両断!

気が向いたら書きます。わらい。

ダイナミックはもう古い!これからはスタティックの時代だ!

スタティックって何?

blosxomの欠点は、CGIにアクセスすると常に動的(ダイナミック)にHTMLを生成するため、 サーバーに負荷がかかりやすいということです。 そこで、HTMLファイルを事前に作成して、 閲覧者にはCGIを介さず直接HTMLファイルを見てもらう静的(スタティック)なHTML作成方法を紹介します。

スタティック設定の急所

ではblosxom.cgiをエディタで開き設定をしましょう。 "Static Rendering"から下の行です。

$static_dir

HTMLファイルを保存するためのディレクトリ名をフルパスで設定します。 ここでは$static_dir = "/usr/home/blosxom/archives";とします。 相対パスでは上手く動作しませんでした。

$static_password

HTMLファイルを作成する際に必要となるパスワードの設定です。 ここでは$static_password = "yourpassword";とします。

$static_flavours

静的ファイルを作成する際に、自動で作る出力タイプ(blosxomではflavourと呼びます)を設定します。 もしhtml・rss以外のflavour、例えばxmlを自動で作成したい場合は、 $static_flavours = qw/html rss xml/;とし、 $datadirの中にcontent_type.xml・head.xml・story.xml・foot.xmlを作成します。 RSSの違うバージョンを出力したい場合などに利用できそうです。 通常はデフォルトのまま利用します。

$static_entries

HTMLファイルを作成する際に、エントリーごとのHTMLも作成するかどうかの設定です。 例えばblosxom/db/start.txtというエントリーがあった場合、 blosxom/archives/start.htmlを作るかどうかということです。 0だとindexのみの作成となります。 ここでは$static_entries = 1;とします。

以上で設定は完了です。これから作成方法を解説しますが、 もし出来上がったファイルのリンクがおかしい場合は、$urlの設定を見直してください。 空だと上手くいかないことがあります。

ローカルでスタティックをメイク!

まずローカルで作成する方法を説明します。 ローカルで出来るならば、サーバー側がCGIを利用できる必要もありませんし、 できればこの方法を推進します。 これには貴方のパソコンにPerlがインストールされている必要があります。 Perlのインストール方法は解説しません。

WindowsならDOSプロンプト(コマンドプロンプト)、 MacOSXならターミナルを開き、blosxom.cgiがあるディレクトリに移動します。 移動後perl blosxom.cgi -password=yourpasswordと打てばあとは勝手に作成されます (yourpasswordの部分は$static_passwordに書いたパスワードに置き換えてください)。

cd /usr/home/blosxom
perl blosxom.cgi -password=yourpassword
Blosxom is generating static index pages...
/index.html
/index.rss
2003/index.html
2003/index.rss

-quietオプションをつけると画面への出力は行われません。

perl blosxom.cgi -password=yourpassword -quiet=1

普段は最終更新時刻を比較して静的ファイルを作成するかどうか自動で判断されますが、 -allオプションをつけると全てのファイルが強制的に再作成されます。

perl blosxom.cgi -password=yourpassword -all=1
Blosxom is generating static index pages...
/index.html
/index.rss
2003/index.html
2003/index.rss

サーバーでスタティックをメイク!

サーバーにCGIが置いてあるならば、以下のURLにアクセスするだけで作成されます (yourpasswordの部分は$static_passwordに書いたパスワードに置き換えてください)。

http://YOURWEBSITE.com/blosxom.cgi?-password=yourpassword

ファイルが多すぎたり、サーバーの設定でディレクトリが作成出来なかったりする場合は、 エラーが出ることもあるので、その場合は諦めてローカルで行ってください。

blosxom万歳!

駆け足で説明しましたが、いかがでしたでしょうか? blosxomの魅力を少しでも感じていただけたら幸いです。 文書中に間違いを見つけたら教えてくださいまし。 それでは今日も張り切ってレッツ・ブログ! blosxom万歳!

補足:フルパスについて

http://から始まるURLのこともフルパスと呼びますが、 ここではルートディレクトリからみたファイルの場所のことです。 WindowsならC:\のようなドライブ名からはじまりますが、 普通UNIXなどでは/(スラッシュ)から始まります。 よく判らない場合は、KENT WEBで配布されているFullPath Viewerを利用するといいでしょう。

お問い合わせはばるぼらまで。
blogdexjp@hotmail.com