node.jsを動作させる環境を作ったよ

CGIを今まで作ったことが無くて、でも何かを読んだときのおぼろげな記憶は残っていて、
それにはコマンド実行用のユーザを作って、そのユーザで動作させると書いてありました。
Apacheなどは最初からそうなってるとか見たような気がしないでもないですが。
とかまあ、早い話がnginx本の最初を読みながらnode.js実行用のユーザ作ったよって話です。何が早い話なのか……
環境:さくらのVPS 512 / Ubuntu 10.04.3 LTS 64bit

ユーザを作る

$ sudo mkdir -p /opt/node
$ sudo useradd --shell /usr/sbin/nologin --home /opt/node
$ sudo chown node:node /opt/node

最初にnodeユーザのためのディレクトリを作って、その後ユーザ追加、ディレクトリの所有者を変更、としています。
あとからログインしようと思ったら出来なくて、そりゃ当たり前でシェルにnologinしていしてるんだからログインできないよね、
ということで変更を。

$ sudo usermod --shell /bin/bash node
$ sudo passwd node

nodeユーザのシェルを変更後、パスワードの設定。

ユーザの切り替えと初期設定

$ su - node
Password:
$ vi .bashrc

.bashrcを作ります。内容は以下のように。

alias ls='ls --color=auto'

NVM=$HOME/nvm/nvm.sh
if [ -f "$NVM" ]
then
  source "$NVM"
fi

実はこれだけだと読み込まれなくて、.bash_profileを作る必要があるんですが、ここではとりあえずこのまま。

nvmのインストール

$ git clone https://github.com/creationix/nvm.git ./nvm
$ logout
$ su - node
Password:
$ nvm ls
nvm? 知らんなあ的メッセージ

というわけで.bash_profileが必要だと気付いたのでMacと同じく.bashrcを読み込むだけのものを作ります。

$ vi .bash_profile

内容は以下のように。-fじゃない方が良いんだろうけど、まあいいや。

if [ -f .bashrc ]
then
  source .bashrc
fi

これで再度ログインし直して、nvm lsが使えることを確認。あとは

$ nvm install v0.6.7
...
$ nvm use v0.6.7

で使えます。nvm defaultだっけ?を使ってログイン直後から使えるようにしておいた方が良いのかもしれません。

Hello, World!

$ node -e 'console.log("Hello, World!")'

Hello, World!


あとMongoDB用のユーザも作ってあげればいいのかなー。
でも本来はここからなんだよね……


追記:
.npmrcの設定を忘れてた。

$ su - node
Password:
$ touch ~/.npmrc
$ vi .npmrc

内容は以下。

root = $HOME/.npm/libraries
binroot = $HOME/.npm/bin
manroot = $HOME/.npm/man