Node.js0.10.25とMongoDB2.6.9を使用したサーバ環境構築

前回作成したサーバイメージに、Node.js0.10.25とMongoDB2.6.9を使用したサーバ環境を構築する。
なお、本サーバイメージはCentOS6.6のインストール直後である。

ネットワークの設定

  • ifcfgを編集。
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
  • 以下のように設定(DHCP環境の場合)。
DEVICE=eth0
#HWADDR=***
TYPE=Ethernet
#UUID=***
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=dhcp

パッケージのアップデート

  • パッケージをアップデート。
# yum update

グループとユーザの追加

  • グループは以下のコマンドで追加。
# groupadd -g <GID> <グループ名>
  • ユーザは以下のコマンドで追加。
# useradd -g <グループ名> -u <UID> <ユーザ名>
  • ユーザ追加時にホームディレクトリとシェルと指定する場合は、以下のコマンドで追加。
# usermod -g <グループ名> -d <ホームディレクトリ> -s <シェル> -u <UID> <ユーザ名>
  • 追加したユーザとグループの確認。
# id <ユーザ名>
  • ユーザをwheelグループに追加する場合は、以下のコマンドで編集。
# vigr
  • 以下のように編集。
wheel:x:10:<ユーザ名>
  • パスを編集する場合、以下のように編集。
# vi /home/<ユーザ名>/.bashrc
  • 以下のように編集(例)。
PATH="$PATH":/opt/bin
  • ユーザのパスワードは、以下のコマンドで設定。
# passwd <ユーザ名>

sudoの設定

  • /etc/sudoersを編集。
visudo
  • 以下のように編集(例)。
Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/opt/bin
%wheel        ALL=(ALL)       ALL

公開鍵と秘密鍵の作成

  • rootから作業ユーザに変更。
# su <ユーザ名>
$ cd
$ ssh-keygen
  • 以下のメッセージに従い、各項目を入力。
    なお、ここで作成した「id_rsa」はsshでのリモートログイン時に使用するため、別マシンに保存しておく。
Enter file in which to save the key (/home/<ユーザ名>/.ssh/id_rsa): <Enter>
Created directory '/home/<ユーザ名>/.ssh'.
Enter passphrase (empty for no passphrase): <パスフレーズを入力し、Enter>
Enter same passphrase again: <パスフレーズを入力し、Enter>
Your identification has been saved in /home/<ユーザ名>/.ssh/id_rsa.
Your public key has been saved in /home/<ユーザ名>/.ssh/id_rsa.pub.
The key fingerprint is:
00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff <ユーザ名>@<ホスト名>
The key's randomart image is:
  • 作成した.sshディレクトリに移動。
cd ~<ユーザ名>/.ssh
  • 以下のコマンドを実行。
$ cp –ip ./id_rsa.pub ./authorized_keys
$ chmod 600 authorized_keys
  • rootに変更。
$ exit

ssh の設定

  • sshd_configを編集。
# vi /etc/ssh/sshd_config
  • 以下のように編集(例)。
# rootでのログインを許可しない
PermitRootLogin no
# パスワード認証によるログインを禁止(公開鍵方式でしかログインさせない)
PasswordAuthentication no
# ログイン時の遅延を解消
GSSAPIAuthentication no

NTPの設定

  • 時刻同期デーモンを停止。
# /etc/init.d/ntpd stop
  • ntp.confを編集。
# vi /etc/ntp.conf
  • 以下のように編集。
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server -4 ntp.nict.jp
server -4 ntp.nict.jp
server -4 ntp.nict.jp
server -4 ntp.nict.jp
  • 時刻を同期。
# ntpdate ntp.nict.jp
  • 時刻同期デーモンを起動。
# /etc/init.d/ntpd start
  • 数分経ったら、以下のコマンドで時刻が同期しているかを確認。
