Sugar DB Pro Version 3.0 (2010/04/01)

インストールマニュアル

導入簡単をめざしたテキストベースのWeb用データベースCGIです。

特徴:
★実態はCSVエディターです。
★「SQLサーバーまで要らない」人向けのデータベースになりました。
★特徴:
 ・一瞬にしてデータベースを作成できます・・.csvファイルの1行目に項目を書き込みだけ。
 ・データベースサーバー不要
 ・Windowsフォルダと1:1対応のフォルダ管理
 ・テキストベースなのにPCファイルを管理できる
 ・joinを実装・・他テーブル(.csvファイル)のデータを参照
 ・承認機能あり
 ・メール送信のパイプを実装
 ・強力な見出しオプション(日時やIDの自動挿入、HTMLフォームによる入力補助)
★使用例:
 ・写真集
 ・アドレス帳
 ・ISO文書管理
 ・各種台帳(図面や資料の管理)・・自動採番機能あり
 ・電子承認・・決裁者による電子チェックとメール送信(メール送信には、環境構築が必要です)

対象:
・CGIを設置&運用できる人。本ドキュメントの内容を理解し、守ることができる人。
・perl5を利用できる環境

Quickインストラクション:
・解凍ファイルをそのままアップロードする。
・パーミッションを設定する。
・/data/ディレクトリに、操作したいcsvファイルを入れる。動作テスト用にサンプル添付済み。
entry.html にアクセスする。


設置方法:
・ファイル構成を示します。数字はパーミッションの推奨値です。
 まずは、解凍したファイルをディレクトリ構造そのままにアップロードしてください。
cgiファイルの一行目は環境に応じて書き換えて下さい。例:#! user/local/perl
はサンプルです。  
/dbspro(775)/ /data(755)/ /サンプルフォルダ全て (777)/ サンプルファイル全て(666)
  /pictures(644)/ -green.jpg (644)など
  aboutsort.html(644)
  entry.cgi (755)
  entry.html (644)
  getnum.cgi (755)
  index.html(644)
  jcode.pl (755)
  kanri.pl (755)
  passw.cgi(755)
  tempdata.csv(666)
  undefined.txt(644)
  users.csv(666)

動作テストとアカウント設定:

entry.html にアクセスして下さい。
・デフォルトで5つのIDが設定されています。
 ID=administrator, manager, member, user, guest
 Password=「不要」
・「それぞれのID」+「パスワード無」でログインし、パスワードを設定してください。
 一度ログインすると、パスワード「new」が自動生成されます。
・管理者権限でログインすると、アカウント編集ボタンが表示されます。
 パスワードを忘れた時:
   該当パスワード欄を空白にして下さい。
   パスワード無しでログイン可能になり、一度ログインすると、パスワード「new」が自動生成されます。

設定ファイル:
kanri.plを開いてカスタマイズしてください。
デフォルトで十分動きます。 やりたいことがあったら変更するのが良いでしょう。



データベース作成:

・データのルートディレクトリは/data/です。この下には 自由なディレクトリ構造を持つことができます。

・CSV形式()のデータを作成し、ディレクトリ /data/下の自由な場所 へアップロードして下さい。
 一行目は「見出し」、二行目以降が「データ」です。→サンプルデータ参照
 一行目はデータベースにおけるフィールドに相当します。ブラウザからは編集できません。
 二行目以降はブラウザから編集可能です。
 ★CSV形式のファイルとは、「test, 123, 名前, などなど」のようにカンマで区切られたデータのことです。
 CSVデータは、EXCELなどの表計算ソフトや、メモ帳などのテキストエディタで編集できます。

・見出しオプション・・見出し語後ろの#は、特別な意味を持ちます。
 具体例は、サンプルデータの「2_オプションsamples」内を参考にしてください。
#file・・データ編集時に、ファイル選択ボタン▼を表示します。kanri.plの設定により動作が異なります。
#icon(or name)#pdf#file・・pdf以外の拡張子も使用可能です。
              連番指定されている列の「番号.pdf」にファイル名が自動設定されます。
              この時、ファイル名が入力されている必要はありません。
              空白のままで「番号.pdf」と自動認識します。
              これ以外のファイル名を入力した場合は、入力値が優先されます。
              空白の場合、「番号.pdf」というファイルがサーバーにあるときだけリンクが表示されます。
              また、#iconオプションがあるときは、ファイル名ではなくアイコン「pdf.gif」が表示されます。
              #iconオプションを指定しない時は、#nameとして下さい。

#a-1-2-3#renban・・データ追加時に、末尾データの番号+1を自動採番します。1ファイルに1列だけ設定できます。
              aはどこに何個入っても良いが、1,2,3は各1個までで、小さい数字が先に書かれなければなりません。
              #a-1-2-3は番号書式で省略可。aは文字列、1は連番で更新される親番号。2,3は改訂番号。
              例:#a-1-2#renbanとして、1行目に[ABC-DDD00-0]と入力しておくと、
              ABC-DDD01-0, ABC-DDD02-0・・という連番が取られて行きます。編集画面では-1, -2を採番できます。
