Serene Bach - weblog management system

TIPS

項目

複数のSerene Bachを設置する

Serene Bach自体はMovable Typeのような複数ウェブログ作成機能をサポートしていません。複数のウェブログを管理したい場合、その分のSerene Bachを設置する必要があります。

複数のSerene Bachを設置する際、それぞれのSerene Bachに対して、lib/, ext/, doc/, plugin/ を用意しても構わないのですが、同じファイルを別の場所にいくつも置くのは冗長ですし、バージョンアップにも手間がかかります。

Serene Bachではlib/, ext/, doc/, plugin/ を共有して利用する仕組みを用意しています。また、希望するならば lock/ も共有して利用できます。

ここでは具体例を挙げながら、各ディレクトリを複数のSerene Bachで共有化する方法について説明します。

以下のような構成を想定します。

ディレクトリ構成は以下のようになります。

  • /public_html/
    • sb0/
      • index.html
      • style.css
      • admin.cgi
      • sb.cgi
      • cnt.cgi
      • mb.cgi
      • init.cgi
      • addlib.cgi
      • data/
      • log/
      • img/
      • lock/
    • sb1/
      • index.html
      • style.css
      • admin.cgi
      • sb.cgi
      • cnt.cgi
      • mb.cgi
      • init.cgi
      • addlib.cgi
      • data/
      • log/
      • img/
      • lock/
    • doc/
    • lib/
    • ext/
    • plugin/

sb0/sb1/の中に置かれているaddlib.cgiというファイルに注目してください。このファイルは配布アーカイブには含まれていません。

addlib.cgiの中身は以下のようになります。

use lib qw(../lib ../lib/lang ../ext);
1;

適当なテキストエディタで上記の内容を保存します。ここで../libとなっているのはsb.cgiから見たlib/ディレクトリの位置になります。

今回の例ですと、sb0/sb1/に置くaddlib.cgiの内容は全く一緒で構いません。

続いて、init.cgiの設定を見てみます。

今回の例で、/public_html/がウェブ上ではhttp://www.example.com/でアクセスできるとしましょう。

sb0/に置かれたinit.cgiの設定は以下のようになります。

DataDir ./data/
DataSuffix .cgi
HelpSrv http://www.example.com/doc/
TempSrv http://www.example.com/lib/resource/
TempDir ../lib/resource/
WeblogId sb0
PluginDir ../plugin/

HelpSrv, TempSrv, TempDirなどは標準のinit.cgiでは設定されていない項目ですが、ヘルプドキュメントや管理画面で利用されている画像パーツを共有する際に必要になります。

WeblogIdは複数のSerene Bachを設置した際に、それぞれのSerene Bachで管理画面のCookie情報を混同しないようにするためのものです。

sb1/に置かれたinit.cgiの設定もほとんど一緒です。異なる部分を強調しています。

DataDir ./data/
DataSuffix .cgi
HelpSrv http://www.example.com/doc/
TempSrv http://www.example.com/lib/resource/
TempDir ../lib/resource/
WeblogId sb1
PluginDir ../plugin/

以上の設定で、複数のSerene Bachで各ディレクトリを共有することが可能です。環境設定などはそれぞれのSerene Bach毎に保存されます。

Serene BachではScriptPathは必須の設定項目ではありません。ScriptPathの設定はインストーラで設定することができます。

ウェブログコンテンツを全て動的に出力する

保存形式を「None」に設定していても、Serene Bachではトップページ(index.html)を静的に出力します。

Serene Bachではトップページも含めて全てのページを動的出力に切り替えることも可能です。携帯電話からのアクセスを自動判別させたいような場合に有効な運用方法になります。

以下のような手順になります。

  1. sb.cgiの名前を「inidex.cgi」に変える
  2. index.htmlの名前を適当な名称に変更する
  3. init.cgiにMainScriptTopIndexの設定を追加する
  4. .htaccessの設定を行う
  5. 保存形式を「None」に設定する

1番目と2番目の設定は念のためです。また、4番目の設定は環境によっては必要ありません。

sb.cgiの名前を「index.cgi」に変更します。これはトップページのアクセス先を「index.html」という静的なファイルからスクリプトに切り替えるための下準備です。

index.htmlの名前を例えば、「dummy.html」の名前にしておきます。Serene Bachではトップページ用のファイルがないと管理画面でエラーになってしまうため、ダミーのファイルが必要になります。

1番目と2番目で行った名称変更の設定を反映させるため、init.cgiの設定を変更します。上述の例の場合、

MainScript index.cgi
TopIndex dummy.html

を追加します。TopIndexは変更後のindex.htmlの名称を指定します。

環境によっては必要ありませんが、Serene Bachを設置したディレクトリで.htaccessを以下のように設定します。

DirectoryIndex index.cgi

この設定でウェブサーバ上のディレクトリアクセス先をindex.cgiにすることができます。

記事の固定リンクを動的出力のものにするために、保存形式を「None」にする必要があります。

管理画面の自動ログイン

管理画面にアクセスした際、通常ログイン画面が表示されます。

