Linux、macOS および Raspbian での Zen の使用
Linux、macOS および Raspbian で本製品を使った作業
以下のセクションは、サポートされている UNIX ベースのプラットフォームで動作する Zen のユーザーを対象読者としています。
必要な情報の参照
ユーザー マニュアルへのアクセス
man page
man page は Zen Enterprise Server、Cloud Server または Client のインストール時に一緒にインストールされます。man page を使用可能にするには $ACTIANZEN_ROOT/man/man1ディレクトリを参照してください。
man page へ簡単にアクセスできるようにするには、
MANPATH 環境変数に
$ACTIANZEN_ROOT/man を追加します。ユーティリティやアプリケーションの詳細については、『
Zen User's Guide』の
「コマンド ライン インターフェイス ユーティリティ」を参照してください。
メモ:最新情報については、man page を調べてください。本マニュアルの情報と man page の情報は一致するように最善の努力を尽くしています。しかし、本マニュアルの発行後に行われた最終変更が man page に含まれている場合があります。
Linux、macOS、Raspbian での Zen のアカウント管理
ここでは、Zen の操作で必要となる Linux、macOS、および Raspbian ユーザー アカウントの情報について説明します。.bash シェルの使用を前提としていますが、他のシェルについても同様の手順が適用されます。
インストール後の動作
•zen-svc のユーザーにはパスワードがありません。su コマンドを使用することによって root アカウントでのみアクセスすることできます。
•~zen-svc/.bash_profile を使ってユーザー zen-svc 用の .bash_profile にアクセスできます。
•すべての Zen ファイルのユーザー:グループ所有権を zen-svc:zen-data に設定します。
•Zen エンジンの起動スクリプトおよび停止スクリプトを実行するには、root でログインする必要があります。
•Zen Control Center(ZenCC):ローカル サーバーを管理する
•License Administrator ユーティリティ(clilcadm):現在のライセンスの表示以外の機能を使用する
•名前付きデータベース Maintenance ユーティリティ(dbmaint):現在のデータベースの表示以外の機能を使用する
•Zen サービス レジストリ エディター(psregedit):レジストリの表示以外の機能を使用する
•コマンド ライン設定(bcfg)
ユーザー環境
インストールされているコンポーネントの場所は、環境変数 $ACTIANZEN_ROOT により判別されます。
設定ファイルの一般的な場所は $ACTIANZEN_ROOT/etc です。
実行可能ファイルの場合は $ACTIANZEN_ROOT/bin です。
共有ライブラリ(32 ビット)の場合は $ACTIANZEN_ROOT/lib、共有ライブラリ(64 ビット)の場合は $ACTIANZEN_ROOT/lib64 です。
パスの環境変数に $ACTIANZEN_ROOT/bin を追加することをお勧めします。
次のセクションで説明しているように、$ACTIANZEN_ROOT/lib64 を LD_LIBRARY_PATH(Linux および Raspbian の場合)または DYLD_LIBRARY_PATH(macOS の場合)に追加してください。
32 ビット Client Access パッケージを使用している場合は、$ACTIANZEN_ROOT/lib も LD_LIBRARY_PATH に追加する必要があります。macOS では、32 ビットのパッケージはサポートされていません。
zen-svc 以外のユーザーからのユーティリティの使用
zen-svc 以外のユーザー アカウントからユーティリティを使用するには、まずユーザー アカウントの設定を変更する必要があります。特定のユーザーのプロファイル、あるいは全ユーザーが継承する /etc プロファイルに、以下に示す例から行をコピーしてください。
/home/username/.bash_profile /Users/username/.bash_profile | ユーザーのプロファイル。/etc/profile と似ていますが、現在のユーザーにのみ適用されるファイルです。 Linux および Raspbian では /home/username、macOS では /Users/username 内でこのファイルを探します。 |
/etc/profile | システム上の全ユーザー アカウント用のデフォルト プロファイル。全ユーザー アカウントに Zen ユーティリティへのアクセスを許可するには、このプロファイルを使用します。 例に従ってこのプロファイルを変更しても、Zen データへの管理権限やアクセス権は与えられません。 |
変更されたプロファイル例
Zen に関連するすべての変数を必ずエクスポートするようにしてください。
Linux および Raspbian
ACTIANZEN_ROOT=/usr/local/actianzen
PATH=$PATH:$ACTIANZEN_ROOT/bin:/bin:/usr/bin
LD_LIBRARY_PATH=$ACTIANZEN_ROOT/lib64:$ACTIANZEN_ROOT/lib:$ACTIANZEN_ROOT/bin:/usr/lib
MANPATH=$MANPATH:$ACTIANZEN_ROOT/man
macOS
ACTIANZEN_ROOT=/usr/local/actianzen
PATH=$PATH:$ACTIANZEN_ROOT/bin:/bin:/usr/bin
DYLD_LIBRARY_PATH=$ACTIANZEN_ROOT/lib64:$ACTIANZEN_ROOT/lib:$ACTIANZEN_ROOT/bin:/usr/lib
MANPATH=$MANPATH:$ACTIANZEN_ROOT/man
設定
一般的に、Zen のサーバーとクライアントのデフォルト設定はそのまま使用しても問題はありません。通常、データベース エンジンとクライアントの通信や機能について設定を行う必要はありません。このトピックでは、変更を行う可能性のある 2 つの設定について説明します。
すべての設定を調査する場合は、『
Advanced Operations Guide』の
「設定リファレンス」を参照してください。
Samba 設定ファイル
Zen サーバーは Samba の設定ファイル(smb.conf)のパスを定義します。パスはエンジンの起動時に解析され、共有名とサーバーのディレクトリの場所の間のマッピングが判別されます。『
Advanced Operations Guide』の
「Configuration File(Linux、macOS、および Raspbian エンジンのみ)」を参照してください。
認証(Authentication)
この設定は、サーバー エンジンへのアクセスに使用する認証のタイプを提供します。
•Emulate Workgroup Engine。Samba を使用してシステムのユーザー アクセスを認証する場合は、この値を使用します。
•Proprietary Authentication(using btpasswd)(専用認証(btpasswd の使用))。Samba を使用せず、ユーザーがサーバーにアカウントを持っていない場合は、この値を使用します。Linux、macOS、または Raspbian システムへの接続に個別のパスワード ファイルを使用できます。
•Linux、macOS、または Raspbian サーバーで BTPASSWD または PAM の認証を使用する場合、このサーバーに接続するクライアントで pvnetpass 使用してユーザー名とパスワードを設定する必要があります。
「pvnetpass」 の詳細については、『
Zen User's Guide』を参照してください。
•Standard Linux Authentication(標準 Linux 認証)。Samba を使用せず、ユーザーが Linux、macOS、または Raspbian システムにアカウントを持っている場合、この値を使用します。
Samba 用にサポートされるパスの形式
Windows クライアント
Windows の Zen Client からのパスの解析順序は次のようになります。
•\\server\share\relative\path
share は、Windows クライアントにアクセスを許可された、有効な Samba 共有を表します。
server は、smb.conf を読み取って共有ディレクトリの絶対パスを判別し、それを相対パスと結合してフル パスを完成します。smb.conf の場所は、クライアントでこの形式で提供されるファイル パスの解決を有効にするために不可欠です。相対パス部分(relative\path)が間違っている場合、ステータス コード 12 が返されます。
•Drive:\path
Drive は、Windows クライアントで割り当てられた Samba のドライブです。このドライブから、Zen Client は Btrieve ファイルが存在するサーバーを決定します。
Linux、macOS、または Raspbian クライアント
Linux、macOS、または Raspbian の Zen Client からのパスの解析順序は次のようになります。
•//server/share/relative/path
share は、サーバー上の有効な Samba 共有名を示します。
サード パーティー製の Samba パッケージを使用するシステムでは、server は smb.conf を読み取って共有ディレクトリの絶対パスを判別し、それを相対パスと結合してフル パスを完成します。smb.conf の場所は、クライアントでこの形式で提供されるファイル パスの解決を有効にするために不可欠です。
smb.conf ではなくネイティブな SMB ファイル共有を使用する macOS システムでは、server はオペレーティング システムから直接、共有情報を解決します。
どの場合においても、相対パス部分(relative/path) が間違っている場合はエラー ステータスが返されます。
•/Mount/path
Mount は、Linux、macOS、または Raspbian でマウントされた Samba のドライブです。このドライブから、Zen Client は Btrieve ファイルが存在するサーバーを決定します。
メモ:Linux ベースのサーバーのクライアントの共有名では大文字小文字が区別されます。サーバーとクライアントの共有名が完全に一致しないと、通信することができません。
Linux、macOS、および Raspbian サーバーでは、Zen エンジンは smb.conf と共有名のいずれも見つけられなかった場合、デフォルトの \\server\absolute_path(絶対パス)形式であると見なします。絶対パスが間違っている場合、ステータス 12 が返されます。
クライアント情報
クライアントとサーバー コンピューターが 1 つの共有プロトコルによって通信できれば、Linux、macOS 、または Raspbian 上の Zen Client は、どの Zen サーバー エディションへも接続できます。
リモート マシンへの認証
Linux、macOS、または Raspbian クライアントを使ってリモート マシンに接続するには、そのリモート マシンへの認証が必要です。これを行うには、pvnetpass ユーティリティを使用してユーザー名とパスワードをサーバーへ送ります。このユーティリティでは、クライアント マシン上の Zen レジストリに、その特定のサーバーのユーザー名とパスワードを暗号化された形式で保存します。ユーザー名とパスワードを指定しない場合は、アプリケーションでステータス コード 3119 を受け取ります。
『
Zen User's Guide』の
「pvnetpass」 を参照してください。
クライアント DSN の作成
クライアント上のアプリケーションが ODBC 経由で Zen リレーショナル エンジンを使用する場合は、クライアントのデータ ソース名(DSN)が必要です。クライアント DSN を作成するには、Zen Client に含まれている dsnadd ユーティリティを使用します。『
Zen User's Guide』の
「dsnadd」 を参照したり、
/usr/local/actianzen/man/man1 にある man page で「dsnadd」を参照してください。
Web ベースのデータベース アクセスの設定
ここでは、Linux または macOS の Web アプリケーションから Zen データにアクセスするための Web サーバーの構成方法、また、その Zen データにアクセスするための接続用コードの抜粋やサンプル コードを提供します。この使用事例には Raspbian はサポートされません。
ODBC の動作
Zen を最初にインストールしたとき、odbc.ini ファイル は /usr/local/actianzen/etc に書き込まれます。
unixODBC など他の ODBC ドライバー マネージャーがある場合、これらのドライバー マネージャーは /etc/odbc.ini といった別の場所にある odbc.ini ファイルを使用する可能性があります。
ODBC セットアップを統一するための方法として、次の例に示すように、unixODBC が odbc.ini ファイルがあると考える場所と Zen ディレクトリとの間のソフト リンクを追加する方法があります。
su
cd /etc
ln -s /usr/local/actianzen/etc/odbc.ini
Web サーバーの構成
ここでは、Apache などの Web サーバーが搭載されているマシンを設定する方法について説明します。
Apache などの Web サーバーを起動するユーザー アカウントは、zen グループに属していなければなりません。これらのユーザー アカウントは nobody などの制限付きアカウントに基づいて実行します。
ユーザー アカウントを探す場合は Apache 構成ファイルを見てください。これは通常 /etc/httpd/conf/httpd.conf にあります。
このファイルの次の行は、Apache サーバーがどのようなユーザーの下で動作するかを示しています。
User nobody
Group nobody
Options ExecCgi Indexes
このユーザーを zen-data グループに追加し、お使いの Apache 構成ファイルで使用している名前に置き換えます。
/usr/bin/gpasswd -a nobody zen-data
PHP
PHP では、Microsoft の ASP や Java の JSP に類似したスタイルを使用して Web アプリケーションの開発を簡単に行うことができます。PHP の使用は HTML でデータベース呼び出しを特殊なタグで囲み、出力を書式設定します。
Zen PHP の要件
•PHP - http://www.php.net から入手します。
•データベースを指す DSN(dsnadd を使用)
PHP の接続用コードの一部
このコードは PHP を使って Zen データベースに接続する基本的な部分です。
// ユーザー ID、パスワードなしで Demodata データベースに接続する
$connect = odbc_connect("demodata", "", "");
// クエリ変数を SQL に設定する
$query = "SELECT * from Department";
// クエリの結果オブジェクトを取得する
$result = odbc_exec($connect, $query);
PHP の例
以下に示す完全なサンプル コードでは、ユーザーが Demodata の 3 つのテーブルから 1 つを選択し、そのテーブルを表示します。
<HTML>
<HEAD>
<TITLE>PHP の例</TITLE>
</HEAD>
<BODY>
<H1>Hello World のサンプル - PHP ODBC API を使用した PHP</H1>
<p>
このサンプル コードでは PHP を使用して下記のドロップダウン リストにあるDemodata データベースのテーブルを表示します。
</p>
<?
if (!(isset ($HTTP_GET_VARS["_function"]))):
?>
<p>以下のテーブルから選択してください。</p>
<form method=post action='<?=$PHP_SELF?>?_function=showtable'>
<select name="selecttable">
<option SELECTED value="Department">Department
<option value="Course">Course
<option value="Room">Room
</select>
<p>
<input type=submit value="テーブルの表示">
</p>
</form>
<?
Elseif ($HTTP_GET_VARS["_function"] == "showtable"):
print("<p><a href='$PHP_SELF'>サンプル 1 メイン メニュー</a>に戻る</p>");
$thetable = $HTTP_POST_VARS["selecttable"];
$connect = odbc_connect("demodata", "", "");
$query = "SELECT * from $thetable";
$result = odbc_exec($connect, $query);
$i = 0;
$numcols = odbc_num_fields($result);
print("<table border=1 cellpadding=5>");
print("<tr>"); // 行の開始
while ($i < $numcols)
{
$i++;
$colname = odbc_field_name($result, $i);
print("<th>$colname</th>");
}
$i=0;
print("</tr>"); // 行の終了
while(odbc_fetch_row($result))
{
print("<tr>"); // 行の開始
while ($i < $numcols)
{
$i++;
$tablecell = odbc_result($result, $i);
print("<td>$tablecell</td>");
}
print("</tr>");
$i = 0;
}
print("</table>");
odbc_close($connect); // 接続を閉じる
Else:
print("<p>無効な機能が入力されました。<a href='$PHP_SELF'>再試行</a>してください。</p>");
Endif;
?>
</BODY>
</HTML>
PHP のその他の例
より一般的な PHP サンプル アプリケーションを
弊社の Web サイトからオンラインで入手することができます。このアプリケーションではビデオ店の操作をシミュレートします。
このサンプルは Zen SDK に含まれている Pvideo データベースを使用しています。SDK をインストールしていない場合は、サンプル アプリケーションと一緒にこの Pvideo データベースをダウンロードすることができます。
Perl
Perl は Zen を使ったコマンド ラインおよび Web ベースのアプリケーションの両方に使用できます。
Zen Perl の要件
•Perl
•ODBC-DBD ライブラリ
•CGI ライブラリ
•データベースを指す DSN
Perl の接続用コードの一部
このコードは Perl を使って Zen データベースに接続する基本的な部分です。
use DBI;
$dbInfo = "DBI:ODBC:DEMODATA";
$dbUserName = "";
$dbPassword = "";
$query = "SELECT * FROM Department";
$connect = DBI->connect($dbInfo, $dbUserName, $dbPassword);
$myRecordSet = $connect->prepare($query);
$myRecordSet->execute();
Perl の例
以下に示す完全なサンプル コードでは、ユーザーが Demodata の 3 つのテーブルから 1 つを選択し、そのテーブルを表示します。
use CGI":cgi-lib";
$cgiquery = new CGI;
$functionreq = $cgiquery->url_param('_function');
print &PrintHeader;
print &HtmlTop("Hello World サンプル - Perl");
print <<ENDOFMENU;
<H1>Hello World サンプル - Perl</H1>
<P>
このサンプル コードでは Perl/DBI を使用して下記のメニュー リストにある Demodata データベースのテーブルを表示します。
</p>
ENDOFMENU
if (!$functionreq) {
print <<ENDOFTEXT;
<p>以下のテーブルから選択してください。</p>
<form method=post action="$ENV{'SCRIPT_NAME'}?_function=showtable">
<select name="selecttable">
<option SELECTED value="Department">Department
<option value="Course">Course
<option value="Room">Room
</select>
<p>
<input type=submit value="テーブルの表示">
</p>
</form>
ENDOFTEXT
}
elsif ($functionreq eq "showtable") {
print("<p><a href='$ENV{'SCRIPT_NAME'}'>Perl Hello World サンプル - メイン メニュー</a>に戻る</p>");
$thetable = $cgiquery->param('selecttable');
use DBI;
$dbInfo = "DBI:ODBC:DEMODATA";
$dbUserName = "";
$dbPassword = "";
$query = "SELECT * FROM $thetable";
$connect = DBI->connect($dbInfo, $dbUserName, $dbPassword);
$myRecordSet = $connect->prepare($query);
$myRecordSet->execute();
print "<table border=1 cellpadding=5>";
$num_fields = $myRecordSet->{NUM_OF_FIELDS};
$count = 0;
print "<tr >";
while ($count < $num_fields) {
$column_name = $myRecordSet->{NAME}->[$count];
print "<th>$column_name</th>";
$count++;
}
print "</tr>\n";
$count = 0;
while(@row=$myRecordSet->fetchrow_array) {
print "<tr>\n";
while ($count < $num_fields) {
print "<td>$row[$count]</td>\n";
$count++;
}
print "</tr>\n";
$count = 0;
}
print "</table>"; # HTML テーブルの終了
}
else {
print "<p>無効な機能が入力されました。<a href='$ENV{'SCRIPT_NAME'}'>再試行</a>してください。</p>";
}
print &HtmlBot;
Zen における Perl および ODBC の使用
メモ:この手順は、Zen、Perl および ODBC ディストリビューションがインストールされていることを前提にしています。www.iODBC.org で ODBC のフリー バージョンを入手することができます。Perl については www.perl.org をご覧ください。
►Zen を Perl の ODBC インターフェイスで動作させるには
1 Perl をサポートするデータベース インターフェイス(DBI)をダウンロードします。
手順については、readme ファイルまたはインストール ファイルを参照してください。
2 Perl 用の ODBC DBD データベース ドライバーをダウンロードします。
readme またはインストール ファイルでインストール手順を参照してください。
3 次の例で示すように、適切な環境変数を設定してください。これらの設定は、iODBC のドキュメントでも説明されています。
Perl および DBI 用のコードの一部
print "using odbc...\n";
use DBI;
$dbName = "DBI:ODBC:DEMODATA";
$dbUserName = "";
$dbPassword = "";
print "connecting...\n";
$sql = "SELECT * FROM class";
$dbh = DBI->connect($dbName, $dbUserName, $dbPassword);
$dataObject = $dbh->prepare($sql);
$dataObject->execute();
while(@row=$dataObject->fetchrow_array)
{
print "$row[0]\t$row[1]\t$row[2]\n\n"
}