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は現在も絶賛開発中のため、毎週マイナーバージョンアップが入っています。
このため、nvmやnaveといった、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 モリフジ