CGIを設置したディレクトリはむやみと一般からアクセスされないようにアクセス制限を行うので、ファイル書き出しディレクトリ webdir/
はその制限を受けないように別の場所に設置する必要があります。
このため、本番運用の際は 書き出しディレクトリ( $conf{web_dir}
と $conf{relative_web_dir}
)は必ず変更して下さい。
下記は webdir/
ディレクトリを別の場所に設置する場合の例です。
ディレクトリ webdir/
は FTPソフトなどで予め作成し、書き込み権限を設定して下さい。
icons/
ディレクトリは webdir/
内に設置して下さい。書き込み権限は不要です。
/ (ルートディレクトリ)
|-- public_html/
|-- admintool/ ←このディレクトリに Basic 認証
| |-- admin/
| |-- data/
| |-- tempfiles/
| |-- templates/
|
|-- webdir/
|-- icons/
CGIが読み書きするデータを、ウェブサイト領域とは別の場所に設置する場合の例です。
/ (ルートディレクトリ)
|-- public_html/
| |-- admintool/ ←このディレクトリに Basic 認証
| | |-- admin/
| | |-- tempfiles/
| |
| |-- webdir/
| |-- icons/
|
|-- cgi-data/
|-- for_admintool/
|-- data/
|-- templates/
tempfiles/
ディレクトリはウェブサイト領域に残します。HTML ファイルなどを設置する通常の HTML 用ディレクトリの中に CGI 専用ディレクトリがある場合の例です。
/ (ルートディレクトリ)
|-- public_html/
|
|-- webdir/
| |-- icons/
|
|-- tempfiles/ ←このディレクトリに Basic 認証(任意)
|
|-- cgi-bin/
|-- admintool/ ←このディレクトリに Basic 認証(必ず)
|-- admin/
|-- data/
|-- templates/
tempfiles/
ディレクトリの Basic 認証は、「編集途中の記事の添付ファイルにも外部から絶対アクセスされたくない」という場合に設定して下さい。tempfiles/
には確定していない記事に添付されたファイルが保存されますが、そのまま一定時間が経つと次回作業時に削除されます。CGIを、通常のHTMLファイルとは別の専用ディレクトリに設置しなければならないサーバでの設置例です。
/ (ルートディレクトリ)
|-- htdocs/
| |-- webdir/
| | |-- icons/
| |-- tempfiles/ ←このディレクトリに Basic 認証(任意)
|
|-- cgi-bin/
|-- admintool/ ←このディレクトリに Basic 認証(必ず)
|-- admin/
|-- data/
|-- templates/
/htdocs/
がコンテンツディレクトリ( /htdocs/index.html
などがトップページ)、/cgi-bin/
がCGI専用ディレクトリの場合の相対パスと絶対パスの計算例を示します。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つ上。相対パス = ../../
)../../../
)/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/
には確定していない記事に添付されたファイルが保存されますが、そのまま一定時間が経つと次回作業時に削除されます。admin/
ディレクトリの中に、admin.cgi
と並置して その他のディレクトリをまとめて設置しても構いません。
/ (ルートディレクトリ)
|-- public_html/
|
|-- admin/ ←このディレクトリに Basic 認証
| |-- admin.cgi
| |-- data/
| |-- templates/
| |-- tempfiles/
|
|-- webdir/
|-- icons/
webdir/
と同じ階層に記事用テンプレートディレクトリを配置しておくと、オーサリングツールなどでのテンプレート編集が楽に行えます。
/ (ルートディレクトリ)
|-- public_html/
|-- admintool/ ←このディレクトリに Basic 認証
| |-- admin/
| |-- data/
| |-- tempfiles/
| |-- templates/
| |-- admin/ ←管理画面用テンプレートの位置はそのまま
|
|-- webdir_desingcheck/ ←元の templates/article/ を移動
| |-- icons/
|
|-- webdir/
|-- icons/
Windowsで稼動させる場合、絶対パスでないとアクセスできない場合があります(特にIISの場合)。
相対パスでうまくいかない場合は絶対パスを指定して下さい。
相対パスが使える場合は、他の環境と同様の設定ができます。
なお、Windows の場合でも、プログラムに記載するディレクトリの区切は「\」(円マーク または バックスラッシュ)ではなく「/」(スラッシュ)です。
C:(ドライブ名)
|-- Inetpub/
|-- wwwroot/
|-- admintool/ ←このディレクトリをアクセス制限
| |-- admin/
| |-- data/
| |-- templates/
| |-- tempfiles/
|
|-- webdir/
|-- icons/
$conf{relative_web_dir}
は上記の通り相対パスで記載するか、ウェブサーバのトップ階層からの絶対パスで指定します(下記例)。$conf{relative_web_dir}
= '/webdir/';$conf{relative_file_dir}
も同様にウェブサーバのトップ階層からの絶対パスでも指定できます(下記例)。$conf{relative_file_dir}
= '/admintool/tempfiles/';