Project

General

Profile

node

  • サーバサイド言語nodeおよびnode.jsの構築に関するページです。
  • 下記日本語コミュニティが非常に充実しています。
    http://nodejs.jp/

前提条件

  • 本番可動サーバとしてRHEL/CentOS6.xを想定します。
    • サービスとしての起動を意識し、デーモン可動を想定します。
    • デバッグモードとして自動リスタートツールを導入します。
    • 新規環境のため、ベースのみ構成からの構築を想定します。
  • 今回、バージョンが前後すると不都合なのでnaveは導入しません。

準備

  • git、openssl(githubでのsshに使う)をインストールします。
    # yum install git openssl openssl-devel
    
  • コンパイルに必要パッケージの取得
  • pythonは2.6~2.7にバージョンの縛りがあります。
    # yum install python gcc-c++ make
    
  • リバースプロキシを行う場合、httpdも取得。
    ただし、websockが特殊な実装になるので、利用する場合は注意。
    (apache→nodeではなく、node→apacheの順にリバースプロキシする)
    # yum install httpd mod_ssl
    

nodeのインストール

  • 次のサイトからソースコード「Source Code」を取得します。
  • http://nodejs.jp/
  • 少しわかりにくいですが、ドキュメント部分から配布元本家に行けます。
  • ソースコードを作業ディレクトリにダウンロード、展開します。
    # wget http://nodejs.org/dist/v0.11.7/node-v0.11.7.tar.gz
    # tar xzf node-v0.11.7.tar.gz
    
  • コンパイルします。
  • ここでは、「/opt/node」以下に実装するものとします。
    # cd node-v0.11.7
    # ./configure --prefix=/opt/node
    # make
    # make install
    
  • 環境変数を通します。
    # vi ~/.bashrc
    ------------------------------------------------------
    # 末尾に追加
    export PATH=$PATH:/opt/node/bin
    
  • 設定ファイルの適用
    • 違うユーザやcronは別途指定する必要があるので注意すること。
      # source ~/.bashrc
      
  • 動作確認(バージョンが返ってくること)
    # node -v
    v0.11.7
    

拡張のインストール

  • 「-g」でプロジェクト単体ではなくnode全体にインストールを行う。
  • デーモン化モジュールのインストール
    # npm install -g forever
    
  • オートリスタート機能のインストール
    # npm install -g node-dev
    
  • Express機能のインストール
    # npm install -g express
    

プロジェクトの作成

  • 次のコマンドを実行する。
  • あらかじめディレクトリを作っておく必要はない。
    # express /usr/local/project-name
    
  • プロジェクトが作成されたらモジュールをインストールする。
    # cd /usr/local/project-name
    # npm install -d
    

プロジェクトの実行

  • とりあえず動作させてみる。
    # node app.js
    Express server listening on port 3000
    
  • 3000ポートでwebサーバが動作している。
  • 中断するにはctrl+c
  • ただし、この実行はコンソールを閉じると終了してしまう。
  • 実機コンソール上やforeverを使うことで解決することは出来る。
  • foreverはコマンドが独自だが簡単には以下。(init.d相当?)
  • startしておけば、プロセスがダウンしても再起動してくれる。
  • initスクリプトに起動コードを各運用でdaemon化が簡単にできる。
  • プロセス管理状況をログ出力できる。(-o/-eオプション)
    # forever start app.js
    # forever stop app.js
    # forever restart app.js
    
    # forever list
    # forever stapall
    
  • jsコンテンツの更新時はリロードが必要(html/cssやjadeは必要ない)
  • 開発・デバッグ時など、頻繁にjsを書き換える際にはnode-devを使う。
  • nodeコマンドの互換。jsに更新が発生した際に、オートリロードしてくれる。
    # node-dev app.js
    

GitHubへの公開鍵登録

  • gitから随時最新のコードを同期するための登録を行います。
  • コミット時に登録されるユーザ名とメールアドレスを登録します。
    # git config --global user.name demo
    # git config --global user.email demo@example.com
    
    (確認)
    # git config --global --list
    user.name=demo
    user.email=demo@example.com
    
  • ssh公開鍵を作成します。パスフレーズは付けないので、応答にはすべてENTER。
    # ssh-keygen
    Generating public/private rsa key pair.
    Enter file in which to save the key (/root/.ssh/id_rsa):
    
    Created directory '/root/.ssh'.
    Enter passphrase (empty for no passphrase):
    
    Enter same passphrase again:
    
    Your identification has been saved in /root/.ssh/id_rsa.
    Your public key has been saved in /root/.ssh/id_rsa.pub.
    The key fingerprint is:
    
  • 公開鍵をコピーします。
    # cd ~/.ssh
    # cat id_rsa.pub
    ssh-rsa ~(略)
    ~ユーザ名@FQDN
    
  • GitHubの「Profile」→「SSH Keys」→「Add SSH Keys」へ進む。
  • Title: 登録するサーバの名称、用途など
  • Key: 先ほどコピーした公開鍵の内容
  • pushとpullがパス無しで正常に行えることを確認します。
    # cd /usr/local/project-name
    
    # git pull
    # git push
    

 

戻る