Dawn on the Prairie

ウェブログツール "Serene Bach" (http://serenebach.net/) 3.x 版の tips とプラグインの公開サイトです。


ENTRIES

静的ファイルと CGI を分離して設置する: Serene Bach 3 β版編

……多くの方がお待ちなのはプラグインなのだろうなぁと思いつつ、ファイル構成はサイト運営の基本なので、こっちを先に公開したりする次第です。

Serene Bach 3 も、配布されたままの状態で設置すると HTML ファイルと CGI ファイルが同じディレクトリ配下に格納されます。が、レンタル Web スペースの中には CGI を格納するディレクトリと HTML を格納するディレクトリを分けなければならないところもあります。本記事では、そういう Web スペースをお使いの場合に Serene Bach 3.x 版で CGI ファイルと HTML ファイルや画像ファイルを分けて設置する方法を説明します。

本記事の説明の適用が必要になるのは以下のようなケースです。

  • CGI ファイルは /cgi-bin 配下、HTML ファイルは /public_html 配下に格納してください等、CGI ファイルと HTML ファイルを別に格納する必要がある旨明記されているサーバをお使いの場合。
  • 配布された状態のまま設置して install.cgiadmin.cgi にアクセスした時、管理画面に CSS や画像が全く反映されないサーバをお使いの場合。

なお、本稿を記述した時の最新版である b015 版現在、まだ本体にヘルプファイルが同梱されていません。上記の条件に当てはまるサーバーでは別途ヘルプファイルの設定も必要なはずなので、本記事の内容は 3.x の正式版に適用するには不完全になる可能性もあることをご承知おきください。ヘルプファイルの同梱が始まり次第、別途記事を書きたいと思います。

あと、これはどうでもいいことですが、2.x 版までこのコンテンツはデータと CGI を分離するというタイトルでした。が、実際のところデータベースファイルと CGI は分離されていないので、今回タイトルを修正してみました。本当の意味でのデータと CGI の分離というか、ライブラリ共有にあたる設定についてはまた別途触れてみようかなと考えています。……ご要望があれば、ですが。

最初の前提として、本設定においてトップページ以下の HTML ファイル格納先が http://www.example.com/(ディレクトリは /public_html)、CGI ファイルの格納先が http://www.example.com/cgi-bin/sb3/(ディレクトリは /cgi-bin/sb3)であるものとします。

まず、sb開発研究所からダウンロードしたアーカイブをそのまま展開した場合のファイル構成とディレクトリ/ファイルに付与する権限(パーミッション)について簡単に載せておきます。本来なら基本的な設定は本体のヘルプを参照していただくところですが、2008 年 12 月現在まだヘルプファイルは同梱されていません。なお、同じ権限を付与するファイルをグループに分けてあります。

+ public_html/(HTML ファイル格納ディレクトリ)
|
+ cgi-bin/(CGI 格納ディレクトリ)
   +- sb3/
       +- admin.cgi    ... CGI の実行権が必要 [755]
       +- cnt.cgi
       +- install.cgi
       +- mb.cgi
       +- sb.cgi
       |
       +- init.cgi     ... CGI からの読み込み権が必要 [644]
       |
       +- index.html   ... CGI からの書き込み権が必要 [666]
       +- style.css
       |
       +- data/        ... CGI からの書き込み権が必要
       +- img/             (ディレクトリ [777]、ファイル [666])
       +- lock/
       +- log/
       +- template/
       |
       +- lib/         ... CGI からの読み込み権が必要
       +- plugin/          (ディレクトリ [755]、ファイル [644])
       +- resource/
       +- ext/

ext/ は、インストーラの最初の画面でライブラリの不足を指摘されて先に進めない場合に利用する外部モジュール群のディレクトリです。必要な場合は、Serene Bach 2 正式版のダウンロードページにある sb_ext をダウンロードしてください。

Serene Bach 2.x 版では、管理画面で直接利用する静的ファイル(CSS や画像パーツ、スクリプトなど)が lib/resource 配下にありましたが、3.x 版では resource に分離されました。これにより、2.x 版ではディレクトリ分割パターンを 2 種類ご説明しましたが、3.x 版では 1 種類のみになります。

そして、分割後のファイル構成は以下の通りです。権限は分離後も同じように設定してください。

+ public_html/(HTML ファイル格納ディレクトリ)
|  +- index.html
|  +- style.css
|  +- log/
|  +- img/
|  +- template/
|  +- resource/
|
+ cgi-bin/(CGI 格納ディレクトリ)
   +- sb3/
       +- admin.cgi
       +- cnt.cgi
       +- install.cgi
       +- mb.cgi
       +- sb.cgi
       +- init.cgi
       +- data/
       +- lock/
       +- lib/
       +- plugin/
       +- ext/

ファイル構成を変えると、init.cgi に新たな設定が必要です。上記の構成で設定する場合は以下のようになります。

#!/usr/bin/perl
# 
# Serene Bach - weblog management system
# == Author(s) : Takuya Otani <......................> ==
# == Copyright (C) 2007 SimpleBoxes/SerendipityNZ Ltd. ==

# --- database setting MySql
# driver    Mysql
# db_param  {user   root}
# db_param  {pass   password}
# db_param  {name   serenebach}
# db_param  {prefix sb}
# db_param  {host   localhost}
# db_param  {port   3306}
# --- database setting SQLite
driver  Sqlite
db_param    {name   ./data/data.db}
db_param    {prefix sb}
# --- database setting Text
# driver    Text
# db_param  {suffix .cgi}
# db_param  {index  id}
# db_param  {name   ./data/}
# db_param  {lock_file  save}
# db_param  {tmp_file   _tmp}
# db_param  {unit   100}
# --- database setting TextOld
# driver    TextOld
# db_param  {suf    .cgi}
# db_param  {idx    id}
# db_param  {dir    ./data/}
# db_param  {lock   save}

BaseDir ../../public_html/
TempSrv http://www.example.com/resource/

データベースに Text および SQLite を使う場合はデータ格納ディレクトリを決定する必要がありますが、上のファイル構成ではデフォルトから変更はありません。

その他、必ず追加が必要な設定を強調表示してあります。詳細は以下の通りです。

BaseDir
CGI ファイル格納ディレクトリから HTML 格納ディレクトリへの相対パスを記述します。相対パスとは、サーバ内のファイルの位置を相対的に表すものです。例では/cgi-bin/sb3 からディレクトリを 2 つ上がって、/public_html へ下りるという意味の記述になっています。なお、/ から始まる絶対パスで記述しても構いませんが、web サーバーで認識できる絶対パスは FTP などでアクセスした場合の絶対パスと異なる場合がありますので、サーバーのヘルプをよく読んでください。
TempSrv
管理画面で直接利用される静的ファイルのアドレスを記述します。たまに、名前で「template ディレクトリの位置」を記述するものと勘違いされる方がいますが、実際には管理画面用の設定です。

なお、3.x 版では、init.cgi の書き方について少し注意しなければならないことがあります。それは、キーと値(BaseDir とパス等)の間は必ずタブ文字 1 つで区切ることと、キーの前にスペースやタブ文字を置いてインデントしてはいけないということです。特に、どこかに書いてある記述をコピー&ペーストするような場合には起こりがちな間違いですので、十分注意してください。上の init.cgi 記述例でも、表示の都合であえて半角スペースを使っていますので、上の記述例をそのままコピー&ペーストで利用しないようにしてください。

さて、init.cgi の編集が終わってインストーラ(install.cgi)を起動すると、順調に行けば以下のような画面が表示されます。

インストーラ『環境設定』画面

スクリプトパスサーバアドレスに、install.cgi が格納された場所のアドレスが入っていますが、ここでサーバアドレスの変更が必要になります。サーバアドレスとは、トップページ以下の HTML ファイルが格納される場所へのアドレスです。つまり、この例の場合では http://www.example.com/ になります。

変更が終わったら、次へボタンを押下してインストールを継続します。

以上でデータと CGI の分割設定は終了です。


コメント(日付順)▼コメントフォームへ

NoComment

コメントはありません。

コメントする

コメントフォーム
  • ブラウザの JavaScript 機能が有効でないとコメントできません。
  • URI は自動リンクされます。
  • HTML タグは使えません(実体参照化されます)。
  • 初めてコメントされる場合は、一度このサイトについてに目を通してください。

トラックバック

この記事のトラックバックURI
http://dawn.sweet-smile.org/tb.cgi/1

トラックバックはありません。