[CGI・SSI] データベース
オプションサービスのDBオプション(データベース) にお申し込み頂くと、 PostgreSQLによる本格的なRDBMS(リレーショナルデータベース管理システム)をご利用頂くことが出来ます。 このページにはお申し込み手続き完了後の使用方法を記載しています。
サーバーの仕様
WebARENA SuiteのDBオプションサービスでは、データベースエンジンにPostgreSQL 7.1.3を使用しています。サーバーの構成は、以下の図の様になっています。

データベースはご契約頂いているWebARENA Suiteサーバーとは別に設置されている、専用のDBサーバに格納されています。
データベースにアクセスする方法は2種類ご用意しております。
1つは専用の管理ツール「DB MANAGER」を使用してデータベースを操作する方法(図中 2)です。 DB MANAGERではデータベースに対し任意のSQL文を発行して操作を行ったり、データベースのダンプ・リストアなどを行うことが出来ます。 ブラウザ上にメニューが表示され視覚的に操作することが出来ますので、メンテナンスを簡単に行うことが出来ます。 詳しい機能やアクセス方法についてはオンラインマニュアル - [管理ツール] DB MANAGERのページをご覧下さい。
もう1つはご利用頂いているWebARENA Suiteサーバーに、データベースにアクセスするためのCGIプログラムをアップロードして(図中 1)、 そのCGIを通してデータベースにアクセスする方法(図中 3) です。通常はこちらの方法でご利用頂くことになります。 CGIプログラムは弊社ではご用意しておりませんので、お客様にて必要な機能を持ったCGIをご用意下さい。
CGIの言語とモジュール
データベースにアクセスするためのCGIを作成する言語は、PHP3/PHP4・Perl・C言語の3種類がご利用頂けます。
PHPでCGIを作成する場合、オンラインマニュアル - [CGI・SSI] - CGI のページに使用方法が記載されておりますので、 はじめにそちらをご覧下さい。 データベースへの接続方法については、このページの「PHPを使う場合の利用例」をご覧下さい。
PerlでCGIを作成する場合、WebARENA Suiteサーバーにはデータベース用のPerlモジュールとしてDBIおよびDBD::Pgと、Pg.pmを用意しております。 Perlで作成したCGIプログラムからデー タベースにアクセスする場合は、このどちらかをご利用下さい。
C言語でCGIを作成する場合、Linuxをインストールしたお客様のコンピュータ上で、Libpqインターフェースのライブラリlibpq.aを スタティックにリンクさせてコンパイルして下さい。
どちらの言語をご利用になる場合も、モジュールの使用方法やCGIプログラムの記述方法につきましてはサポート対象外とさせて頂いております。 ご不明な場合はデータベース・ CGI関連の書籍やWebサイト等をご覧下さい。
PHPを使う場合の利用例
PHP4でCGIを作成し、SQL文を実行させてDBサーバ内に「suitedb」という名前のテーブルを作成する場合の手順です。 こちらの方法を参考にご利用下さい。
- PHP4でCGIスクリプトを作成します。 実際にはお客様の用途に合わせて作成して頂くことになりますが、ここでは例として以下のCGIスクリプトを作成します。 CGIスクリプトの中に、お客様の環境に合わせて設定しなければならない部分があります。 橙色の部分はお客様の環境に合わせて書き換えて下さい。
#!/usr/local/bin/php4 <HTML> <HEAD> <TITLE>PHP Test</TITLE> </HEAD> <BODY> <? /* 「host=」と「dbname=」の後にはお客様のDB名を設定して下さい。 「user=」の後にはお客様のDBオプションサービス用ユーザ名を設定して下さい。 「password=」の後にはお客様のDBオプションサービス用パスワードを設定して下さい。 以下はDB名が abc.db1.arena.ne.jp 、ユーザ名が abc.db1.arena.ne.jp 、パスワードが abcabc の場合の例です。 */ $dbh = pg_connect("host=abc.db1.arena.ne.jp port=5432 dbname=abc.db1.arena.ne.jp user=abc.db1.arena.ne.jp password=abcabc"); if(!$dbh){ echo "MESSAGE : cannot connect!<BR>"; }else{ /* データベースエンジンに実行させるSQL文 */ $result = pg_exec($dbh,"CREATE TABLE suitedb (clumn_1 varchar(16))"); echo "MESSAGE : Success<BR>"; } pg_close(); } ?> </BODY> </HTML>
- 作成したCGIに適当な名前を付け、管理者用アカウント(admin)を使用してWebARENA Suiteサーバーの /cgi-bin ディレクトリに転送して下さい。
- 転送したCGIのパーミッションを 700(rwx------) に設定して下さい。
- CGIをブラウザから呼び出して実行させて下さい。 正しく実行されるとブラウザの画面に「MESSAGE : Success」と表示され、テーブルが作成されます。
- DB MANAGERにログインして、「suitedb」という名前のテーブルが作成されていることを確認して下さい。
実行させるSQL文を変えればデータベースに対し任意の操作を行うことが出来ます。
Perlを使う場合の利用例
PerlでDBIおよびDBD::Pgモジュールを使用したCGIを作成し、SQL文を実行させてDBサーバ内に「suitedb」という名前のテー ブルを作成する場合の手順です。 こちらの方法を参考にご利用下さい。
- PerlでCGIスクリプトを作成します。 実際にはお客様の用途に合わせて作成して頂くことになりますが、ここでは例として以下のCGIスクリプトを作成します。
CGIスクリプトの中に、お客様の環境に合わせて設定しなければならない部分があります。 橙色の部分はお客様の環境に合わせて書き換えて下さい。
#!/usr/bin/perl use DBI; # DBIモジュールのロード use CGI; main:{ # my($hostname) にはお客様のDB名を設定して下さい。 # 以下はDB名が abc.db1.arena.ne.jp の場合の例です。 my($hostname) = "abc.db1.arena.ne.jp"; # my($dbname) にはお客様のDB名を設定して下さい。 # 以下はDB名が abc.db1.arena.ne.jp の場合の例です。 my($dbname) = "abc.db1.arena.ne.jp"; # my($username) にはお客様のDBオプションサービス用ユーザ名を設定して下さい。 # 以下はユーザ名が abc.db1.arena.ne.jp の場合の例です。 my($username) = "abc.db1.arena.ne.jp"; # my($passwd) にはお客様のDBオプションサービス用パスワードを設定して下さい。 # 以下はパスワードが abcabc の場合の例です。 my($passwd) = "abcabc"; # ポート番号 my($port) = "5432"; # データベースエンジンに実行させるSQL文 my($sql) = "CREATE TABLE suitedb (clumn_1 varchar(16))"; # データベースサーバと接続する # ※「$dbh」から「&print("$DBI::errstr");」までの間に改行は入れないで下さい。 $dbh = DBI->connect("dbi:Pg:dbname=$dbname;host=$hostname;port=$port", "$username","$passwd") || &print("$DBI::errstr"); $que = $dbh->prepare("$sql")|| &print($dbh->errstr); # SQL文の実行 $que->execute()|| &print($que->errstr); $que->finish(); # データベースサーバとの接続を切る $dbh->disconnect; &print("Success"); } sub print{ my($error) = $_[0]; print "Content-type:text/html"; print "<HTML>"; print "MESSAGE : $error"; print "</HTML>"; exit; }
- 作成したCGIに適当な名前を付け、管理者用アカウント(admin)を使用してWebARENA Suiteサーバーの /cgi-bin ディレクトリに転送して下さい。
- 転送したCGIのパーミッションを 700(rwx------) に設定して下さい。
- CGIをブラウザから呼び出して実行させて下さい。 正しく実行されるとブラウザの画面に「MESSAGE : Success」と表示され、テーブルが作成されます。
- DB MANAGERにログインして、「suitedb」という名前のテーブルが作成されていることを確認して下さい。
実行させるSQL文を変えればデータベースに対し任意の操作を行うことが出来ます。
C言語を使う場合の利用例
C言語でlibpq.aモジュールを使用したCGIを作成し、SQL文を実行させてDBサーバ内に「suitedb」という名前のテーブルを作成する場合の手順です。 こちらの方法を参考にご利用下さい。
- C言語でCGIのソースファイルを作成します。 実際にはお客様の用途に合わせて作成して頂くことになりますが、ここでは例として以下のCGIスクリプトを作成します。
CGIソースファイルの中に、お客様の環境に合わせて設定しなければならない部分があります。 橙色の部分はお客様の環境に合わせて書き換えて下さい。
#include "libpq-fe.h" /* HOSTNAME にはお客様のDB名を設定して下さい。 以下はDB名が abc.db1.arena.ne.jp の場合の例です。 */ #define HOSTNAME "abc.db1.arena.ne.jp" /* DBNAME にはお客様のDB名を設定して下さい。 以下はDB名が abc.db1.arena.ne.jp の場合の例です。 */ #define DBNAME "abc.db1.arena.ne.jp" /* USERNAME にはお客様のDBオプションサービス用ユーザ名を設定して下さい。 以下はユーザ名が abc.db1.arena.ne.jp の場合の例です。 */ #define USERNAME "abc.db1.arena.ne.jp" /* DBPASS にはお客様のDBオプションサービス用パスワードを設定して下さい。 以下はパスワードが abcabc の場合の例です。 */ #define DBPASS "abcabc" /* ポート番号 */ #define DBPORT "5432" main(){ PGconn *conn; PGresult *res; int i; conn = PQsetdbLogin(HOSTNAME,DBPORT,NULL,NULL,DBNAME,USERNAME,DBPASS ) ; if(PQstatus(conn) == CONNECTION_BAD) { printf("Content-type:text/html"); printf("<HTML>"); printf("cannot connect!"); printf("</HTML>"); exit(0); } /* データベースエンジンに実行させるSQL文 */ res = PQexec(conn, "CREATE TABLE suitedb (clumn_1 varchar(16))"); for (i = 0; i < PQntuples(res); i++) printf("%s", PQgetvalue(res, i, 0)); PQclear(res); PQfinish(conn); printf("Content-type:text/html"); printf("<HTML>"); printf("MESSAGE : Success"); printf("</HTML>"); return 0; }
- 作成したソースファイルに適当な名前を付けてファイルに保存して下さい。ここでは例としてdbtest.cという名前を付けます。
- LinuxにPostgreSQLをインストールしたコンピュータ上で、libpq.aをスタティックにリンクさせてdbtest.cをコンパイルして下さい。 Libpqインターフェースのヘッダファイルが /usr/local/pgsql/include ディレクトリにあり、 libpq.aのパスが /usr/local/pgsql/lib/libpq.a の場合、以下のコマンドでコンパイル出来ます。
gcc -I/usr/local/pgsql/include dbtest.c -lcrypt /usr/local/pgsql/lib/libpq.a
- コンパイルして出来たCGI (a.out) に適当な名前を付け、管理者用アカウント(admin)を使用してWebARENA Suiteサーバーの /cgi-bin ディレクトリに転送して下さい。
- 転送したCGIのパーミッションを 700(rwx------) に設定して下さい。
- CGIをブラウザから呼び出して実行させて下さい。 正しく実行されるとブラウザの画面に「MESSAGE : Success」と表示され、テーブルが作成されます。
- DB MANAGERにログインして、「suitedb」という名前のテーブルが作成されていることを確認して下さい。
実行させるSQL文を変えればデータベースに対し任意の操作を行うことが出来ます。