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をダウンロードします。

$ 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]

node.jsのソースコードの展開

$
$ 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

以下のように、node-v0.10.32というディレクトリに展開されます。

[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

node.jsのコンパイル

順序としては、おなじみの、./configure、make、make installです。

[user@centos65 node-v0.10.32]$ ./configure
[user@centos65 node-v0.10.32]$ make
[user@centos65 node-v0.10.32]$ sudo make install

注意点としては、make installで、ファイルをコピーしますが、コピー先の権限が必要ですのでsudoしています。

[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

node.js導入の確認

インストールが終わったら、コマンドを実行して確認します。

[user@centos65 node-v0.10.32]$ node -v
v0.10.32

あと、npmというパッケージマネージャーも導入されいます。

[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>npm@1.4.28 /usr/local/lib/node_modules/npm
[user@centos65 node-v0.10.32]$

次にnode.jsの実行と終了ですが、nodeコマンドを実行するとインタプリターが表示されますが、終了の方法は、.exitもしくは、Ctrl+Dとなります。

[user@centos65 node-v0.10.32]$ node
></p>

<blockquote>
  <p>.exit
[user@centos65 node-v0.10.32]$

expressの導入

node.js環境で広く使われているWebアプリケーションフレームワークの「Express」を導入します。

[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
express-generator@4.9.0 /usr/local/lib/node</em>modules/express-generator
├── mkdirp@0.5.0 (minimist@0.0.8)
└── commander@1.3.2 (keypress@0.1.0)
[user@centos65 ~]$

以前は、「npm install express」という表記、つまり、-generatorなしで導入できたようです。
少し古めのblog記事などを参照する際は、気をつけておいた方が良いと思います。

上記、npm installが完了すると、以下のようにexpressコマンドがインストールされます。

[user@centos65 ~]$ which express
/usr/local/bin/express
[user@centos65 ~]$

expressを使ってみる

ここでは、sampleアプリケーションをexpressを使って作成してみます。

sampleアプリケーションの作成

[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

sampleディレクトリが作成され、sampleアプリケーションに必要なファイルが自動的に生成されています。

[user@centos65 ~]$ cd sample/
[user@centos65 sample]$ ls
app.js  bin  package.json  public  routes  views

また、sample作成時に表示されている通り、依存関係を確認し必要モジュールをインストールするため、npm installを実行します。

[user@centos65 sample]$ npm install
debug@2.0.0 node_modules/debug
└── ms@0.6.2</p>

<p>cookie-parser@1.3.3 node_modules/cookie-parser
├── cookie-signature@1.0.5
└── cookie@0.1.2</p>

<p>morgan@1.3.1 node_modules/morgan
├── basic-auth@1.0.0
├── depd@0.4.5
└── on-finished@2.1.0 (ee-first@1.0.5)</p>

<p>serve-favicon@2.1.5 node_modules/serve-favicon
├── ms@0.6.2
├── fresh@0.2.4
└── etag@1.4.0 (crc@3.0.0)</p>

<p>body-parser@1.8.4 node_modules/body-parser
├── bytes@1.0.0
├── media-typer@0.3.0
├── raw-body@1.3.0
├── depd@0.4.5
├── qs@2.2.4
├── iconv-lite@0.4.4
├── on-finished@2.1.0 (ee-first@1.0.5)
└── type-is@1.5.1 (mime-types@2.0.1)</p>

<p>express@4.9.5 node_modules/express
├── fresh@0.2.4
├── utils-merge@1.0.0
├── merge-descriptors@0.0.2
├── cookie@0.1.2
├── escape-html@1.0.1
├── range-parser@1.0.2
├── cookie-signature@1.0.5
├── media-typer@0.3.0
├── vary@1.0.0
├── parseurl@1.3.0
├── methods@1.1.0
├── serve-static@1.6.3
├── finalhandler@0.2.0
├── path-to-regexp@0.1.3
├── depd@0.4.5
├── on-finished@2.1.0 (ee-first@1.0.5)
├── qs@2.2.4
├── etag@1.4.0 (crc@3.0.0)
├── proxy-addr@1.0.3 (forwarded@0.1.0, ipaddr.js@0.1.3)
├── accepts@1.1.0 (negotiator@0.4.7, mime-types@2.0.1)
├── type-is@1.5.1 (mime-types@2.0.1)
└── send@0.9.3 (destroy@1.0.3, ms@0.6.2, mime@1.2.11)</p>

<p>jade@1.6.0 node_modules/jade
├── character-parser@1.2.0
├── void-elements@1.0.0
├── commander@2.1.0
├── mkdirp@0.5.0 (minimist@0.0.8)
├── transformers@2.1.0 (promise@2.0.0, css@1.0.8, uglify-js@2.2.5)
├── constantinople@2.0.1 (uglify-js@2.4.15)
├── with@3.0.1 (uglify-js@2.4.15)
└── monocle@1.1.51 (readdirp@0.2.5)
[user@centos65 sample]$

次に、表示されていた通り、sampleアプリケーションを起動します。

[user@centos65 sample]$ DEBUG=sample ./bin/www
  sample Express server listening on port 3000 +0ms</p>

<p>

iptablesの設定追加

どうやら、port 3000で起動するようですので、外部からのアクセスを許可するため、iptablesの設定が必要です。
別のシェルからでも良いですし、一旦、sampleをCtrl+Cで停止してシェルに戻ってからでも良いので、/etc/sysconfig/iptablesを編集します。

^C[user@centos65 sample]$
[user@centos65 sample]$ sudo vi /etc/sysconfig/iptables

22番ポートが許可されている下に、3000番ポートへのアクセスを許可する設定を追加します。

-A INPUT -m state --state NEW -m tcp -p tcp --dport 3000 -j ACCEPT

10行目の「–dport 22」とある行にカーソルを移動させ、y``y``pとキー入力します。
すると、同じ行が追加されます。次に追加した行の22の最初の2の部分にカーソルを移動し、x``xとキー入力します。
次に、iとキー入力し、画面下に、「– INSEET –」と表示されていることを確認して、3``0``0``0と入力します。
編集した内容に問題ないことを確認し、キーボードのescキーを押します。画面下の「– INSEET –」という表記が消えることを確認します。
次に、:``w``qとキー入力します。画面下に「:wq」と表示されていることを確認して、エンターキーを押します。
これで、編集が終わり、保存されました。

iptablesの再起動

設定を追加しましたので、iptablesを再起動して有効にします。

[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]$

CentOSのeth0が掴んでいるIPアドレスを確認します。

[user@centos65 sample]$ ifconfig

ここで出力される、eth0の「inet addr:」に記載されているIPアドレスを確認します。
例)inet addr:192.168.5.75

expressのsampleアプリケーションへのアクセスを確認

一旦止めていた場合は、以下のようにsampleアプリケーションを起動します。

[user@centos65 sample]$ DEBUG=sample ./bin/www
  sample Express server listening on port 3000 +0ms</p>

<p>

この状態で、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]

MacBook Airで、Catalystスイッチの設定を。

昨日、久しぶりにCiscoのCatalystスイッチの設定をする必要に迫られた。
Windowsで使っていた、USB-Serial変換(ELECOM USB to シリアルケーブル UC-SGT)があったので、それをMacで使えないモノか、と。

Googleで検索すると、まとめページがあって、Prolific社のチップを使っている事、Prolific社のサイトからMac用のドライバがダウンロードできる事が判明。

サイトまとめられた方> Thanks!!

Mac でシリアルコンソールを利用する方法

早速、PL-2303 Mac OS X driver v1.5.1をダウンロードして、インストール。
readme.txtによれば、/System/Library/Extensions/に、ProlificUsbSerial.kextというカーネルエクステンションがインストールされる模様。

PDFのマニュアルもついていて、利用方法としては、/dev/に、tty.usbserial*というデバイスファイルが出てくるとあるけれども、出てこない…。

 ◇

もう少し、Google先生で検索を続けると、Ciscoのコミュニティサイトで、”Serial”というツールの紹介コメントを発見。
https://supportforums.cisco.com/discussion/12071321/how-use-mac-connecting-through-console-port

7日間のデモバージョンがあるということで、こちらをダウンロードしたところ、
無事使えるようになりました。

Serial
URLは、こちら

Mac App Storeで購入すると、¥3,000なので、購入するかどうかは、迷い中。

アジャイルデータサイエンスをやってみる – その2

アジャイルデータサイエンスをやってみる – その2
p.55 3.7.1 MongoDBのインストールでは、チュートリアルまで済ませておいてとありましたので、
まずは、チュートリアルの実施までやっていきます。

MongoDBのインストール

インストールマニュアルを元にインストールを進めて行きます。
http://docs.mongodb.org/manual/tutorial/install-mongodb-on-os-x/

ちと、構えてましたが、Homebrewで導入できると記載がありました。

$ brew install mongodb
==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/mongodb-2.6.4_1.mavericks.bottle.1.tar.gz
######################################################################## 100.0%
==> Pouring mongodb-2.6.4_1.mavericks.bottle.1.tar.gz
==> Caveats
To have launchd start mongodb at login:
    ln -sfv /usr/local/opt/mongodb/*.plist ~/Library/LaunchAgents
Then to load mongodb now:
    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist
Or, if you don't want/need launchctl, you can just run:
    mongod --config /usr/local/etc/mongod.conf
==> Summary
  /usr/local/Cellar/mongodb/2.6.4_1: 17 files, 320M
$

インストールされた場所は、「/usr/local/bin/mongod」となります。
上記、インストール時のログからも、デーモンとして起動する為の設定も合わせて準備されている感じです。
起動時に実行させるには、「ln -sfv /usr/local/opt/mongodb/*.plist ~/Library/LaunchAgents」せよ
ということですね。
今回は、とりあえず実行できれば良いので、この設定はしないで進めます。

次にマニュアル通り進めるべく、、、
データディレクトリを作成します。
マニュアルでは、/data/dbを作成せよとありますので、sudoで/dataを作成して、
その中に、dbディレクトリを作成、パーミッションのユーザに合わせました。

ちなみに、このデータディレクトリがないと、mongod実行時に、以下のようなエラーとなります。

*********************************************************************
 ERROR: dbpath (/data/db) does not exist.
 Create this directory or give existing directory in --dbpath.
 See http://dochub.mongodb.org/core/startingandstoppingmongo
*********************************************************************

データディレクトリの作成、パーミッションの設定が完了したら、mongodを起動してみます。

$ mongod
mongod --help for help and startup options
2014-09-02T20:29:15.811+0900 [initandlisten] MongoDB starting : pid=13619 port=27017 dbpath=/data/db 64-bit host=MacBook-Air.local
2014-09-02T20:29:15.812+0900 [initandlisten] 
2014-09-02T20:29:15.812+0900 [initandlisten] ** WARNING: soft rlimits too low. Number of files is 256, should be at least 1000
2014-09-02T20:29:15.812+0900 [initandlisten] db version v2.6.4
2014-09-02T20:29:15.813+0900 [initandlisten] git version: nogitversion
2014-09-02T20:29:15.813+0900 [initandlisten] build info: Darwin minimavericks.local 13.3.0 Darwin Kernel Version 13.3.0: Tue Jun  3 21:27:35 PDT 2014; root:xnu-2422.110.17~1/RELEASE_X86_64 x86_64 BOOST_LIB_VERSION=1_49
2014-09-02T20:29:15.813+0900 [initandlisten] allocator: tcmalloc
2014-09-02T20:29:15.813+0900 [initandlisten] options: {}
2014-09-02T20:29:15.814+0900 [initandlisten] journal dir=/data/db/journal
2014-09-02T20:29:15.814+0900 [initandlisten] recover : no journal files present, no recovery needed
2014-09-02T20:29:16.159+0900 [initandlisten] waiting for connections on port 27017

終了するには、Control+cです。

^C2014-09-02T20:31:56.845+0900 [signalProcessingThread] got signal 2 (Interrupt: 2), will terminate after current cmd ends
2014-09-02T20:31:56.845+0900 [signalProcessingThread] now exiting
2014-09-02T20:31:56.845+0900 [signalProcessingThread] dbexit: 
2014-09-02T20:31:56.846+0900 [signalProcessingThread] shutdown: going to close listening sockets...
2014-09-02T20:31:56.846+0900 [signalProcessingThread] closing listening socket: 7
2014-09-02T20:31:56.846+0900 [signalProcessingThread] closing listening socket: 11
2014-09-02T20:31:56.846+0900 [signalProcessingThread] removing socket file: /tmp/mongodb-27017.sock
2014-09-02T20:31:56.849+0900 [signalProcessingThread] shutdown: going to flush diaglog...
2014-09-02T20:31:56.849+0900 [signalProcessingThread] shutdown: going to close sockets...
2014-09-02T20:31:56.850+0900 [signalProcessingThread] shutdown: waiting for fs preallocator...
2014-09-02T20:31:56.850+0900 [signalProcessingThread] shutdown: lock for final commit...
2014-09-02T20:31:56.850+0900 [signalProcessingThread] shutdown: final commit...
2014-09-02T20:31:56.852+0900 [signalProcessingThread] shutdown: closing all files...
2014-09-02T20:31:56.852+0900 [signalProcessingThread] closeAllFiles() finished
2014-09-02T20:31:56.852+0900 [signalProcessingThread] journalCleanup...
2014-09-02T20:31:56.852+0900 [signalProcessingThread] removeJournalFiles
2014-09-02T20:31:56.852+0900 [signalProcessingThread] shutdown: removing fs lock...
2014-09-02T20:31:56.852+0900 [signalProcessingThread] dbexit: really exiting now
$ 

MongoDBのチュートリアル

マニュアルのGetting Started with MongoDBを進めて行きます。
http://docs.mongodb.org/manual/tutorial/getting-started/

とりあえず、今日はここまで。。
続きは明日以降で。

Command Line Developer Toolsのインストール

Homebrewのインストールのため、Command Line Developer Toolsをインストールする。

※Homebrewのインストールについては、詳細が以下に記載されている。
https://github.com/Homebrew/homebrew/wiki/Installation

$ xcode-select --install
xcode-select: note: install requested for command line developer tools

xcode-selectコマンドを–installオプションで実行すると、Install Command Line Developer Toolsというインストーラが起動され、以下のようにウィンドウが表示されます。

Xcode select install

“インストール”ボタンをクリックすると、Command Line Tools使用許諾契約の画面が出てきます。
“同意する”をクリックすると、ソフトウェアのダウンロードが始まります。
ダウンロードが終わると、インストールが始まります。ツールをインストールします。

以下のディレクトリにインストールされます。

/Library/Developer/CommandLineTools

OmniFocus使い始めた

iPad版、iPhone版を以前使っていたけど、MacBook Airを使うようになったので、
かなり高額だけど、OmniFocusを買ってみた。

PC上では、テキストエディタで整理することが多かったんだけど、同じような操作感(例えば、エンターキーで改行して次のエントリーを入力するとか)で、
どんどんアウトプットできる感じです。いいです。

多機能なので、使える部分から使っていく方針で。

OmniFocus 1.9.4 (¥6,900)App
カテゴリ: 仕事効率化, ビジネス
販売元: The Omni Group – The Omni Group(サイズ: 15 MB)