Serene Bachでは標準で管理ユーザ情報をCookieとしてブラウザに保存していますので、管理画面のアクセス方法を若干修正すれば、ログイン画面を飛ばすことができます。

管理画面に対して、例えば、http://www.example.com/sb/admin.cgiでアクセスしている場合、このアドレスをhttp://www.example.com/sb/admin.cgi?__mode=statusに変更します。

管理画面のCookie有効期間内であれば、ログイン画面を飛ばしてステータス画面に移行します。

通常、Serene Bachの管理画面のCookie有効期間は1日に設定されています。これを変更したい場合、例えば、有効期間を7日に設定したい場合は、init.cgiに以下のような設定を追加します。

AdminCookieDay 7

XML-RPC APIについて

以下のXML-RPCメソッドをサポートしています。

Serene Bachの仕様と適合しない一部のパラメータは無視されます。XML-RPC APIを利用することにより、XML-RPCクライアントからウェブログを更新することが可能です。

blogid ならびに appkey は Serene Bach では利用されません。任意の文字列を指定することができます。

XML-RPC APIのエンドポイントは管理用スクリプト(admin.cgi)のアドレスになります。

blogger.newPost
機能
新しい記事を投稿します。
引数
appkey [string], blogid [string], username [string], password [string], content [string], publish [boolean]
返値
成功すると記事ID(string)を返します。
blogger.editPost
機能
記事ID(postid)の記事を上書きします。
引数
appkey [string], postid [string], username [string], password [string], content [string], publish [boolean]
返値
成功するとtrueを返します。
blogger.getRecentPosts
機能
Serene Bachに投稿された記事の一覧を取得します。
引数
appkey [string], blogid [string], username [string], password [string], numberOfPosts [int]
返値
取得に成功した記事の数だけ記事情報を含んだ構造体の配列を返します。
補足
記事情報は以下の項目を含みます。
  • dateCreated [dateTime.iso8601]
  • userid [string]
  • postid [string]
  • content [string]
blogger.getUsersBlogs
機能
ユーザーが投稿可能なウェブログの情報を取得します。
引数
appkey [string], username [string], password [string]
返値
投稿可能なウェブログ情報の構造体を含んだ配列(Serene Bachの場合ひとつ)を返します。
補足
ウェブログ情報は以下の項目を含みます。
  • url [string]
  • blogid [string]
  • blogName [string]
blogger.getUserInfo
機能
ユーザーの情報を取得します。
引数
appkey [string], username [string], password [string]
返値
ユーザー情報の構造体を返します。
補足
ユーザー情報は以下の項目を含みます。
  • userid [string]
  • firstname [string]
  • lastname [string]
  • nickname [string]
  • email [string]
  • url [string]
blogger.deletePost
機能
記事ID(postid)の記事を削除します。
引数
appkey [string], postid [string], username [string], password [string], publish [boolean]
返値
成功するとtrueを返します。
metaWeblog.newPost
機能
新しい記事を投稿します。
引数
blogid [string], username [string], password [string], content [struct], publish [boolean]
返値
成功すると記事ID(string)を返します。
補足
content [struct]は以下の項目を含みます。
  • title [string]
  • description [string]
  • dateCreated [dateTime.iso8601]
  • mt_allow_comments [int]
  • mt_allow_pings [int]
  • mt_convert_breaks [string]
  • mt_text_more [string]
  • mt_excerpt [string]
  • mt_keywords [string]
  • mt_tb_ping_urls [array]
metaWeblog.editPost
機能
記事ID(postid)の記事を上書きします。
引数
postid [string], username [string], password [string], content [struct], publish [boolean]
返値
成功するとtrueを返します。
補足
content [struct]は以下の項目を含みます。
  • title [string]
  • description [string]
  • dateCreated [dateTime.iso8601]
  • mt_allow_comments [int]
  • mt_allow_pings [int]
  • mt_convert_breaks [string]
  • mt_text_more [string]
  • mt_excerpt [string]
  • mt_keywords [string]
  • mt_tb_ping_urls [array]
metaWeblog.getPost
機能
記事ID(postid)の記事情報を取得します。
引数
postid [string], username [string], password [string]
返値
成功すると記事情報の構造体を返します。
補足
記事情報は以下の項目を含みます。
  • dateCreated [dateTime.iso8601]
  • userid [string]
  • postid [string]
  • title [string]
  • description [string]
  • link [string]
  • permaLink [string]
  • mt_allow_comments [int]
  • mt_allow_pings [int]
  • mt_convert_breaks [string]
  • mt_text_more [string]
  • mt_excerpt [string]
  • mt_keywords [string]
metaWeblog.getRecentPosts
機能
Serene Bachに投稿された記事の一覧を取得します。
引数
blogid [string], username [string], password [string], numberOfPosts [int]
返値
取得に成功した記事の数だけ記事情報を含んだ構造体の配列を返します。
補足
記事情報は以下の項目を含みます。
  • dateCreated [dateTime.iso8601]
  • userid [string]
  • postid [string]
  • title [string]
  • description [string]
  • link [string]
  • permaLink [string]
  • mt_allow_comments [int]
  • mt_allow_pings [int]
  • mt_convert_breaks [string]
  • mt_text_more [string]
  • mt_excerpt [string]
  • mt_keywords [string]
