MySQLをレンタルサーバーで使ってみよう

米国レンタルサーバー総合情報

アフィリエイト研究室TOP > 海外レンタルサーバー > iPowerwebでMySQL

アクセス解析の鬼
アフィリエイトと検索エンジン最適化の融合サービス

1000 MB Web Hosting, 1000 Email only $7.50/mo

Huge savings on website hosting!

MySQL等の、DBを使ったウェブサイトの運営はしていますか?サイト運営に当たって必須というわけではないですが、せっかくならレンタルサーバーが標準で提供しているDBを利用して、より本格的なサイト運営もしたいもの。商品購入者情報の管理やウェブのアクセス状況の集計など、使いこなせば大抵のことはウェブ上で実現できるようになります。もちろん、それら全ての情報を統合すれば、データベースとしてはより有用なものになっていくでしょう。


ここでは、当サイトが利用しているレンタルサーバーiPowerWebを使ってのMySQLの使い方を解説します。但し、DBやSQL自体を解説するサイトではないので、詳細は専門サイトなどで勉強されるとよろしいかと思います。(質問メールなど送られてもお答え出来ませんので・・)


国内レンタルサーバーの格安系はなぜかこういったデータベースのサポートをしているのは比較的少ないように思えます。その点、海外レンタルサーバーは安い上に、ちゃんとDBが使えるので、勉強という点でも、まさに打って付けではないでしょうか。


まずはDBを始める目的をはっきりさせよう

わざわざDB(データベース)を使う目的は何でしょう?DBのメリットなどは専門サイトで多く語られていることでしょうから、そちらを参考にして、自サイト運営でDBを利用する利点を探してみるのがよいと思います。もちろん、DBの勉強がしたいという目的でもよいでしょう。(このページもそれが目的です)


ここでは、超簡単なアクセス解析を、MySQLを使って作成してみることで、iPowerWebでのMySQLの使い方を勉強していくことにします。


管理画面でセットアップ1

データベースの準備は全て管理画面で行うことが出来ます。しかもコマンドを打って作成していくわけではないので、DBの基本さえ知っていれば、かなり楽に準備が進められるでしょう。


まず、管理画面(cPanel)に入って、以下のアイコンをクリック!

MySQL


初めてDBを操作する場合、以下のような画面が現れるので、まずはここでデータベースを作成しましょう。

目的がアクセス解析なので、Db を「access」としておきます。「Add Db」をクリックして、データベースを追加できます。


すると、自動的に「takawone_access」というデータベースが作成されました。この「takawone_」というのは、ここのドメイン名が「takawo.net」であることから、強制的に付けられてしまう部分ですので、気にしないでよいです。


次に元の画面に戻って、ユーザーを作成しましょう。

ここでは、UserName を「test」、Passwordを「goomani」とでもしておきます。よければ、「Add User」をクリックすると、自動的に「takawone_test」というユーザーが作成されます。


ここまでで、「takawone_access」というデータベースと、「takawone_test」というユーザーが作成されたことになります。

元の画面に戻って、この作成したユーザーを、すでに作成済みのデータベースに追加(登録)してあげましょう。「Add User to Db」をクリックしてください。


元も画面に戻ってみると、ユーザーとデータベースが作成されたので、画面の雰囲気が変わっていますが、とりあえず無視して、下の方にあるphpMyAdminをクリックして、テーブル作成を行いましょう。

 

 


管理画面でセットアップ2

phpMyAdminに入って最初にするのは、管理画面の日本語化。英語の方がかえってわかりやすいときもあるのですが、海外レンタルサーバーでもちゃんと日本語サービスが提供されているという一例として紹介しておきたいので、ここでは日本語化して作業することにします。


日本語(sjis)に設定

日本語化したら、左上の方に先ほど作った「takawone_access」の名称が表示されているので、ここをクリックして、「takawone_access」を編集します。


takawone_access」の中にテーブルを新規作成していきます。ここでは「tbl_access」という名称のテーブルで、テーブル内のフィールド数は「5」として新規作成しましょう。「実行」をクリックしてください。


5つのフィールド、それぞれの詳細を決めていきます。この辺りは、DBに関する知識が必要になりますので、他サイトや書籍などで勉強するのがよいでしょう。

