Plesk Obsidianリリース記念!Plesk最大7カ月無料キャンペーン

2012/10/12

【実証】GMOクラウド Publicではじめるソーシャルアプリ(前編)

GMOクラウドの芦田です。クラウド環境は、ソーシャルアプリケーション(以下、ソーシャルアプリ)を公開するためのプラットフォームとしては極めて相性がいい存在です。 ソーシャルアプリの利点のひとつは、友達同士の口コミによって多くのユーザーの目に留まる機会が得られることですが、その反面、予想以上に利用者数が増えた場合にはサーバー側が負荷に耐えられなくなる恐れがあります。クラウドの柔軟性があれば、そのような心配をする必要がありません。
そこで、今回はGMOクラウド Publicを使ってソーシャルアプリを扱う方法をとりあげます。単にアプリをWebサーバーに置くだけでは物足りないので、まずは作成したソーシャルアプリをテストするための実行環境を構築するところから始めてみます。

1 ソーシャルアプリとOpenSocial

まず、ソーシャルアプリとは何かということをおさらいしておきましょう。ソーシャルアプリは、SNS(ソーシャルネットワーキングサービス) などのコミュニティ・プラットフォームを実行基盤として提供されるアプリの総称です。SNSから提供される様々なAPIを通じて、ユーザーの登録情報や、 ユーザー同士の繋がりを活かしたサービスを構築できる点が大きな特長です。ソーシャルアプリをサポートした代表的なサービスとしては、mixiや Facebook、Gree、Mobageなどが挙げられます。
ソーシャルアプリの開発には、各サービスで提供されているAPIを利用する必要があります。それぞれのサービスにAPIの使い方を覚えるのは大変なので、現在は複数のサービスにおいて共通で利用できるAPI群が開発されています。それが「OpenSocial」です。主要なSNSはほとんどこのOpenSocialをサポートしているため、ここに定義されたAPIの使い方さえ覚えてしまえば、多くのSNSプラットフォームでのソーシャルアプリ開発に利用することができます。
ソーシャルアプリを提供する場合、一般的には自前のサーバー上にアプリを置き、ユーザーからはSNSなどの各プラットフォーム経由でそのアプリにアクセスしてもらう形になります。SNSにはそれぞれアプリのURLなどの情報を登録するための窓口が用意されています。ユーザー情報などにアクセス するためにはAPIを使いますが、上で書いたようにOpenSocial APIであれば多くのSNSで利用可能なため、一度に複数のSNSに向けてアプリを公開することもできるわけです。

2 【実証】 OpenSocial 対応の SNS ソフトウェア「 OpenPNE 」

さて、今回はまずソーシャルアプリを実行するための環境をGMOクラウド Publicの仮想サーバー上に構築したいと考えています。簡単に言えば、OpenSocialに対応したSNSを構築しよう、ということです。ソーシャルアプリを作ってもいきなり外部のサービスに公開するのは不安、という方でも、自前のSNSであれば安心してテストをすることができます。また、社内や ローカルなコミュニティ向けにSNSを始めたい場合にも、今回説明する内容が役に立つでしょう。
SNSを立ち上げるためのソフトウェアはいくつかありますが、今回はそのうちのひとつである「OpenPNE」を使うことにします。OpenPNEはオープンソースで開発されているSNSソフトウェアで、自由にダウンロードして使うことができます。バージョン3(OpenPNE3)以降はOpenSocialにも対応したためソーシャルアプリの実行基盤としても利用できます。

3 PHP のアップデート

利用する仮想サーバーは、E-Commerceサイトを構築したときと同じように、「CentOS 5.5 LAMP x86」テンプレートで構築したWebサーバー「kumolabo-test」と、MySQLをインストールしたバックエンドのデータベースサーバー 「kumolabo-mysql」を利用します。ただし、「CentOS 5.5 LAMP x86」で設定されたPHPはバージョンが古く、最新の安定版であるOpenPNE 3.6が動かないため、kumolabo-testの方はPHPをバージョンアップする必要があります。 まず、次のコマンドでPHPのバージョンを確認してください。

[root@kumolabo-test ~]# php -v
PHP 5.1.6 (cli) (built: Nov 29 2010 16:47:37)
Copyright (c) 1997-2006 The PHP Group
Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies

OpenPNE 3.6PHP 5.2.3以降のバージョンが必要です。上のようにPHP 5.1.6では動きません。yumにはPHP 5.3.xに対応した「php53」というパッケージがあるので、今回はこれをインストールします。まず、古いphpと関連するモジュールのパッケージを 削除します。

[root@kumolabo-test ~]# yum -y remove php php-* 

続いて、php53と、関連する必要なモジュールをインストールします。

