CentOS 6.5でのnode.js環境構築 – その1

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]

作成者: naoya

IT業界(ネットワーク系)の管理職。2児のパパもやってます。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

%d人のブロガーが「いいね」をつけました。
Verified by MonsterInsights