[目次へ戻る]

すぐ使えるCGI 画像付 ウェブページ更新ツール(Shift_JIS 版) 説明書

ディレクトリ構成と環境変数の設定例


  1. 本番運用の設定例

    CGIを設置したディレクトリはむやみと一般からアクセスされないようにアクセス制限を行うので、ファイル書き出しディレクトリ webdir/ はその制限を受けないように別の場所に設置する必要があります。
    このため、本番運用の際は 書き出しディレクトリ( $conf{web_dir}$conf{relative_web_dir} )は必ず変更して下さい。

    下記は webdir/ ディレクトリを別の場所に設置する場合の例です。
    ディレクトリ webdir/ は FTPソフトなどで予め作成し、書き込み権限を設定して下さい。

    ディレクトリの設置例
    / (ルートディレクトリ)
       |-- public_html/
            |-- admintool/          ←このディレクトリに Basic 認証
            |    |-- admin/
            |    |-- data/
            |    |-- tempfiles/
            |    |-- templates/
            |
            |-- webdir/
    変更する環境変数
    $conf{web_dir} = '../../webdir/';
    $conf{relative_web_dir} = '../../webdir/';
  2. データファイルを別ディレクトリに設置する場合

    CGIが読み書きするデータを、ウェブサイト領域とは別の場所に設置する場合の例です。

    ディレクトリの設置例
    / (ルートディレクトリ)
       |-- public_html/
       |    |-- admintool/        ←このディレクトリに Basic 認証
       |    |    |-- admin/
       |    |    |-- tempfiles/
       |    |
       |    |-- webdir/
       |
       |-- cgi-data/
            |-- for_admintool/
                 |-- data/
                 |-- templates/
    変更する環境変数
    $conf{data_dir} = '../../../cgi-data/for_admintool/data/';
    $conf{templatedir} = '../../../cgi-data/for_admintool/templates/';
    $conf{web_dir} = '../../webdir/';
    $conf{relative_web_dir} = '../../webdir/';
    ポイント
    tempfiles/ ディレクトリはウェブサイト領域に残します。
  3. HTML 用ディレクトリ内に CGI 専用ディレクトリがある場合

    HTML ファイルなどを設置する通常の HTML 用ディレクトリの中に CGI 専用ディレクトリがある場合の例です。

    ディレクトリの設置例
    / (ルートディレクトリ)
       |-- public_html/
            |
            |-- webdir/
            |
            |-- tempfiles/             ←このディレクトリに Basic 認証(任意)
            |
            |-- cgi-bin/
                 |-- admintool/        ←このディレクトリに Basic 認証(必ず)
                      |-- admin/
                      |-- data/
                      |-- templates/
    変更する環境変数
    $conf{file_dir} = '../../../tempfiles/';
    $conf{relative_file_dir} = '../../../tempfiles/';
    $conf{web_dir} = '../../../webdir/';
    $conf{relative_web_dir} = '../../../webdir/';
    ポイント
    tempfiles/ ディレクトリの Basic 認証は、「編集途中の記事の添付画像にも外部から絶対アクセスされたくない」という場合に設定して下さい。
    tempfiles/ には確定していない記事に添付された画像が保存されますが、そのまま一定時間が経つと次回作業時に削除されます。
  4. CGI専用ディレクトリがHTML用ディレクトリの外にある場合

    CGIを、通常のHTMLファイルとは別の専用ディレクトリに設置しなければならないサーバでの設置例です。

    ディレクトリの設置例
    / (ルートディレクトリ)
       |-- htdocs/
       |    |-- webdir/
       |    |-- tempfiles/        ←このディレクトリに Basic 認証(任意)
       |
       |-- cgi-bin/
            |-- admintool/        ←このディレクトリに Basic 認証(必ず)
                 |-- admin/
                 |-- data/
                 |-- templates/
    変更する環境変数
    $conf{file_dir} = '../../../htdocs/tempfiles/';
    $conf{relative_file_dir} = '../../../tempfiles/';
    $conf{web_dir} = '../../../htdocs/webdir/';
    $conf{relative_web_dir} = '../../../webdir/';
    ポイント
    /htdocs/ がコンテンツディレクトリ( /htdocs/index.html などがトップページ)、/cgi-bin/ がCGI専用ディレクトリの場合の相対パスと絶対パスの計算例を示します。

    上記のように設置すると、管理画面のURL は http://www.example.co.jp/cgi-bin/admintool/admin/admin.cgi になります。
      
    書き出しディレクトリ /htdocs/webdir/ のURLは http://www.example.co.jp/webdir/ となります。

    $conf{web_dir} はFTPソフトなどで見た場合の相対パス「 ../../../htdocs/webdir/ 」を設定しますが、 $conf{relative_web_dir} にはURL上の相対パス「 ../../../webdir/ 」を指定して下さい(下記参照)。

    $conf{web_dir} の相対パスの計算

    /cgi-bin/admintool/admin/admin.cgi (起点)
      ↓
    /cgi-bin/admintool/admin/  (自分と同じディレクトリ。相対パス = ./
      ↓
    /cgi-bin/admintool/  (1つ上。相対パス = ../
      ↓
    /cgi-bin/  (2つ上。相対パス = ../../
      ↓
    /       (3つ上。相対パス = ../../../
      ↓
    /htdocs/  (3つ上から1つ下。相対パス = ../../../htdocs/
      ↓
    /htdocs/webdir/  (さらに1つ下。相対パス = ../../../htdocs/webdir/

    $conf{relative_web_dir} の相対パスの計算

    http://www.example.co.jp/cgi-bin/admintool/admin/admin.cgi (起点)
      ↓
    http://www.example.co.jp/cgi-bin/admintool/admin/  (自分と同じディレクトリ。相対パス = ./
      ↓
    http://www.example.co.jp/cgi-bin/admintool/  (1つ上。相対パス = ../
      ↓
    http://www.example.co.jp/cgi-bin/  (2つ上。相対パス = ../../
      ↓
    http://www.example.co.jp/  (3つ上。相対パス = ../../../
      ↓
    http://www.example.co.jp/webdir/  (3つ上から1つ下。相対パス = ../../../webdir/

    なお、$conf{relative_web_dir} はサーバルートからの絶対パスでの指定も可能です(下記例)。
    $conf{relative_web_dir} = '/webdir/';
    ポイント
    tempfiles/ の指定($conf{file_dir}$conf{relative_file_dir})ついても同様です。

    tempfiles/ ディレクトリの Basic 認証は、「編集途中の記事の添付画像にも外部から絶対アクセスされたくない」という場合に設定して下さい。
    tempfiles/ には確定していない記事に添付された画像が保存されますが、そのまま一定時間が経つと次回作業時に削除されます。
  5. コンパクトに設置: admin/ ディレクトリの中にまとめて設置する場合

    admin/ ディレクトリの中に、admin.cgi と並置して その他のディレクトリをまとめて設置しても構いません。

    ディレクトリの設置例
    / (ルートディレクトリ)
       |-- public_html/
            |
            |-- admin/              ←このディレクトリに Basic 認証
            |    |-- admin.cgi
            |    |-- data/
            |    |-- templates/
            |    |-- tempfiles/
            |
            |-- webdir/
    変更する環境変数
    $conf{data_dir} = './data/';
    $conf{templatedir} = './templates/';
    $conf{file_dir} = './tempfiles/';
    $conf{relative_file_dir} = './tempfiles/';
    $conf{web_dir} = '../webdir/';
    $conf{relative_web_dir} = '../webdir/';
  6. Windows の場合の設定例

    Windowsで稼動させる場合、絶対パスでないとアクセスできない場合があります(特にIISの場合)。
    相対パスでうまくいかない場合は絶対パスを指定して下さい。

    相対パスが使える場合は、他の環境と同様の設定ができます。

    なお、Windows の場合でも、プログラムに記載するディレクトリの区切は「\」(円マーク または バックスラッシュ)ではなく「/」(スラッシュ)です。

    ディレクトリの設置例
    C:(ドライブ名)
       |-- Inetpub/
            |-- wwwroot/
                 |-- admintool/         ←このディレクトリをアクセス制限
                 |    |-- admin/
                 |    |-- data/
                 |    |-- templates/
                 |    |-- tempfiles/
                 |
                 |-- webdir/
    変更する環境変数
    $conf{data_dir} = 'C:/Inetpub/wwwroot/admintool/data/';
    $conf{templatedir} = 'C:/Inetpub/wwwroot/admintool/templates/';
    $conf{file_dir} = 'C:/Inetpub/wwwroot/tempfiles/';
    $conf{relative_file_dir} = '../tempfiles/';
    $conf{web_dir} = 'C:/Inetpub/wwwroot/webdir/';
    $conf{relative_web_dir} = '../../webdir/';
    ポイント
    $conf{relative_web_dir} は上記の通り相対パスで記載するか、ウェブサーバのトップ階層からの絶対パスで指定します(下記例)。

    $conf{relative_web_dir} = '/webdir/';
    ポイント
    $conf{relative_file_dir} も同様にウェブサーバのトップ階層からの絶対パスでも指定できます(下記例)。

    $conf{relative_file_dir} = '/admintool/tempfiles/';
[目次ページへ戻る] [このページのトップへ戻る]