[root@kumolabo-test ~]# yum -y install php53 
[root@kumolabo-test ~]# yum -y install php53-mbstring php53-mysql php53-common php53-pdo php53-cli php53-xml php53-gd 

php53はタイムゾーンの設定を明記しなければ正常に動作しないことがあるので、「/etc/php.ini」に次の設定を追加してください。

data.timezone = Asia/Tokyo 

最後にApacheを再起動して変更を反映させます。

[root@kumolabo-test ~]# /etc/rc.d/init.d/httpd restart

4 OpenPNE のインストール

続いてOpenPNEをインストールしましょう。OpenPNE3はこのサイトよりダウンロードできます。zipファイルをダウンロードする方法とGitでチェックアウトする方法がありますが、筆者はwgetコマンドでzipファイル をダウンロードしました。zipファイルを解凍したら、ディレクトリ名を「OpenPNE3」に改名し、Webブラウザからアクセスできる場所(この例で は「/var/www/html/」)に配置します。そして、ディレクトリのオーナーをWebの管理ユーザー(この例ではApache)に変更してください。

[root@kumolabo-test ~]# unzip openpne-OpenPNE3-OpenPNE-3.6.0-0-g5d18306.zip 
[root@kumolabo-test ~]# mv openpne-OpenPNE3-5d18306 OpenPNE3 
[root@kumolabo-test ~]# mv OpenPNE3 /var/www/html/ 
[root@kumolabo-test ~]# chown -R apache. /var/www/html/OpenPNE3/
OpenPNE3のconfigディレクトリに移動し、「ProjectConfiguration.class.php.sample」と「OpenPNE.yml.sample」のファイルを、それぞれ最後の.sampleを取ってコピーします。

[root@kumolabo-test ~]# cd /var/www/html/OpenPNE3/config/ 
[root@kumolabo-test config]# cp ProjectConfiguration.class.php.sample ProjectConfiguration.class.php 
[root@kumolabo-test config]# cp OpenPNE.yml.sample OpenPNE.yml

そしてOpenPNE.ymlを開いて、「base_url」の部分と「mail_domain」の部分を、それぞれ自分のホストの環境に合わせて修正してください。次の例はホストのURLが「kumolabo-test.example.com」だった場合の設定です。

base_url: “http://kumolabo-test.example.com” 
mail_domain: “kumolabo-test.example.com”

次に、データベースなどの初期設定を行います。これはOpenPNE3に付属するインストールコマンドを利用して行うことができます。そのた め、MySQLサーバーの方は直接いじる必要がありません。OpenPNE3のディレクトリに移動して次のコマンドを実行し、指示に従って設定を入力して ください(矢印の部分は入力する項目、括弧内は入力例です)。

[root@kumolabo-test ~]# cd /var/www/html/OpenPNE3/ 
[root@kumolabo-test OpenPNE3]# ./symfony openpne:install 
Choose DBMS (mysql, pgsql or sqlite)         <ーデータベースの種類(”mysql”) 
Type database username         <ーデータベースにアクセスするユーザー名(”openpne”) 
Type database password (optional)         <ーデータベースにアクセスするパスワード(”passwd”) 
Type database hostname        <ーデータベースサーバーのホスト名(kumolabo-mysqlのIPアドレス) 
Type database port number (optional)        <ーデータベースサーバーのポート番号(デフォルト設定の場合は省略可能なのでそのまま[Enter]) 
Type database name        <ーデータベース名(”openpne”) 
Is it OK to start this task? (Y/n)         <ーインストールを実施するか否か(”Y”)

設定が成功したら、次のコマンドで作業ファイルを削除しておきましょう。

[root@kumolabo-test OpenPNE3]# ./symfony project:clear-controllers

続いて、OpenPNE3のwebディレクトリにある.htaccessを編集して、WebブラウザからOpenPNEアクセスするためのパスを設定します。「#RewriteBase /」となっている部分があるので、先頭の#を削除した上で、「/」の部分を任意をパスに置き換えます。たとえば、「http://kumolabo- test.example.com/mysns/」というパスでアクセスできるようにしたい場合には次のように記述します。

# uncomment the following line, if you are having trouble   
# getting no_script_name to work   
RewriteBase /mysns/

そして、このパスでのアクセスが有効になるように、OpenPNE3のwebディレクトリへのシンボリックリンクを作成します。ドキュメント ルートが/var/www/html/である場合には、「/var/www/html/mysns」というリンクを作ればいいことになります。

[root@kumolabo-test OpenPNE3]# ln -s /var/www/html/OpenPNE3/web/ /var/www/html/mysns 

以上で設定は完了です。
最後に、もう一度Apacheを起動して設定を反映させてください。


コラム一覧へ