# ntpq –p
  • 以下のようにremoteのホスト名の左横に「*」がついていたら同期完了。
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
+ntp-a2.nict.go. .NICT.           1 u   32   64  377   98.748    9.511  91.679
+ntp-b2.nict.go. .NICT.           1 u   39   64  377   93.339    5.348 283.719
+ntp-a3.nict.go. .NICT.           1 u   53   64  377   92.676    5.236 207.158
*ntp-b3.nict.go. .NICT.           1 u   30   64  377   81.482   -6.739  70.909

基本パッケージのインストール

  • yumで各パッケージをインストール。
# yum install gcc gcc-c++ make ...

追加パッケージの手動インストールの準備

  • yumを使用せずインストールする追加パッケージのため、インストール用ディレクトリを作成。
# mkdir -p /opt/build/distfiles
  • ライブラリパスの追加。
sudo sh -c "echo /opt/lib >> /etc/ld.so.conf"

MongoDBのインストール

# touch /etc/yum.repos.d/mongodb.repo
# vi /etc/yum.repos.d/mongodb.repo
  • 以下のように編集。
[mongodb]
name=MongoDB Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/
gpgcheck=0
enabled=1
  • yumでMongoDBをインストール。
# yum install mongo-10gen mongo-10gen-server
  • yum.confを編集。
# vi /etc/yum.conf
  • yumでアップデートされないように、以下のように編集。
exclude=mongo-10gen,mongo-10gen-server

FreeType(※ImageMagickで使用)のインストール

  • 公式サイトからソースコードのアーカイブファイルをダウンロード。
# cd /opt/build/distfiles
# curl -L -O http://download.savannah.gnu.org/releases/freetype/freetype-2.4.11.tar.bz2
  • アーカイブファイルを解凍。
# cd /opt/build
# tar jxvf distfiles/freetype-2.4.11.tar.bz2
cd /opt/build/freetype-2.4.11
env CC=gcc CXX=g++ ./configure --prefix=/opt ; make
  • インストール。
# make install
  • 以下のエラーが発生した場合、internalディレクトリを手動で作成し、再度インストールする。
rmdir: failed to remove `/opt/include/freetype2/freetype/internal': そのようなファイルやディレクトリはありません
  • internalディレクトリを作成。
# mkdir /opt/include/freetype2/freetype/internal

Ghostscriptフォント(※ImageMagickで使用)のインストール

  • 公式サイトからソースコードのアーカイブファイルをダウンロード。
# cd /opt/build/distfiles
# curl -L -O http://jaist.dl.sourceforge.net/sourceforge/gs-fonts/ghostscript-fonts-std-8.11.tar.gz
  • アーカイブファイルを解凍。
# cd /opt/share
# tar zxvf /opt/build/distfiles/ghostscript-fonts-std-8.11.tar.gz

ImageMagickのインストール

# yum install ImageMagick-6.5.4.7

Node.jsのインストール

  • 公式サイトからソースコードのアーカイブファイルをダウンロード。
# cd /opt/build/distfiles
# curl -O http://nodejs.org/dist/v0.10.25/node-v0.10.25.tar.gz
  • アーカイブファイルを解凍。
# cd /opt/build
# tar zxvf distfiles/node-v0.10.25.tar.gz
# cd /opt/build/node-v0.10.25
# ./configure –prefix=/opt ; make
  • インストール。
# make install
  • rootで実行できるようにリンクを作成。
# ln -s /usr/local/bin/node /opt/bin/node
# ln -s /usr/local/bin/npm /opt/bin/npm

Node.js用パッケージのインストール

  • パッケージをローカルインストール。
# cd <サーバアプリを置くディレクトリ>
# npm install <パッケージ名>
  • パッケージをグローバルインストール。
# cd <サーバアプリを置くディレクトリ>
# npm install -g <パッケージ名>

共有ライブラリの反映

  • 以下のコマンドで反映。
# /sbin/ldconfig

IPv6の無効化

  • 設定ファイルを編集。
# vi /etc/sysconfig/network
  • 以下の行を追加。
NETWORKING_IPV6=no

ファイアウォールの設定

# vi /etc/sysconfig/iptables

サーバ再起動

  • サーバを再起動する。
# shutdown -r now