まだプログラマーですが何か?

プログラマーネタとアスリートネタ中心。たまに作成したウェブサービス関連の話も http://twitter.com/dotnsf

2014年08月

Couchbase サーバーに PHP SDK を使って PHP のプログラムからアクセスする環境の準備手順と、そのサンプルを紹介します。環境は CentOS 6.4 です。

まず Couchbase サーバーが用意できていない場合はサーバーを導入します。導入手順はこちらを参照してください:
CentOS に CouchBase サーバーを導入する


次に Couchbase Server 用の PHP のクライアントライブラリをインストールしますが、ここではいくつかの手順が必要になります。

まずは PHP をインストールします。後で pecl を使うので php-pear も含めてインストールします:
# yum install php php-mbstring php-devel php-pear

また、後で使うので openssl-devel モジュールもこのタイミングでインストールしておきます:
# yum install openssl-devel

次に libcouchbase.so という、Couchbase サーバー用の共用モジュールを導入します:
# wget -O /etc/yum.repos.d/couchbase.repo http://packages.couchbase.com/rpm/couchbase-centos62-x86_64.repo
# yum check-update
# yum install libcouchbase2-libevent libcouchbase-devel

ここまでの作業ができていると Couchbase サーバーの PHP SDK が導入できるようになります:
# pecl install couchbase

最後に PHP の拡張モジュールとして couchbase.so を指定します:
# vi /etc/php.d/json.ini
  :
  :
extension=json.so
extension=couchbase.so ←この行を追加

これで Couchbase 用の PHP SDK が使える状態になりました。以下の様なコードを記述することで PHP から Couchbase サーバーにアクセスすることができます("couchbase.test.com"部分は Couchbase サーバーのホスト名かIPアドレスを指定します):
<?php
$cb = new Couchbase( "couchbase.test.com:8091", "", "", "default" );
$cb->set( "my-second-document", "ハロー、CouchBase." );
var_dump( $cb->get( "my-second-document" ) );
?>

この例では Couchbase オブジェクトを作成し、"my-second-document" という ID のドキュメントを "ハロー、Couchbase" というプレーンテキストで作成し、そのデータを var_dump 関数で表示する、というだけのシンプルな内容です。この PHP プログラムが正しく実行されると以下の様な出力結果になります:
# php test.php
string(22) "ハロー、CouchBase."

Couchbase PHP SDK の公式なドキュメントはこちらを参照ください:
http://docs.couchbase.com/couchbase-sdk-php-1.1/




 

Couchbase Server のデータに Java のクライアントライブラリ経由でアクセスするための準備と実装内容を紹介します。

まずサーバーをセットアップします。手順はこちらに記載してある方法ですが、Couchbase Server とクライアントプログラムとの間で開けておくべきポートに注意する必要があります。

Couchbase Server の導入時の最後に以下のようなメッセージが表示されます:
couchbase_251_rpm_install


ここで指示されているように、Couchbase Server とクライアントアプリケーションとの間では 4369, 8091, 8092, 11209, 11210, 11211, 11214, 11215, 18091, 18092, そして 21100~21299 番のポートが全て開放されている必要があります。間にファイアウォール環境が入る場合はこの点に注意して、場合によってはフォワーディングの設定を変更しておく必要がある、ということになります。

次にこちらの、Step 1 内の "zipfile" と書かれたリンクから Java 用のクライアントライブラリをダウンロードします。この記事を書いている時点での Couchbase Java Client Library の最新版バージョンは 1.4.4 でした。このバージョンの前提で以下を記載します:
http://www.couchbase.com/communities/jp/java/getting-started

ダウンロードした zip ファイル(Couchbase-Java-Client-1.4.4.zip)を展開し、その中に含まれる以下7つの jar ファイルを取り出して、同一のフォルダに保存しておきます。これで事前準備は完了です。
2014081101


では実際の Java プログラミングで、Couchbase サーバーに1ドキュメントを作成してみます。試しに以下の様なクライアントアプリケーション(HelloWorld.java)を記述します("couchbase.test.com"部分は Couchbase サーバーのホスト名かIPアドレスに書き換えてください):

import java.net.URI;
import java.util.Arrays;
import java.util.List;

import com.couchbase.client.CouchbaseClient;

public class HelloWorld {
  public static void main(String[] args) {
    try{
      List hosts = Arrays.asList( new URI( "http://couchbase.test.com:8091/pools" ) );

      String bucket = "default";
      String password = "";

      CouchbaseClient client = new CouchbaseClient( hosts, bucket, password );
      client.set( "my-first-document", "ハローワールド" ).get();

      System.out.println( client.get( "my-first-document" ) );

      client.shutdown();
    }catch( Exception e ){
      e.printStackTrace();
    }
  }
}


これをコンパイルし、
# javac -cp couchbase-client-1.4.4.jar:spymemcached-2.11.4.jar HelloWorld.java


