Home>Tech blog>ニフティクラウドで次世代LAMP仕様のパッケージを作る

2011/12/19

ニフティクラウドで次世代LAMP仕様のパッケージを作る

こんにちは モリフジです。

次世代のLAMPと名高い Node.js + MongoDB に加え、最近の開発に必要と思われるもの一式を積み込んだパブリックイメージを作成しました。
インストールしたものと作業手順を記載しておきます。

個人的な趣味としてはユーザを作成して、/home/morifuji/の下に~/usr/local/とかにどんどん入れていくというのが好きなんですが、今回は誰が使うかわからない、ということもあり/root/の下に設定などを、/usr/localに各種アプリをインストールしていきます。
※ 個人的にはオペレーション上・セキュリティ上の理由でlinuxの作業をする際にrootでの作業はお勧めしません。参考→Ubuntu Tips/その他/suとsudoについて

1. git

なにはなくともgitを入れます。
最近のプロダクトはgitで管理され、github上にアップされているものが非常に多いです。
今回インストールするNodeもMongoDBもgit上にコードはアップされています。

おそらく、NodeとMongoDBを利用したアプリの開発を行う際にもgitを使われることが多いと思いますのでインストールをしておきます。
gitは標準のリポジトリに無いので、次のファイル(/etc/yum.repos.d/CentOS-Base.repo )に下記の設定を追加します

[dag]
name=Dag RPM Repository for Redhat EL5
baseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/dag
gpgcheck=1
enabled=1
gpgkey=http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt

その後、下記のコマンドを実行してgitを取得します。

# yum install git

2. Node.js

Nodeは現在も絶賛開発中のため、毎週マイナーバージョンアップが入っています。
このため、nvmnaveといった、Rubyでいうところのrvm相当のものを使うことをお勧めします。
どちらを取るかは好き好きだとは思いますが、私はnvmを利用しています。
(githubのfork数やwatch数で選んだりすることが多く、nvmは454watches/50forks、naveは206watches/16forksです)

2.1 事前準備

標準のCentOSではC++のコンパイラもopensslも付いて来ません。
ですので、まずそれらをインストールします。

# yum install -y gcc-g++
# yum install -y openssl-devel

2.2 nvm

nvmのインストールは複数方法があるのですが、今回は最初にgitを入れていることもありgithubから落としてきます。
nvmは指定したディレクトリ内に各バージョンのソースコード、コンパイル済みコードを保持し、それらを環境変数で変更してくれ、気に入らなければ、そのディレクトリごと削除し、環境変数をクリーンにすれば、何もなかった事にできます。

# git clone git://github.com/creationix/nvm.git ~/.nvm // 以後、~/.nvm内に各バージョンのコードがインストールされていきます
# . ~/.nvm/nvm.sh
# nvm

Node Version Manager

Usage:
    nvm help                    Show this message
    nvm install <version>       Download and install a <version>
    nvm uninstall <version>     Uninstall a version
    nvm use <version>           Modify PATH to use <version>
    nvm run <version> [<args>]  Run <version> with <args> as arguments
    nvm ls                      List installed versions
    nvm ls <version>            List versions matching a given description
    nvm deactivate              Undo effects of NVM on current shell
    nvm alias [<pattern>]       Show all aliases beginning with <pattern>
    nvm alias <name> <version>  Set an alias named <name> pointing to <version>
    nvm unalias <name>          Deletes the alias named <name>
    nvm copy-packages <version> Install global NPM packages contained in <version> to current version

Example:
    nvm install v0.4.12         Install a specific version number
    nvm use 0.2                 Use the latest available 0.2.x release
    nvm run 0.4.12 myApp.js     Run myApp.js using node v0.4.12
    nvm alias default 0.4       Auto use the latest installed v0.4.x version

これで、nvmコマンドを利用することができます。
毎回 nvm.shを読むのは嫌なので、.bashrcに下記のように追加しておきます。
また、nvmを読み込んだら自動的に最新のnodeのバージョンを利用したいので、その設定も追加します(latestは後述)。

# nvm
if [ -f ~/.nvm/nvm.sh ]; then
        . ~/.nvm/nvm.sh
        nvm use latest
fi

2.3 nodeのインストール

いよいよNodeのインストールですが、ここまでnvmが入っていれば、殆どの場合、特に困ることは無いと思います(困るのは、nodeのリポジトリ構成が変わったり、zipが古いとか言い出したり、curlが変だよ、って言い出したりするときです)。

