EC2 に Node.js のインストール【Node.js, MongoDB インストールから Calipso インストールまで】

EC2 に Calipso のインストール手順を残すついでに Node.js, MongoDB のインストールも残しておきます。



1. サーバ設定 

ロケールを日本時間に設定

$ sudo ln -f /usr/share/zoneinfo/Japan /etc/localtime

アプリケーションディレクトリのユーザ権限をhiguchiに譲渡

$ sudo su -
# chown -R higuchi:higuchi /usr/local/
$ ls -l /usr/ | grep local
drwxr-xr-x 12 higuchi higuchi 4096 Nov 30 10:48 local

2. node.jsのインストール

node.jsのダウンロード

$ wget http://nodejs.org/dist/node-v0.4.3.tar.gz

展開

$ tar zxf node-v0.4.3.tar.gz

展開したディレクトリに移動

$ cd node-v0.4.3

configureしてみるがライブラリが足りない

$ ./configure
Checking for program g++ or c++ : not found
Checking for program icpc : not found
Checking for program c++ : not found
/usr/local/src/node-v0.4.3/wscript:232: error: could not configure a cxx compiler!

ライブラリgcc-c++のインストール

# yum install gcc-c++

ライブラリopenssl-develのインストール

# yum install openssl-devel

sudo抜けて再度configureしてみる

# exit
$ ./configure

大丈夫そうなのでmake、インストール

$ make
$ make install

起動確認

$ node -v
v0.4.3

JSをコマンドラインで実行してみる

$ node
> a = { a:1, b:2, c:3 }
{ a: 1, b: 2, c: 3 }
> a
{ a: 1, b: 2, c: 3 }
> a,a
{ a: 1, b: 2, c: 3 }
> a:a
{ a: 1, b: 2, c: 3 }
> a.a
1

Webサーバをつくってみる

$ vi example.js

// start
var http = require('http');

http.createServer(function (request, response) {
response.writeHead(200, {'Content-Type': 'text/plain'});
response.end('Hello World\n');
}).listen(8124);

console.log('Server running at http://127.0.0.1:8124/');
// end

実行

$ node example.js
[1] 2304
Server running at http://127.0.0.1:8124/

ブラウザで確認する。
http://自サーバのIP:8124/

#ちなみに、EC2はデフォルト8124ポートを塞いでいるので解除しておく。

PHP+MongoDB MAX値を取得する

メモ。

SQLで、たとえばpointが最大のuserを取得したい場合は、

SELECT * FROM user_collection WHERE status = 0 ORDER BY point DESC LIMIT 1;

のようになりますが、これをPHP + MongoDBでやる場合は、

$request = $collection_requests->find( array( 'status' => 0 ) );
$request->sort( array( 'point' => -1 ) );
$request->limit(1);
$request->next();
$request = $request->current();

となるみたいです。
もっとスマートなやり方があったら教えて下さい。

Androidのバックキー(戻るボタン)検出方法

Phonegap でもちゃんとバックキーイベントも取得できるようです。


公式のAPI Docs

// アプリケーションが立ち上がったら処理開始
function init() {
document.addEventListener("deviceready", onDeviceReady, false);
}

// init()のdevicereadyが成功した場合のコールバック関数
function onDeviceReady(){
// phonegap 0.9.5 だとこっち
document.addEventListener("backbutton", backKeyDown, true);

// phonegap 0.9.4 だとこっち
document.addEventListener("backKeyDown", backKeyDown, true);
}

// 戻るボタンが押された場合のコールバック関数
function backKeyDown() {
alert('戻るボタン!');
}

RockMongo のインストール

とりあえず設置するだけ。

ファイルのDL

$ sudo wget http://rock-php.googlecode.com/files/rockmongo-v1.1.0.zip

アーカイブファイルの解凍

$ sudo unzip rockmongo-v1.1.0.zip

MongoDBがデフォルト設定の状態で立ち上がっていればこのまま設置したURLにアクセスすればOK。
http://localhost/rockmongo/index.php

デフォルトのログインは以下。
UserName:admin
Password:admin

以上

PHP + MongoDB

Amazon EC2 Micro Instance上につくったLAMP(Linux + Apache + MySQL + PHP)環境に加えてMongoDBを追加したメモ。

1.ドライバーのインストール

$ sudo yum -y install php-pear php5-cli php-devel

$ sudo /usr/bin/pecl install mongo

2.PHPのエクステンションに組み込む

$ sudo vi /etc/php.ini

以下を追記

extension=mongo.so

3.Apacheの再起動

$ sudo /sbin/service httpd restart

以上。

Amazon EC2 マイクロインスタンスにLAMP環境(UTF-8)をつくる

ただ次回に楽するためののめも。


1.apache, MySQL, PHP, PHPMySQLドライバのインストール

$ sudo yum -y install httpd php mysql mysql-server php-mysql

2.PHPの設定

$ sudo vi php.ini

以下をコメントアウトはずし変更する

mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = auto
mbstring.http_output = UTF-8
mbstring.encoding_translation = Off
mbstring.substitute_character = none;

3.MySQLの設定

$ sudo vi /etc/my.cnf

以下を追加する

default-character-set = utf8
default-character-set = utf8[mysql.server]

4.起動設定

$ sudo /sbin/chkconfig httpd on
$ sudo /sbin/chkconfig mysqld on

5.起動

$ sudo /sbin/service httpd start
$ sudo /sbin/service mysqld start

6.MySQLのRootユーザPW設定

$ sudo mysqladmin -u root password 'パスワード'

以上。