そして実行します:
# java -cp .:couchbase-client-1.4.4.jar:spymemcached-2.11.4.jar:jettison-1.1.jar:netty.3.5.5.Final.jar:commons-codec-1.5.jar:httpcore-4.3.jar:httpcore-nio-4.3.jar HelloWorld.java

正しく実行されると、Couchbase サーバーの default バケットにアクセスして、"my-first-document" という ID のドキュメントを作成し、そのデータ内容はプレーンテキストの "ハローワールド" になります。そして、このプレーンテキストが表示されます。
2014081102

正しく実行できました。念のため、Couchbase サーバーの管理コンソールからもこのドキュメントが作成されたことを確認してみます。管理コンソールの "Data Buckets" から "default" と書かれたバケットの横にある "Documents" ボタンをクリックすると、default バケット内のドキュメント一覧が表示され、その中に "my-first-document" という ID のものが含まれていることが確認できます:
2014081103
えらくシンプルなサンプルでしたが、一応クライアントライブラリを使った「ハローワールド」の紹介でした。

クライアントライブラリの日本語での使い方についてはこちらを参照ください:
http://docs.couchbase.com/prebuilt/translations/jp/couchbase-sdk-java-1.0-ja/downloading.html






 

クラウドが普通に使われるようになりましたが、個人でアプリやサービスを開発しているとスケールのメリットを考慮するケースが少なく、何よりコスト的なメリットもあって自分はまだ VPS(Virtual Private Server) を利用することが多いです。業務でも「適材適所」と考えれば、開発環境については VPS で充分だと思ってます。

そんな VPS で、安さにこだわる(苦笑)自分が最近注目している3つのサービスを紹介します:


ServersMan@VPS

今回紹介する中では唯一、日本のサービスです。もちろん日本にデータセンターがあり、日本語でサービスを受けることができます。また現時点で自分が実際に使っている唯一のサービスでもあります。

VPS のエントリーサービスの場合、vCPU x 2, メモリ1GB, HDD 50GB というスペックで月額467円(税抜)です。おそらく国内最安。ディスクサイズやメモリサイズの個別カスタマイズはできません(エントリーサービスの1つ上にはメモリ2GB、HDD100GBのスタンダードサービス(同934円)が用意されています)。ssh で root アクセスすることもできます。契約後、最初の1ヶ月間は無料になるキャンペーンも実施中です。

なんといっても日本語でサポートを受けることができる、という安心感があります(逆を言えば下の2つは多少なりとも英語でのオペレーションが必要です)。そして税込でも月額504円という価格メリット。単純にハードウェアスペックだけで比較しても、AWS の t2.micro 単体以上です。1GB のスワップ領域も確保されています。


ちなみに、AWS t2.micro は vCPU x 1, メモリ1GB で月額約 $10 です。新規契約から1年間だけ無料になる t1.micro インスタンスもありますが、有料になると t2.micro の方が安いのでこちらと比較します。


VULTR

注目というか、乗り換えを検討している海外 VPS の1つです。ここの最大の特徴は「SSD が使えて安い」ということです。具体的には最安プランだと vCPU x 1, メモリ 768MB, SSD 15GB で月額$5!なおデータ転送は1TBまで追加料金がかかりません。またデータセンターに日本を選ぶことができる、というメリットもあります。

CPU やメモリ、そしてディスクサイズはほぼ同額の ServersMan の方が上ですが、なんといっても SSD のパフォーマンスメリットを享受できます。マシンの性能の限界を引き出すことも難しいんですが、その中でもディスク性能はすぐに上限になってしまうので、その場合の対策最有力候補です。 自分が運用しようとしているサービスが比較的ディスク負荷の高いものだとすると、こういったサービスを検討することでパフォーマンスの改善を図ることになると思います。

なお、今日現在で VULTR では $100 を上限にデポジットを倍にする(つまり $10 前払いすると $20 ぶん使える)キャンペーンを行っています。なので事実上、上記額が更に半額となるキャンペーン中、とも言えます。


OVH.COM

ここも乗り換えを検討している海外 VPS の1つです。ここの VPS Class1 というサービスの場合、vCPU x 1, メモリ1GB, HDD 10GB というスペックながら、なんと月額 $2.99 です。僕が知る限り、月額料金が最も安い VPS だと思っています。

ただし、ここの場合は契約時に身分証明を送付する必要があるようです。ちょっと面倒かも。。スペック的にもかなり貧弱ではありますが、月300円でどこからでも root でアクセスできるサーバーを1台調達できる、という素晴らしい時代になったということです。



以上、いわゆる「ワンコイン」で使える VPS を3つ紹介しました。最後の OVH に関してはワンコインどころか 300 円程度という破格です。まあ 200 円の違いでディスクが SSD になったり、ディスク容量が5倍になったりするならそっちを検討する、というのも現実的だろうけど。。



 

このページのトップヘ