フィールド名
タイプ
主キー
内容
a_num INT型
オートナンバー
a_url CHAR型   アクセスしたURL
a_ref CHAR型   アクセス元のURL
a_ip CHAR型   訪問者のIPアドレス
a_tim TIMESTAMP型   アクセス時刻

大体こんな感じで単純ですね、実際のアクセス解析はこんなシンプルでは済まないのでしょうが

 


こんな風に書き込んであげてください。


よければ、「保存」をクリック。
さぁ、これでデータベースの準備は整いました。


DB名
テーブル名
フィールド名
takawone_access
   
tbl_access  
 
a_num
 
a_url
 
a_ref
 
a_ip
 
a_tim

今のところのイメージはこんな感じ



いよいよCGIでDBに書き込み

DBの準備が整ったので、ようやくCGIを使ってDBのレコードを編集(今回の場合は追加のみ)出来るようになったのですが、一応、簡単にプログラムの書き方を解説しましょう。


Perlを使って、iPowerwebでのDBレコードの追加ということになりますので、他の条件ではこの通りに行くとは限りませんので、ご注意を。

シンプルなレコード追加のプログラム

#!/usr/bin/perl

use DBI;

	$user = "takawone_test";
	$pass = "goomani";
	$dbname = "takawone_access";
	$ip = $ENV{'REMOTE_ADDR'};

	$db = DBI->connect("DBI:mysql:$dbname:localhost","$user","$pass");
	$statement = "INSERT INTO tbl_access  
	(a_url, a_ref, a_ip) VALUES ('http://aaa.com/','http://bbb.com','$ip')";
	$sth = $db->prepare("$statement");
	$sth->execute;
	$sth->finish;
	$db->disconnect;

	print "Content-type: text/html\n\n";
	print "レコード追加したぞ";

exit;

こんな感じでCGIを作って、そのCGIをブラウザーで表示させると、レコードの追加は行われます。

上記ソースのテキストファイル



HTMLから呼び出すCGI

Perlによる、DBへのアクセス方法がわかったので、この方法を使って、HTMLページが読み込まれたときに、DBレコードを追加するCGIを作成しましょう。


ありがちなテクニックですが、HTMLからimgタグを使って、CGIを呼び出すことにします。HTML側ではjava scriptを使うことで、現在のURLや参照元URLを取得して、取得した値をCGIに送るようにします。


DBへの接続部分は出来上がっているので、後はPerlが多少なりともわかる方なら問題ないと思います。GETで受け取った内容からSQL文を作成していけばよいだけですので。

HTMLから呼び出すCGI

#!/usr/bin/perl

use DBI;


	$user = "takawone_test";
	$pass = "goomani";
	$dbname = "takawone_access";


	$buff = $ENV{'QUERY_STRING'};
	@lens = split(/&/,$buff);
	foreach $len (@lens){
	    ($name, $value) = split(/=/, $len);
	    $value =~ tr/+/ /;
	    $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
	    $in{$name} = $value;
	}

	$URL = "$in{'URL'}";
	$ref = "$in{'REF'}";
	$ip = $ENV{'REMOTE_ADDR'};


	$db = DBI->connect("DBI:mysql:$dbname:localhost","$user","$pass");
	$statement = "INSERT INTO tbl_access (a_url, a_ref, a_ip) 
	VALUES ('$URL','$ref','$ip')";
	$sth = $db->prepare("$statement");
	$sth->execute;
	$sth->finish;
	$db->disconnect;


	print "Content-type: image/gif\n\n";
	open(IN,"access.gif");
	print ;
	close(IN);

exit;

 

上記ソースのテキストファイル


HTML側の記述はこんな感じ
<script language="JavaScript">
<!--
REF=document.referrer;
if(REF==""){REF="NA";}
document.write("<IMG SRC=");
document.write("http://CGI設置場所/access.cgi");
document.write("?URL=");
document.write(document.location.href);
document.write("&REF=");
document.write(REF);
document.write(">");
// -->
</script>

ご覧のように、やってみると案外あっけないものだったりします。といっても、これしかデータを吸ってないアクセス解析では実用的ではないですし、そもそもテーブルが1つだけで、データベースと呼べるような代物ではありませんが・・。

 

それにしても、海外のサーバーでも日本語でデータベースは問題なく扱えますし、追加料金なしでここまで使えるのはさすがiPowerWebですね。


レンタルサーバーTOPに戻る