CentOS 6.5でのnode.js環境構築 – その1
環境説明
今回は、MacOS Merveric上のVMware Fusionで、CentOS 6.5をminimalインストールした環境に環境構築していく。
ただのお試しであれば、MacOS上でやっても良かったのだが、今後の汎用性を考えてCentOSを選択。
以下、手順です。
CentOS 6.5 minimalインストール
注意点
インストール時の注意としては、ホスト名を指定する画面で、ネットワーク設定を行っておくことです。
デフォルトでは、eth0が起動時にONになっていないため、何も設定変更せずインストールを終わらせてしまうと、
後から、eth0のインターフェース設定を行う必要が出てきます。(ま、後からでも良いのですが)
CentOS 6.5インストール後の作業
ユーザーの追加
インストーラでは、ユーザ追加の画面がありませんので、最初はrootでログインして、作業用ユーザーを作成しておきます。
wgetのインストール
これから何かと活躍するであろう、wgetをまずは、yumでインストールしておきます。
Developer Toolのインストール
ソースからコンパイルする際に必要となるgccなどをインストールします。昔は必要なパッケージだけ導入するといったことをしてましたが、最近は、カテゴリを指定して一括で導入することが一般的なようですので、それに倣います。
node.jsの導入
node.jsのソースコードを入手
現時点で、最新の0.10.32をダウンロードします。
[bash]
$ wget http://nodejs.org/dist/v0.10.32/node-v0.10.32.tar.gz
–2014-09-28 06:46:33– http://nodejs.org/dist/v0.10.32/node-v0.10.32.tar.gz
nodejs.org をDNSに問いあわせています… 165.225.133.150
nodejs.org|165.225.133.150|:80 に接続しています… 接続しました。
HTTP による接続要求を送信しました、応答を待っています… 200 OK
長さ: 13585240 (13M) [application/octet-stream]
`node-v0.10.32.tar.gz’ に保存中</p>
<p>100%[======================================>] 13,585,240 918K/s 時間 17s </p>
<p>2014-09-28 06:46:51 (767 KB/s) – `node-v0.10.32.tar.gz’ へ保存完了 [13585240/13585240]
[/bash]
node.jsのソースコードの展開
[bash]
$
$ tar -zxvf node-v0.10.32.tar.gz
node-v0.10.32/
node-v0.10.32/ChangeLog
node-v0.10.32/src/
node-v0.10.32/src/node<em>buffer.cc
node-v0.10.32/src/macros.py
node-v0.10.32/src/node</em>internals.h
node-v0.10.32/src/req<em>wrap.h
node-v0.10.32/src/timer</em>wrap.cc</p>
<p> (以下、略)</p>
<p>$ ls
node-v0.10.32 node-v0.10.32.tar.gz
[/bash]
以下のように、node-v0.10.32というディレクトリに展開されます。
[bash]
[user@centos65 node-v0.10.32]$ cd node-v0.10.32
[user@centos65 node-v0.10.32]$ ls
AUTHORS ChangeLog README.md configure lib test
BSDmakefile LICENSE benchmark deps node.gyp tools
CONTRIBUTING.md Makefile common.gypi doc src vcbuild.bat
[/bash]
node.jsのコンパイル
順序としては、おなじみの、./configure、make、make installです。
[bash]
[user@centos65 node-v0.10.32]$ ./configure
[user@centos65 node-v0.10.32]$ make
[user@centos65 node-v0.10.32]$ sudo make install
[/bash]
注意点としては、make installで、ファイルをコピーしますが、コピー先の権限が必要ですのでsudoしています。
[bash]
[user@centos65 node-v0.10.32]$ sudo make install
[sudo] password for user:
make -C out BUILDTYPE=Release V=1
make[1]: ディレクトリ <code>/home/user/node-v0.10.32/out’ に入ります
make[1]:</code>all’ に対して行うべき事はありません.
make[1]: ディレクトリ `/home/user/node-v0.10.32/out’ から出ます
ln -fs out/Release/node node
/usr/bin/python tools/install.py install
installing /usr/local/bin/node
installing /usr/local/share/man/man1/node.1
installing /usr/local/lib/node<em>modules/npm/configure
installing /usr/local/lib/node</em>modules/npm/make.bat
installing /usr/local/lib/node<em>modules/npm/.travis.yml
installing /usr/local/lib/node</em>modules/npm/package.json
installing /usr/local/lib/node<em>modules/npm/CHANGELOG.md
(中略)
installing /usr/local/include/node/zconf.h
installing /usr/local/include/node/zlib.h
[/bash]
node.js導入の確認
インストールが終わったら、コマンドを実行して確認します。
[bash]
[user@centos65 node-v0.10.32]$ node -v
v0.10.32
[/bash]
あと、npmというパッケージマネージャーも導入されいます。
[bash]
[user@centos65 node-v0.10.32]$ npm</p>
<p>Usage: npm <command></p>
<p>where <command> is one of:
add-user, adduser, apihelp, author, bin, bugs, c, cache,
completion, config, ddp, dedupe, deprecate, docs, edit,
explore, faq, find, find-dupes, get, help, help-search,
home, i, info, init, install, isntall, issues, la, link,
list, ll, ln, login, ls, outdated, owner, pack, prefix,
prune, publish, r, rb, rebuild, remove, repo, restart, rm,
root, run-script, s, se, search, set, show, shrinkwrap,
star, stars, start, stop, submodule, t, tag, test, tst, un,
uninstall, unlink, unpublish, unstar, up, update, v,
version, view, whoami</p>
<p>npm <cmd> -h quick help on <cmd>
npm -l display full usage info
npm faq commonly asked questions
npm help <term> search for help on <term>
npm help npm involved overview</p>
<p>Specify configs in the ini-formatted file:
/home/user/.npmrc
or on the command line via: npm <command> –key value
Config info can be viewed via: npm help config</p>
<p>[email protected] /usr/local/lib/node_modules/npm
[user@centos65 node-v0.10.32]$
[/bash]
次にnode.jsの実行と終了ですが、nodeコマンドを実行するとインタプリターが表示されますが、終了の方法は、.exitもしくは、Ctrl+Dとなります。
[bash]
[user@centos65 node-v0.10.32]$ node
></p>
<blockquote>
<p>.exit
[user@centos65 node-v0.10.32]$
[/bash]
expressの導入
node.js環境で広く使われているWebアプリケーションフレームワークの「Express」を導入します。
[bash]
[user@centos65 ~]$ sudo /usr/local/bin/npm -g install express-generator
/usr/local/bin/express -> /usr/local/lib/node<em>modules/express-generator/bin/express
[email protected] /usr/local/lib/node</em>modules/express-generator
├── [email protected] ([email protected])
└── [email protected] ([email protected])
[user@centos65 ~]$
[/bash]
以前は、「npm install express」という表記、つまり、-generatorなしで導入できたようです。
少し古めのblog記事などを参照する際は、気をつけておいた方が良いと思います。
上記、npm installが完了すると、以下のようにexpressコマンドがインストールされます。
[bash]
[user@centos65 ~]$ which express
/usr/local/bin/express
[user@centos65 ~]$
[/bash]
expressを使ってみる
ここでは、sampleアプリケーションをexpressを使って作成してみます。
sampleアプリケーションの作成
[bash]
[user@centos65 ~]$ express sample</p>
<p>create : sample
create : sample/package.json
create : sample/app.js
create : sample/public
create : sample/public/javascripts
create : sample/public/images
create : sample/public/stylesheets
create : sample/public/stylesheets/style.css
create : sample/routes
create : sample/routes/index.js
create : sample/routes/users.js
create : sample/views
create : sample/views/index.jade
create : sample/views/layout.jade
create : sample/views/error.jade
create : sample/bin
create : sample/bin/www</p>
<p>install dependencies:
$ cd sample && npm install</p>
<p>run the app:
$ DEBUG=sample ./bin/www
[/bash]
sampleディレクトリが作成され、sampleアプリケーションに必要なファイルが自動的に生成されています。
[bash]
[user@centos65 ~]$ cd sample/
[user@centos65 sample]$ ls
app.js bin package.json public routes views
[/bash]
また、sample作成時に表示されている通り、依存関係を確認し必要モジュールをインストールするため、npm installを実行します。
[bash]
[user@centos65 sample]$ npm install
[email protected] node_modules/debug
└── [email protected]</p>
<p>[email protected] node_modules/cookie-parser
├── [email protected]
└── [email protected]</p>
<p>[email protected] node_modules/morgan
├── [email protected]
├── [email protected]
└── [email protected] ([email protected])</p>
<p>[email protected] node_modules/serve-favicon
├── [email protected]
├── [email protected]
└── [email protected] ([email protected])</p>
<p>[email protected] node_modules/body-parser
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected] ([email protected])
└── [email protected] ([email protected])</p>
<p>[email protected] node_modules/express
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected] ([email protected])
├── [email protected]
├── [email protected] ([email protected])
├── [email protected] ([email protected], [email protected])
├── [email protected] ([email protected], [email protected])
├── [email protected] ([email protected])
└── [email protected] ([email protected], [email protected], [email protected])</p>
<p>[email protected] node_modules/jade
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected] ([email protected])
├── [email protected] ([email protected], [email protected], [email protected])
├── [email protected] ([email protected])
├── [email protected] ([email protected])
└── [email protected] ([email protected])
[user@centos65 sample]$
[/bash]
次に、表示されていた通り、sampleアプリケーションを起動します。
[bash]
[user@centos65 sample]$ DEBUG=sample ./bin/www
sample Express server listening on port 3000 +0ms</p>
<p>[/bash]
iptablesの設定追加
どうやら、port 3000で起動するようですので、外部からのアクセスを許可するため、iptablesの設定が必要です。
別のシェルからでも良いですし、一旦、sampleをCtrl+Cで停止してシェルに戻ってからでも良いので、/etc/sysconfig/iptablesを編集します。
[bash]
^C[user@centos65 sample]$
[user@centos65 sample]$ sudo vi /etc/sysconfig/iptables
[/bash]
22番ポートが許可されている下に、3000番ポートへのアクセスを許可する設定を追加します。
[bash]
-A INPUT -m state –state NEW -m tcp -p tcp –dport 3000 -j ACCEPT
[/bash]
10行目の「–dport 22」とある行にカーソルを移動させ、y``y``p
とキー入力します。
すると、同じ行が追加されます。次に追加した行の22の最初の2
の部分にカーソルを移動し、x``x
とキー入力します。
次に、i
とキー入力し、画面下に、「– INSEET –」と表示されていることを確認して、3``0``0``0
と入力します。
編集した内容に問題ないことを確認し、キーボードのesc
キーを押します。画面下の「– INSEET –」という表記が消えることを確認します。
次に、:``w``q
とキー入力します。画面下に「:wq」と表示されていることを確認して、エンターキーを押します。
これで、編集が終わり、保存されました。
iptablesの再起動
設定を追加しましたので、iptablesを再起動して有効にします。
[bash]
[user@centos65 sample]$ sudo /etc/init.d/iptables restart
[sudo] password for user:
iptables: チェインをポリシー ACCEPT へ設定中filter [ OK ]
iptables: ファイアウォールルールを消去中: [ OK ]
iptables: モジュールを取り外し中: [ OK ]
iptables: ファイアウォールルールを適用中: [ OK ]
[user@centos65 sample]$
[/bash]
CentOSのeth0が掴んでいるIPアドレスを確認します。
[bash]
[user@centos65 sample]$ ifconfig
[/bash]
ここで出力される、eth0の「inet addr:」に記載されているIPアドレスを確認します。
例)inet addr:192.168.5.75
expressのsampleアプリケーションへのアクセスを確認
一旦止めていた場合は、以下のようにsampleアプリケーションを起動します。
[bash]
[user@centos65 sample]$ DEBUG=sample ./bin/www
sample Express server listening on port 3000 +0ms</p>
<p>[/bash]
この状態で、MacOS上のブラウザから先ほど確認したIPアドレス宛にリクエストを出します。
URLの例)http://192.168.5.75:3000
すると、味気ないですが、
「Express
Welcome to Express」
とブラウザ上に表示されます。
以上で、一通りの環境構築を完了します。
以下、参考になりそうな本の紹介
※まだ本人は読んでません…。
[tmkm-amazon]4797370904[/tmkm-amazon]
[tmkm-amazon]4873116732[/tmkm-amazon]
[tmkm-amazon]4774153206[/tmkm-amazon]