#id・・データ追加時に、ログイン名を自動挿入
#date・・データ追加時に、日付(0000/00/00)を自動挿入
#datetime・・データ追加時に、日付時間(0000/00/00 00:00:00)を自動挿入
#editedid・・データ更新時に、ログイン名を自動更新
#editeddate・・データ更新時に、日付(0000/00/00)を自動更新
#editedtime・・データ更新時に、日付時間(0000/00/00 00:00:00)を自動更新
#文字列#default・・データ追加時に、文字列を自動挿入
#文字列#noedit・・データ追加時に、文字列を自動挿入。その後、編集不可能。
#A#A_B_C#radio・・データ変更時にラジオボタンを表示。#Aはデフォルト(省略可)、#A_B_Cは選択肢(_または/でつなぐ)。
#A#A_B_C#select・・データ変更時にセレクトボックスを表示。#Aはデフォルト(省略可)、#A_B_Cは選択肢(_または/でつなぐ)。

#select_his・・既存データを選択肢とするセレクトボックスを表示。新規入力もできます。
#A#A#checkbox・・データ変更時にチェックボックスを表示。前の#Aはデフォルト(省略可)、後ろの#Aはチェック時の表示値。
#x#y#textarea・・複数行入力可能。#x#yはテキストエリアの行列数、省略可能。
#A#B#C#join・・別csvファイルのデータを参照。
              #Aは#Bを読み出すためのユニーク(2つのファイルをjoinする共通項)
              #Bは#Cから読み出したいデータ列名
              #Cは別csvファイル名
              データ変更画面ではjoinは行われず、参照値は空欄となります。
A#calc・・四則演算。Aは計算元データになる列名を+-*/().及び半角数字でつないだ数式で、見出し語を兼ねる。例:単価*個数*1.05#calc。
#A:B:C#permit0・・更新権を持つ人が承認依頼できる。依頼後の取り消しはできない。
              #A_B_Cはチェック時の送信先メールアドレス(:でつなぐ。省略可)。
              ★承認依頼としてではなく、確認チェック履歴を残すためにも使用できます。
#fix#A:B:C#permit1・・承認権1を持つ人が更新画面で承認できる。承認後の取り消しはできない。
              #fixがある時は、承認以後データ変更不可(省略可)。
              #A_B_Cはチェック時の送信先メールアドレス(:でつなぐ。省略可)。
#fix#A:B:C#permit2・・承認権2を持つ人が更新画面で承認できる。承認1の後に承認できる。承認後の取り消しはできない。
              #fixがある時は、承認以後データ変更不可(省略可)。
              #A_B_Cはチェック時の送信先メールアドレス(:でつなぐ。省略可)。
#fix#A:B:C#permit3・・承認権3を持つ人が更新画面で承認できる。承認2の後に承認できる。承認後の取り消しはできない。
              #fixがある時は、承認以後データ変更不可(省略可)。
              #A_B_Cはチェック時の送信先メールアドレス(:でつなぐ。省略可)。
#formtime・・データ変更時に、23:59の形式で時と分を入力するセレクトボックスを表示。
#formdate・・データ変更時に、2009/12/31の形式で年月日を入力するセレクトボックスを表示。年は、現在から3年後までを選択可能。
#formdatetime・・・・データ変更時に、2009/12/31-23:59の形式で年月日時分を入力するセレクトボックスを表示。年は、現在から3年後までを選択可能。




フォルダ・ファイル名:
・CSVデータ名は日本語でも問題ありませんが、やはり半角英数文字を推奨します。
・画像等のPCファイル名には半角英数文字を推奨します・・特にUNIXサーバーやインターネットを通すとき。
・Windowsサーバーを用いたLAN内では、あまり気にしなくても大丈夫です。

画像等PCファイル:
・CSVデータと同じフォルダに入れてください。
・CGIが持つアップロード機能を使っても、FTPやファイラーでアップしても同じ意味になります。

バージョンアップ:(データフォルダ以外の全てのファイルを入れ替えてください。)
・/data/フォルダを丸ごとバックアップしてください。データはそのまま使えます。
・現状のkanri.plを、名前を変えて保存してください(◎)。バックアップです。
・全てのファイルを最新のものに差し替えてください。
・/data/フォルダを元のデータに戻してください。
・kanri.plの内容を、◎を参考にしてカスタマイズしてください。