metaWeblog.newMediaObject
機能
ファイルをサーバに転送します。
引数
blogid [string], username [string], password [string], file [struct]
返値
転送したファイルの url を返します。
補足
file [struct]は以下の項目を含みます。
  • bits [base64]
  • name [string]
  • type [string]
mt.getCategoryList
機能
ウェブログに設定されたカテゴリー一覧を取得します。
引数
blogid [string], username [string], password [string]
返値
カテゴリー情報を含んだ構造体の配列を返します。
補足
カテゴリー情報は以下の項目を含みます。
  • categoryId [string]
  • categoryName [string]
mt.setPostCategories
機能
記事ID(postid)のカテゴリーを設定します。
引数
postid [string], username [string], password [string], categories [array]
返値
成功するとtrueを返します。
補足
categories [array]の各項目は以下の項目を含む構造体です。
  • categoryId [string]
  • isPrimary [boolean]
mt.getPostCategories
機能
記事ID(postid)のカテゴリーを取得します。
引数
postid [string], username [string], password [string]
返値
その記事に設定されたカテゴリー情報を含んだ構造体の配列を返します。
補足
カテゴリー情報は以下の項目を含みます。
  • categoryId [string]
  • categoryName [string]
  • isPrimary [boolean]
mt.getRecentPostTitles
機能
Serene Bachに投稿された記事の一覧を取得します。
引数
blogid [string], username [string], password [string], numberOfPosts [int]
返値
取得に成功した記事の数だけ記事情報を含んだ構造体の配列を返します。
補足
記事情報は以下の項目を含みます。
  • dateCreated [dateTime.iso8601]
  • userid [string]
  • postid [string]
  • title [string]
mt.publishPost
機能
指定した記事とトップページを再構築します。
引数
postid [string], username [string], password [string]
返値
成功するとtrueを返します。
補足
Serene Bachでは指定した記事のステータスは変更されません(非公開記事は非公開のまま)。トップページは再構築されます。保存形式によっては記事が含まれるhtmlファイルを構築し直します。
mt.supportedMethods
機能
Serene Bachがサポートしているメソッド一覧を取得します。
引数
なし
返値
サポートしているメソッドの配列を返します。
mt.supportedTextFilters
機能
該当ウェブログでサポートしているテキストフィルタ一覧を取得します。
引数
なし
返値
サポートしているテキストフィルタ情報の配列を返します。
sb.getMediaObjectList
機能
アップロードされている画像ファイル一覧を取得します。
引数
blogid [string], username [string], password [string], numberOfObjects [int]
返値
アップロードされている画像ファイル情報の配列を返します。
補足
画像ファイル情報は以下の項目を含みます。
  • objectid [string]
  • dateCreated [dateTime.iso8601]
  • name [string]
  • url [string]
sb.getMediaObject
機能
アップロードされている画像ファイルを取得します。
引数
blogid [string], objectid [string], username [string], password [string]
返値
指定された画像ファイルをbase64でエンコードした内容を返します。
sb.deleteMediaObject
機能
アップロードされている画像ファイルを削除します。
引数
blogid [string], objectid [string], username [string], password [string]
返値
成功するとtrueを返します。
補足
サムネイル画像がある場合、サムネイル画像も同時に削除します。

あまり役に立たない用語集

ウェブログ

ウェブログはウェブ上に綴られたある連続した記事群(日記など)を称することが多いようです。ブログと呼称されることもあります。

エントリー

個別の記事のことをSerene Bachではエントリーと呼ぶことがあります。

コメント

Serene Bachでは登録された記事に対して閲覧者がコメントを寄せることが出来ます。

トラックバック

ある記事(元記事)に対して言及した記事があった場合、元記事に対して言及したことを半自動的に通知する仕組みです。元記事から言及記事に対して自動的にリンクが貼られることが多いようです。

JUGEM

(株)paperboy&co.により2004年2月から運営されているレンタルウェブサービスです。詳細についてはhttp://jugem.jpをご覧下さい。

Movable Type

シックス・アパート株式会社より提供されている強力なウェブログ管理ツールです。詳細についてはhttp://www.movabletype.jp/をご覧下さい。カスタマイズ性に富み、Serene Bachでは出来ないような大規模なサイト運営も可能になっています。

sb

Serene Bachの前身にあたるpure perlによる簡易なウェブログ構築支援ツール。JUGEMと互換性のあるテンプレートが利用できるのが特徴。

Serene Bach

sbの基本機能を引き継ぐことを第一としてほぼ一から作り直したウェブログ構築支援ツール。オブジェクト指向によるアプローチで組まれていて、コードの汎用性は増している……といいな。

bachはバッチと読み、ニュージーランド英語で「簡素な小別荘」という意味があります。


Copyright © SimpleBoxes/SerendipityNZ Ltd. 2004-2006, All rights reserved. [Serene Bach 2.07D]