引用元(勉強の為に引用させて頂きました。):
http://uguisu.skr.jp/Windows/node.html
[root権限なしでNode.js、MongoDBをインストールする方法]
さくらインターネットなどroot権限なしのレンタルサーバーで node.jsをインストールする方法を紹介します。
root権限なしのFreeBSD環境では「libexecinfo」というライブラリのインストールで苦労している人が多いと思います。
「64bit」の環境に「libexecinfo」のソースコードに修正が必要でした。パッチも合わせて公開しています。
スポンサードリンク
「.cshrc」 に次のように記載する
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 をインストールする
「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/ |
※1 パッチを当てているのは、次のようなエラーが発生するためです。
パッチは、ここに置いておきます。
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権限がなく使えないので、手動でコピーしています。
Node.js を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 |
※2 先ほどの「execinfo」を参照・リンクするために「-I」「-L」オプションを追加します。
1
2
3
4
5
6
7
8
9
10
11
| ['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追記)
スポンサードリンク
mongoDB
SConsは、Pythonによって実装されたソフトウェア構築ツール(Makeの代替ビルドツール )です。
他のソフトウェアに組み込むためのモジュールをつくる機能を持っています。
MongoDBではSconsを利用するので、まずはSconsをインストールします。
ファイルのダウンロード先
次の手順で構築します。
$ 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を使ってroot権限なしでモジュールをインストール
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 |
express のインストール方法
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 のインストール方法
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 |
コメント:
個人的には、MongoDBよりCassandra(NoSQL)を広くお勧めしております。
MongoDBは、まだまだセキュリティに問題が多く、顧客情報を世界中に漏えいしてばらしてしまう可能性が高いです。その点、Cassandraは安全性が高いです。
対応スピードもMongoDBは遅いですが、Cassandraは素早いです。(ベンチマーク等の情報によります。)
■もう二度と、絶対にMongoDBを使うべきじゃない理由
https://fa-works.com/blog/why-you-should-never-ever-ever-use-mongodb■MongoDBが適さないケース
http://d.hatena.ne.jp/hiroppon/20130520/1369017430
0 コメント:
コメントを投稿