さくらインターネットなどroot権限なしのレンタルサーバーで node.jsをインストールする方法を紹介します。
root権限なしのFreeBSD環境では「libexecinfo」というライブラリのインストールで苦労している人が多いと思います。
「64bit」の環境に「libexecinfo」のソースコードに修正が必要でした。パッチも合わせて公開しています。
スポンサードリンク
setenv PATH ${PATH}:${HOME}/local/bin setenv NODE_PATH ${HOME}/local/lib/node_modules setenv NODE_MODULES ${HOME}/local/bin/node_modules setenv LD_LIBRARY_PATH setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:/home/ukyo/local/lib
その後、次のコマンドにより設定を反映させます。
$ source ~/.cshrc
「LD_LIBRARY_PATH」を正しく設定しないと次のようなエラーが出ます。
$ source ~/.cshrc LD_LIBRARY_PATH: Undefined variable. $ source ~/.cshrc Bad : modifier in $ (/).
「libexecinfo」とは、バックトレースのためのライブラリです。
node.js 、mongoDB のビルドに libexecinfo が必要になるため、最初にインストールします。
$ wget ftp://ftp.freebsd.org/pub/FreeBSD/distfiles/libexecinfo-1.1.tar.bz2 $ tar yxvf libexecinfo-1.1.tar.bz2 $ cd libexecinfo-1.1 $ patch -p0 < libexecinfo.patch ※1 $ setenv SRCCONF ~/usr/local/etc/src.conf $ make $ cp libexecinfo.* ~/local/lib/ $ cp execinfo.h ~/local/include/
パッチは、ここに置いておきます。
execinfo.c: In function 'backtrace_symbols': execinfo.c:81: error: lvalue required as left operand of assignment
81行目を次のように修正するだけで対応も可能です([感謝] 中里様 2014/03/06追記)
- (char **)cp = &(rval[size]); + cp = (char *)&(rval[size]);
また、「make install」はroot権限がなく使えないので、手動でコピーしています。
「http://nodejs.org/download/」からNode.jsの最新版を入手します。
$ tar zxvf node-v0.10.25.tar.gz $ cd node-v0.10.25 $ ./v8/src/platform-freebsd.cc を修正 ※1 $ ./deps/v8/tools/gyp/v8.gyp を修正 ※2 $ ./configure --prefix=$HOME/local $ gmake $ gmake install
gmake install 終了後に versionを確認してみましょう。
$ node --version v0.10.25
['OS=="freebsd"', { + 'include_dirs+': [ + '/home/アカウント名/local/include' + ], 'link_settings': { 'libraries': [ - '-L/usr/local/lib -lexecinfo', + '-L/usr/local/lib -L${HOME}/local/lib -lexecinfo', ]}, 'sources': [ '../../src/platform-freebsd.cc',
これは gyp のドキュメントで例を見つけられます。([感謝] 中里様 2014/03/06追記)
スポンサードリンク
SConsは、Pythonによって実装されたソフトウェア構築ツール(Makeの代替ビルドツール )です。
他のソフトウェアに組み込むためのモジュールをつくる機能を持っています。
MongoDBではSconsを利用するので、まずはSconsをインストールします。
ファイルのダウンロード先
http://www.scons.org/download.php
次の手順で構築します。
$ tar zxvf scons-2.3.0.tar.gz $ cd scons-2.3.0 $ python setup.py install --prefix=$HOME/local/
続いて mongodb をインストールします。
$ tar zxvf mongodb-src-r2.4.9.tar.gz $ cd mongodb-src-r2.4.9 $ scons all --libpath=$HOME/local/lib --cpppath=$HOME/local/include $ scons --prefix=$HOME/local/ install --libpath=$HOME/local/lib --cpppath=$HOME/local/include
バイナリが存在することを確認しましょう。
$ ls ~/local/bin/mo* mongo mongodump mongofiles mongooplog mongorestore mongosniff mongotop mongod mongoexport mongoimport mongoperf mongos mongostat
npmはパッケージマネージャです。Node.jsをインストールしたら一緒に入っています。
パッケージマネージャーとは、ソフトウェアのインストール、更新、削除を容易に行えるようにするプログラムです。
Rubyには「RubyGem」があり、Pythonには「pip」「easy_install」、Javaには「Maven」があります。
root権限なしで使うために、「~/.npmrc」を作成し次のように記載しましょう。
root = /home/アカウント名/local/lib/node_modules binroot = /home/アカウント名/local/bin manroot = /home/アカウント名/local/share/man
node.js が提供するHTTPサーバの機能はプロトコルに沿った低レベルなものになっています。
これらを簡単に定義して実装できるWebアプリケーションフレームワークの代表格が「Express」です。
インストール方法は次のように行います。
$ express -t ejs firstapp $ cd firstapp $ npm install express $ npm install ejs $ ls node_modules/ ejs express $ node app
HTMLテンプレートエンジンはJade、EJSやHaml.jsなどを、CSSテンプレートエンジンはStylusなどを選べます。
共通モジュールとしてインストールしたい場合は「-g」オプションを付けます。
$ npm install -g express $ npm install -g ejs $ ls ~/local/lib/node_modules/ ejs express npm
socket.io を使えば、双方向通信を実現を容易に実現できるようになります。
インストール方法は次のようになります。
$ npm install -g socket.io $ ls ~/local/bin/node_modules/ socket.io
前述していますが、「.cshrc」 に次のように記載する事を忘れないようにしてください。
setenv PATH ${PATH}:${HOME}/local/bin setenv NODE_PATH ${HOME}/local/bin/node_modules setenv NODE_MODULES ${HOME}/local/bin/node_modules
Node.js をインストール時に 「execinfo.h」が存在しないと、gmakeで次のようなエラーが発生します。
../deps/v8/src/platform-freebsd.cc:46:56: warning: execinfo.h: No such file or directory ../deps/v8/src/platform-freebsd.cc:302: error: 'backtrace' was not declared in this scope ../deps/v8/src/platform-freebsd.cc:304: error: 'backtrace_symbols' was not declared in this scope
スポンサードリンク
スポンサードリンク