[OpenSocial] 検証環境を作る

ローカルマシン上のvmwareにインストールしたCentOS5.2へshindigとpartuzaをインストールしました。

サーバに必要な環境は

といった感じ。私の環境とかは下記の通りです。

[root@localhost ~]# cat /etc/redhat-release
CentOS release 5.2 (Final)
[root@localhost ~]# rpm -qa|grep php
php-5.2.6-jason.1
php-gd-5.2.6-jason.1
php-mcrypt-5.2.6-jason.1
php-common-5.2.6-jason.1
php-ldap-5.2.6-jason.1
php-xml-5.2.6-jason.1
php-devel-5.2.6-jason.1
php-mysql-5.2.6-jason.1
php-cli-5.2.6-jason.1
php-pdo-5.2.6-jason.1
php-pear-1.6.2-1.jason.1
[root@localhost ~]# rpm -qa|grep mysql
mysql-server-5.0.45-7.el5
mysql-5.0.45-7.el5
libdbi-dbd-mysql-0.8.1a-1.2.2
php-mysql-5.2.6-jason.1
mysql-connector-odbc-3.51.12-2.2
[root@localhost ~]# rpm -qa|grep httpd
httpd-manual-2.2.3-11.el5_1.centos.3
httpd-2.2.3-11.el5_1.centos.3
httpd-devel-2.2.3-11.el5_1.centos.3
[root@localhost ~]#

CentOSでphp5.2をインストールする際には下記の記事を参考にしました。

CentOS 5.2にPHP 5.2をインストールする

若干やり方は変えて

# vi /etc/yum.repos.d/utterramblings.repo
enabled=0

にしておいて

# yum install php --enablerepo=utterramblings

としました。こうしておけば普段のyum実行ではこのレポジトリへの取得は行いません。

shindigとpartunaを取得

OpenSocialコンテナとなるshindigと、SNSのpartuzaをsubversionから取得します。

# svn co http://svn.apache.org/repos/asf/incubator/shindig/trunk /path/to/shindig
# svn co http://partuza.googlecode.com/svn/trunk/ /path/to/partuza
# chown -R apache:apache /path/to/partuza/html/images/people

hostsの変更

hostsの変更は、ローカル環境にインストールする以外でも必須です。

サーバのhosts
# vi /etc/hosts
127.0.0.1 shindig partuza
クライアントのhosts

今回は、外部に公開せず自身のvmware上にサーバを構築するのでクライントPCのhostsも変更します。

Windows XP
C:\WINDOWS\system32\drivers\etc\hosts
MacOS 10.5.x
# sudo vi /etc/hosts
# sudo dscacheutil -flushcache

Apache のヴァーチャルドメイン設定

rpmパッケージでインストールしていれば/etc/httpd/conf/httpd.confの一番最後の行あたりにVirtualHostのディレクティブがあるはずです。

# vi /etc/httpd/conf/httpd.conf
NameVirtualHost *:80

    DocumentRoot /path/to/shindig/php
    ServerName shindig
    ErrorLog logs/shindig.error_log
    CustomLog logs/shindig.access_log common
    
        AllowOverride All
    




    DocumentRoot /path/to/partuza/html
    ServerName partuza
    ErrorLog logs/partuza.error_log
    CustomLog logs/partuza.access_log common
    
        AllowOverride All
    


# /etc/init.d/httpd restart

databaseをつくる

partuzaのデータベースを流し込みます。

$ mysql -u root
mysql> create database partuza;
mysql> alter table application_settings modify column value text NOT NULL;#アプリの永続化データ容量を増やしたい方向け
mysql> \q
$ mysql -u root partuza < /path/to/partuza/partuza.sql

partuzaの設定

コンフィグの設定をします。色々お好み設定が出来るみたいなので、慣れたらいじってみるといいです。

# vi /path/to/partuza/html/config.php

下記の項目を変更

'language' => 'ja_JP',
'cache_time' =>0, # 開発時にはキャッシュしたくない

shindigの設定

# vi /path/to/shindig/config/container.js

下記の項目を変更

"proxyUrl" : "http://shindig/gadgets/proxy?refresh=%refresh%&url=%url%",
"jsonProxyUrl" : "http://shindig/gadgets/makeRequest
"urlTemplate" : "http://partuza/gadgets/profile?{var}", // "profile"のほう
"urlTemplate" : "http://partuza/gadgets/canvas?{var}", // "canvas"のほう

shindigからpartuzaのサービスを参照するように設定する

# vi /path/to/shindig/php/config/local.php
 'PartuzaService',
    'activity_service' => 'PartuzaService',
    'app_data_service' => 'PartuzaService',
    'oauth_lookup_service' => 'PartuzaOAuthLookupService',
    'extension_class_paths' => '/path/to/partuza/Shindig'
);
?>

余談

以上で、http://partuza/からsnsが使えるようになると思います。
んが、アプリケーション登録時にはまった点をいくつか記載しておきます。

ローカルvmwareに作ったアプリが登録出来ない。

先に設定したApacheのVirtualHostにおいて

http://gadgets/test1/test.xml

のようなホストを作成して検証しようかと思ったのですが、これだとhost名のチェックではじかれてしまうようです。なので

http://gadgets.koshikawa.net/test1/test.xml

のように、それっぽいURLへ変更したら問題なく登録できました。(/etc/hostsにgadgets.koshikawa.netを登録してます)

shindigのbug?

OpenSocialコンテナ(つまりshindig)が返すJSの中の「&&」がたまに「&」になってしまう不都合。いろんな設定を確認したりshindigのソースを読みまくったのですがこれはshindigのbugではないかと結論付け、誰か差分とかコミットしていないかとsvn upしてみたなおりました。

r764736 | chabotc | 2009-04-14 20:03:02 +0900 (火, 14  4月 2009) | 1 line
変更のあったパス:
   M /incubator/shindig/trunk/php/src/gadgets/render/GadgetHtmlRenderer.php

improper escaping of &'s in javascript assigned by nodeValue caused &&'s to become &'s and break all our if's :)

まさにはまっていたバグを直してくれた人が居ました。良かったです。まぁ、shindigのソース読みは無駄な時間ではなかったと言い聞かせたいと思います。

今後

ローカル環境でOpenSocialアプリの開発が出来るようになったので、開発時に気づいたことやはまったことをエントリーして行こうと思います。