フォルダごとの個別設定
・kanri_s.plをコピーして/data/フォルダの下位フォルダに貼り付けると、そのフォルダ内に於いてのみkanri.plよりkanri_s.plが優先されます。
 この時、kanri_s.plはルートディレクトリに添付されているものを用い、パラメーター変更または行削除以外の編集を加えないでください。
 つまり、フォルダごとに背景や機能を設定できます。
 kanri_s.plは、予め読み込んでいたkanri.plに重ねて読み込みますから、kanri.plに対して変更したい行だけ記載しても構いません。
・user_s.csvをコピーして/data/フォルダの下位フォルダに貼り付けると、そのフォルダ内に於いてのみ、users.csvよりもusers_s.csvが優先されます。
 この時、users_s.csvは添付されているものではなく、ルートディレクトリに存在するusers.csv最新版をコピーしてリネーム&編集してください。
 users_s.csvにおいて、メールアドレスやパスワードは無視されます。
 ログイン時のID, 名前, パスワード, メールアドレスはサブフォルダにおいても継承されます。
 つまり、フォルダごとに権限設定ができます。
 users_s.csvは、予め読み込んでいたusers.csvに重ねて読み込みますから、users.csvに対して変更したい行だけ記載しても構いません。

承認機能からのメール送信:
・承認機能でチェックボックスをチェックした時に、関係者にメール送信することができます。但し、以下の環境設定が必要です。
- ユーザー情報(users.csv)にメールアドレスが入力されていること。これが送信者になります。
- 承認オプション指定で、#A:B:C#といったように、処理後の送信先メールアドレス(A:B:C・・)が設定されていること。
- cgi単体ではメール送信していません。利用できるsmtpサーバーが必要です。
- ★設置者がperlスクリプトとsmtpサーバーを理解できること・・これがもっとも大きなハードルです。
  デフォルトでは、
  localhost内(cgi設置サーバーと同じサーバー内)にsmtpサーバー(メール送信サーバー)が設置されており、
 かつ、メール送信時の認証は使用しない、という条件下でメール送信可能になっています。
  Windowsサーバーであれば、freeのsmtpサーバーをで設置するだけで送信できるはずです。
- メール送信のパイプについて説明します。
 メールは、設定ファイルkanri.pl内のサブルーチン、
       sub smtpmail{
           my($subject,$from,$to,$cc,$msg)=();
           ($subject,$from,$to,$cc,$msg)=@_;
           my $date;
           my @mailto = split(',', $to);
           my @mailcc = split(',', $cc);
           ・・
       }
  を呼び出すことで送信しています。
  ここを書き換えることで、localhost以外のsmtpサーバーsmtp認証やPOP before SMTP対応のメール送信も可能になります。
 ユーザー様の責任で改造してください。
  メインルーチンgetnum.cgi内の記載を抜粋します。サブルーチンと比較して、引数を確認してください。
       #mail送信
       #@_=(件名,送信元,送信先,c.c.先,本文);
       #toとccのメールアドレスは配列ではなく、',(カンマ)'で複数個をつないである。
       if($shoninmail==1){
           &smtpmail($mailtitle,$mailfro,$mailaddrow,$mailccrow,$mesm);
       }



注意事項:
・データ量が増えると速度が低下し、サーバーに負担をかけます。サーバーの運営者や共有者に迷惑をかけないよう注意してください。
 速度低下が問題になる時は、CSVデータファイルを小さくして下さい。
 目安:【Pentium4サーバー】 + 【10列x10,000行(2MB)程度のcsvファイル】
・多重アクセスが起こった場合、データが破損または消滅する可能性があります()。
 頻繁にバックアップするなど管理者の責任でデータを保護してください。
  対策は取っており必要以上に不安を煽るものではありませんが、可能性はゼロではありません。
・本CGIでは、機能相応の簡易認証機能 を採用しています。ユーザー様の責任でセキュリティーに関する必要な知識を習得し、ユーザー様の責任でサーバー&データの安全性を確保して下さい。
本スクリプトを使用した時点で、本ドキュメントの全ての項に同意したものとみなします。

著作権など:
・作者の許可無く、「本スクリプトの設置代行や管理運営を業として行い利益を得ること」を禁止します。
・パッケージ内の"jcode.pl" は歌代和正氏によるPerlライブラリです。使用、改造等に関しては、氏のソース内メッセージをご覧下さい。
・パッケージ内の"jcode.pl"以外のファイルについて:
 フリーソフトです。しかし、作者は著作権を放棄しません。再配布は次の条件を満たせば自由です・・・条件:「オリジナルの著作権は作者(下記)にあるこ と」を明示すること。改造は自由ですが、改造後の再配布は禁止します。尚、改造時には、ソース内およびWeb表示画面に「オリジナルの著作権は作者(下 記)にあること」を明記してください。

その他:
・本パッケージ使用による損害について、作者は一切の責任を負いません。
・ご意見ご感想→shopmaster@sugawa.com ・・作者:(Sugar.T)

/// 以上 ///