アプリケーション~PostgreSQL(新規販売終了)
1.概要
オプションサービスの DBオプション(データベース) にお申し込み頂くと、 PostgreSQLによる本格的なRDBMS(リレーショナルデータベース管理システム)をご利用頂くことができます。
このページにはお申し込み手続き完了後の使用方法を記載しています。
2.サーバーの仕様
WebARENA SuiteXのDBオプションサービスでは、データベースエンジンにPostgreSQL 7.4.8を使用しています。
サーバーの構成は、以下の図の様になっています。
WebARENA SuiteXのデータベースは、ご契約頂いているWebARENA SuiteXサーバーとは別に設置されている、専用のサーバーに格納されています。
WebARENA SuiteXのデータベースにアクセスする方法は2種類あります。
1つは専用の管理ツール 「phpPgAdmin」 を使用してデータベースを操作する方法(図中1)です。
管理ツール 「phpPgAdmin」 については、 オンラインマニュアル - 管理ツール - phpPgAdmin をご覧ください。
「phpPgAdmin」 では、データベースの作成や、データベースに対し任意のSQL文を発行しての操作、データベースのダンプ・リストアなどを行うことができます。ブラウザ上にメニューが表示され視覚的に操作することができますので、メンテナンスを容易に行うことができます
もう1つはご利用頂いているWebARENA SuiteXサーバーに、データベースにアクセスするためのCGIプログラムをアップロードして(図中2)、 そのCGIを通してデータベースにアクセスする方法(図中 3)です。通常はこちらの方法でご利用頂くことになります。 CGIプログラムは弊社ではご用意しておりませんので、お客さまにて必要な機能を持ったCGIをご用意下さい。
CGIをご利用する場合の注意事項
ご契約時に弊社よりお知らせした 初期ユーザー名は、CGI等を用いて削除しないでください。
初期ユーザー名を削除した場合は、 データベースがご利用頂けなくなることがございます。
万一、初期ユーザー名を削除した場合は、 データベースの初期化が必要となり、お客さまのデータも破棄されてしまいますので、十分にご注意いただきますようお願い致します。
データベースサーバーへの集中的な接続による負荷軽減のため、データベースサーバーに同時アクセス数の制限を行っており、制限値を超えた同時アクセスはできないようになっております。なお、具体的な制限値につきましては非公開とさせて頂いております。
3.使用容量について
WebARENA SuiteXのデータベースオプションサービスでは、最大1GBまでデータを 収容することができます。
また、使用容量には、データベースのシステムで使用している容量も含まれます。
ご了承ください。
なお、容量制限にかかった場合、 データベースへのデータ入力・編集・追加等の処理が出来なくなる、 データが破損する、データベースサービスが停止する等の問題が発生する恐れがございます ので、適宜不必要なデータを削除したり、vacuum 処理を行い、空き容量の確保をして下さいますようお願い致します。
使用容量をご確認する方法、vacuum による容量の確保に関しては、 オンラインマニュアル - 管理ツール - phpPgAdmin をご覧ください。
4.CGIの言語とモジュール
データベースにアクセスするためのCGIを作成する言語は、 PHP5・Perl・C言語 がご利用頂けます。
PHPでCGIを作成する場合、 オンラインマニュアル - ホームページ - CGI・PHP・SSIのページ に使用方法が記載されておりますので、はじめにそちらをご覧下さい。データベースへの接続方法については、このページの 「PHPを使う場合の利用例」 をご覧下さい。
PerlでCGIを作成する場合、WebARENA SuiteXサーバーにはデータベース用のPerlモジュールとして DBI/DBD::Pg を用意しております。 Perlで作成したCGIプログラムからデータベースにアクセスする場合にご利用下さい。
C言語でCGIを作成する場合、Linuxをインストールしたお客さまのコンピュータ上で、Libpqインターフェースのライブラリ libpq.a をスタティックにリンクさせてコンパイルして下さい。
どちらの言語をご利用になる場合も、モジュールの使用方法やCGIプログラムの記述方法につきましてはサポート対象外とさせて頂いております。
ご不明な場合はデータベース・CGI関連の書籍やWebサイト等をご覧下さい。
5.データベースの作成
WebARENA SuiteXのデータベースオプションでは、WebARENA Suiteのデータベースオプションとは違い、 ご契約直後は、データベースは存在致しません。
そのためまず管理ツール「phpPgAdmin」等から、お客さまにおきましてデータベースやテーブルの作成を行って頂く必要がございます。
管理ツール 「phpPgAdmin」 や、 データベースの作成 については、 オンラインマニュアル - 管理ツール - phpPgAdmin をご覧ください。
管理ツール「phpPgAdmin」のURL は以下のようになります。
こちらよりデータベースの作成等を行ってください。
https://(お客さまのデータベースサーバー名)/
6.PHPを使う場合の利用例
PHP5でCGIを作成し、SQL文を実行させてDBサーバー内に「SuiteXdb」という名前のテーブルを作成する場合の手順です。こちらの方法を参考にご利用下さい。
※操作を行う前に、上記「●データベースの作成」を参考にデータベースの作成を行ってください。
- PHP5でCGIスクリプトを作成します。
実際にはお客さまの用途に合わせて作成して頂くことになりますが、ここでは例として以下のCGIスクリプトを作成します。
CGIスクリプトの中に、お客さまの環境に合わせて設定しなければならない部分があります。 橙色 の部分はお客さまの環境に合わせて書き換えて下さい。#!/usr/local/bin/php5
<HTML>
<HEAD>
<TITLE>PHP Test</TITLE>
</HEAD>
<BODY>
<?
/*
「host=」の後には、お客さまのDBサーバー名を設定して下さい。
「dbname=」の後には、お客さまが管理ツール「phpPgAdmin」等で 作成したDB名を設定して下さい。
「user=」の後には、お客さまのDBオプションサービス用ユーザー名、 またはお客さまが作成したユーザー名を設定して下さい。
「password=」の後には、任意のユーザー(アカウント)に対して お客さまが設定したパスワードを設定して下さい。
こちらの例の場合、それぞれの項目は以下のようになります。
DBサーバー名:abc.db1.arena.ne.jp
DB名 :test
ユーザー名 :abc.db1.arena.ne.jp
パスワード:abcabc
*/
/*
※「$dbh」から「password=abcabc");」までの間に改行を入れないでください。 */
$dbh = pg_connect("host=abc.db1.arena.ne.jp port=5432 dbname=test user=abc.db1.arena.ne.jp password=abcabc");
if(!$dbh){
echo "MESSAGE : cannot connect!<BR>";
}else{
/* データベースエンジンに実行させるSQL文 */
$result = pg_exec($dbh,"CREATE TABLE SuiteXdb (clumn_1 varchar(16))");
echo "MESSAGE : Success<BR>";
pg_close();
}
?>
</BODY>
</HTML> - 作成したCGIに適当な名前を付け、管理者用アカウント(admin)を使用してWebARENA SuiteXサーバーの /cgi-bin ディレクトリに転送して下さい。
- 転送したCGIのパーミッションを 700(rwx------) に設定して下さい。
- CGIをブラウザから呼び出して実行させて下さい。
正しく実行されるとブラウザの画面に「MESSAGE : Success」と表示され、テーブルが作成されます。 - 管理ツール 「phpPgAdmin」 にログインして、「SuiteXdb」という名前のテーブルが作成されていることを確認して下さい。
実行させるSQL文を変えればデータベースに対し任意の操作を行うことができます。
7.Perlを使う場合の利用例
PerlでDBIおよびDBD::Pgモジュールを使用したCGIを作成し、SQL文を実行させてDBサーバー内に「SuiteXdb」という名前のテーブルを作成する場合の手順です。こちらの方法を参考にご利用下さい。
※操作を行う前に、上記「●データベースの作成」を参考にデータベースの作成を行ってください。
- PHP5でCGIスクリプトを作成します。
実際にはお客さまの用途に合わせて作成して頂くことになりますが、ここでは例として以下のCGIスクリプトを作成します。
CGIスクリプトの中に、お客さまの環境に合わせて設定しなければならない部分があります。 橙色 の部分はお客さまの環境に合わせて書き換えて下さい。#!/usr/bin/perl
use DBI; # DBIモジュールのロード
use CGI;
main:{
# my($hostname) にはお客さまのDBサーバー名を設定して下さい。
# 以下はhostnameが abc.db1.arena.ne.jp の場合の例です。
my($hostname) = "abc.db1.arena.ne.jp";
# my($dbname) にはお客さまが管理ツール「phpPgAdmin」等で作成したDB名を設定して下さい。
# 以下はdbnameが test の場合の例です。
my($dbname) = "test";
# my($username) にはお客さまのDBオプションサービス用ユーザー名、
# または、お客さまが作成したユーザー名を設定して下さい。
# 以下はusernameが abc.db1.arena.ne.jp の場合の例です。
my($username) = "abc.db1.arena.ne.jp";
# my($passwd) には任意のユーザー(アカウント)に対してお客さまが設定したパスワードを設定して下さい。
# 以下はpasswdが abcabc の場合の例です。 my($passwd) = "abcabc";
# ポート番号
my($port) = "5432";
# データベースエンジンに実行させるSQL文
my($sql) = "CREATE TABLE SuiteXdb (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\n\n";
print "<HTML>\n";
print "MESSAGE : $error";
print "</HTML>\n";
exit;
}
- 作成したCGIに適当な名前を付け、管理者用アカウント(admin)を使用してWebARENA SuiteXサーバーの /cgi-bin ディレクトリに転送して下さい。
- 転送したCGIのパーミッションを 700(rwx------) に設定して下さい。
- CGIをブラウザから呼び出して実行させて下さい。
正しく実行されるとブラウザの画面に「MESSAGE : Success」と表示され、テーブルが作成されます。 - 管理ツール 「phpPgAdmin」 にログインして、「SuiteXdb」という名前のテーブルが作成されていることを確認して下さい。
実行させるSQL文を変えればデータベースに対し任意の操作を行うことができます。
8.C言語を使う場合の利用例
C言語でlibpq.aモジュールを使用したCGIを作成し、SQL文を実行させてDBサーバー内に「SuiteXdb」という名前のテーブルを作成する場合の手順です。こちらの方法を参考にご利用下さい。
※操作を行う前に、上記「●データベースの作成」を参考にデータベースの作成を行ってください。
- C言語でCGIのソースファイルを作成します。
実際にはお客さまの用途に合わせて作成して頂くことになりますが、ここでは例として以下のCGIスクリプトを作成します。
CGIスクリプトの中に、お客さまの環境に合わせて設定しなければならない部分があります。 橙色 の部分はお客さまの環境に合わせて書き換えて下さい。#include "libpq-fe.h"
/*
HOSTNAME にはお客さまのDBサーバー名を設定して下さい。
以下はHOSTNAMEが abc.db1.arena.ne.jp の場合の例です。
*/
#define HOSTNAME "abc.db1.arena.ne.jp"
/*
DBNAME にはお客さまが管理ツール「phpPgAdmin」等で作成したDB名を設定して下さい。
以下はDBNAMEが test の場合の例です。
*/
#define DBNAME "test"
/*
USERNAME にはお客さまのDBオプションサービス用ユーザー名、
または、お客さまが作成したユーザー名を設定して下さい。
以下はUSERNAMEが abc.db1.arena.ne.jp の場合の例です。
*/
#define USERNAME "abc.db1.arena.ne.jp"
/*
DBPASS には任意のユーザー(アカウント)に対してお客さまが設定したパスワードを設定して下さい。
以下はDBPASSが 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\n\n");
printf("<HTML>\n");
printf("cannot connect!\n");
printf("</HTML>\n");
exit(0);
}
/*
データベースエンジンに実行させるSQL文
*/
res = PQexec(conn, "CREATE TABLE SuiteXdb (clumn_1 varchar(16))");
for (i = 0; i < PQntuples(res); i++) printf("%s\n", PQgetvalue(res, i, 0));
PQclear(res);
PQfinish(conn);
printf("Content-type:text/html\n\n");
printf("<HTML>\n");
printf("MESSAGE : Success");
printf("</HTML>\n");
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 SuiteXサーバーの /cgi-bin ディレクトリに転送して下さい。
- 転送したCGIのパーミッションを 700(rwx------) に設定して下さい。
- CGIをブラウザから呼び出して実行させて下さい。
正しく実行されるとブラウザの画面に「MESSAGE : Success」と表示され、テーブルが作成されます。 - 管理ツール 「phpPgAdmin」 にログインして、「SuiteXdb」という名前のテーブルが作成されていることを確認して下さい。
実行させるSQL文を変えればデータベースに対し任意の操作を行うことができます。