# nvm install v0.6.5
(略)
Waf: Leaving directory `/root/.nvm/src/node-v0.6.5/out'
'install' finished successfully (0.410s)
Now using node v0.6.5
/root/.nvm/v0.6.5/bin/npm

nvmでインストールをすると自動的にnpmというperlのCPAN、RのCRAN、phpのpearのようなものをインストールしてくれます。

2.4 nodeを利用する

意気揚々とnodeとか打ち込んでもコンソールからは冷たく「-bash: node: command not found」とか言われると思います。
nvmを利用して、「このバージョンを使いますよ!」という宣言を剃る必要があります。

# nvm ls
v0.6.5
current: 	v0.6.5
# nvm use v0.6.5

毎回、「nvm use v0.6.5」というのは煩わしいので、先ほどのbashrcに記述したいのですが、前述したとおり、nodeは更新が激しく、これを直接設定ファイルに書くのは賢明ではありません。
そこで、nvmが提供しているalias機能を利用します。

# nvm alias latest v0.6.5
latest -> v0.6.5
# nvm ls
v0.6.5
current: 	v0.6.5
latest -> v0.6.5
# nvm use latest
Now using node v0.6.5

こうしておくことで、インストールの際にlatestを変更するだけでbashrcを弄る必要はなくなります。
(少し前は自動でlatestが設定されたと思うですが)

3. MongoDB

MongoDBはbinaryを用意してくれているので、それを利用すれば非常に簡単に利用することができます。
こちらから、binaryをダウンロードしてきます

# wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.0.2.tgz
# tar xf mongodb-linux-x86_64-2.0.2.tgz
# mv mongodb-linux-x86_64-2.0.2.tgz /usr/local/
# alternatives --install /usr/local/mongodb mongodb /usr/local/mongodb-linux-x86_64-2.0.2 1
# alternatives --install /usr/local/bin/mongo mongodb-mongo /usr/local/mongodb/bin/mongo
# alternatives --install /usr/local/bin/mongos mongodb-mongos /usr/local/mongodb/bin/mongos
# alternatives --install /usr/local/bin/mongod mongodb-mongod /usr/local/mongodb/bin/mongod

割りとフランクに叩きたいケースが発生しそうなbinだけlinkを貼っておきます。
あとは、mongoを好きなように使えます。
groupaddでmongoを足しておくのはお勧めしておきます。

4. nginx

ダウンロードはこちらからできます。

4.1 pcre

nginxはパスの正規表現のところでpcre(Perl Compatible Regular Expressions)を必要とします。(この機能はwithoutすることも可能です)
事前にダウンロードして、展開だけしておきます(tar を解凍するだけでいいです)

# wget http://downloads.sourceforge.net/project/pcre/pcre/8.20/pcre-8.20.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fpcre%2Ffiles%2Fpcre%2F8.20%2F&ts=1322762359&use_mirror=jaist
# tar pcre-8.20.tar.gz

4.2 nginxのインストール

# wget http://nginx.org/download/nginx-1.1.10.tar.gz
# cd nginx-1.1.10
# ./configure --prefix=/usr/local/nginx-1.1.10 --with-pcre=../pcre-8.20
# make
# make install

mongodbと同じようにlinkを貼っておきます。

# alternatives --install /usr/local/nginx nginx /usr/local/nginx-1.1.10/ 1

5. 後片付け

各種のtar.gzや中間展開ファイルを捨てたらおしまいです。

まとめると2011年12月16日 11:30時点のVMイメージとしては

  • git 1.7.6.4
  • node 0.6.5
  • mongodb 2.0.2
  • pcre 8.20
  • nginx 1.1.10

が、入っています!

パブリックイメージの利用方法

ニフティクラウドコントロールパネルの左側ServiceMenuから、
「イメージ」→「カスタマイズ-パブリック」をクリックしてください。

パブリックイメージとして使用できるOSの一覧が表示されます。

使用するイメージの左側にチェックを入れてください。

パブリックイメージ一覧の上部にある「チェックしたイメージの操作」の
項目リストを開いて「サーバーを作成」に変更してから「実行」をクリックしてください。

あとは、通常のサーバー作成と同じ手順で設定を行います。

詳細はこちらはご覧ください。

ニフティクラウドヘルプ
イメージ:カスタマイズ:パブリック:サーバーの作成
イメージ:スタンダード

# npm xmas



This post was written by モリフジ

Recent Entry

Hot Tags

Node datamining mongodb cloud nginx sfstudy titanium Design Analytics data mining excel R agile git

twitter