みなりん*のブログ

内容はなんでもありです。暗号通貨に特化している訳ではありません。

NEM スーパーノードの構築 第2回(サーバ設定編 Ubuntu 14)

今回はNEMのスーパーノードのプログラムのセットアップを行います。

事前にスーパーノードを運用するVPSサーバや自宅サーバが必要になりますので、ここまでの準備は下記の以前の記事を参照して下さい。

http://blog.minarin.moe/entry/2017/02/12/114147blog.minarin.moe

UNIXはOSが違えば中に入っているコマンド等の構成が異なります。そして同じOSを使っていても全く同じという訳ではありません。これから説明する方法ではコマンドが違ったりする事も多々ある事をご留意下さい。

【注意】 この文書の説明は、記事作成時点でのDTIの提供する「ServerMan@VPS 1GB Ubuntu 14.04 LTS (64bit)のシンプルセット」を前提として書かれています。 他のVPSの記事も書きたいとは思っているのですが、無職上の理由に現在は作成する為の金銭的余裕がありません。パトロンを探しています。

1. 事前のクライアントの設定

スーパーノードを運用する時には、自分のアカウントに紐付けされたリモードアカウント(別名としてデリゲートアカウントと呼ぶ事もあります)が必要になります。NanoWalletのインストールを行った際に、NEMのアドレスを新規に生成、又は以前のウォレットからインポートを行ったと思います。この際にリモードアカウントは自動的に生成されます。

このリモートアカウントは、自分のNEMアドレスの秘密鍵とウォレットパスワードを元に生成されていますので、自分以外が同じリモートアカウントを生成する事はありません。逆に言えば、自分のウォレットにsecondaryアカウントとして別のNEMのアドレスを追加すると、異なるリモートアカウントが生成されます。

最近ですと、NCCで生成されるリモートアカウントとNanoWalletで生成されるリモートアカウントが異なる為に迷われる方が多くなっています。これはリモートアドレスの生成方法が変更された為に異なるアドレスが生成されています。(ソースコードより確認)

1.1 リモートアカウントの委任有効化

NanoWalletの「#各種機能」から「デリゲートアカウント(委任アカウント)管理」を選びます。 (委任ハーベストを既に実行されている場合はこちらの操作は既に操作済みとなりますので必要ありません。)

f:id:mizunashi_rin:20170213013440p:plain

下記の画面が表示されますので、左側の「インポータンストランスファートランザクション」の操作を行います。

ここでは、6XEMを手数料として支払い、リモートアカウントの委任有効化(Activate)を行います。送金ボタンを押しトランザクションが承認されれば、設定は完了となります。但し、実際に有効になる為には6時間待つ必要がありますので、事前に行なっておいた方がスムーズに作業が進みます。

なお、後で行う作業にて次の情報が必要になります。

  • 委任秘密鍵(ウォレットパスワードを入れ右の✓を押すと一時的に表示される)
  • 委任公開鍵

f:id:mizunashi_rin:20170213013615p:plain

2. サーバ側の設定

サーバが初期状態と仮定して説明をしていきます。スーパーノードの説明以外も記載しておりますので少し長めの内容となっております。

2.1 初めてサーバにログインする場合

rootのパスワードがメールにて送られてきていると思います。そのままでは危険ですので、任意のパスワードに変更します。

root@localhost:~# passwd
Enter new UNIX password: (変更後のパスワードを入力)
Retype new UNIX password: (再度入力)
passwd: password updated successfully

2.2 使わないサービスの停止

今回レンタルVPSサーバにログインしてみて要らないサービスは何かを調べたら、apache2(httpd)とxinetdという事がわかりました。 まずはこちらのサービスを停止させます。

2.2.1 apache2の停止

まず負荷のかかるWebサーバを実行する事はないと思います。 調べたところ、このサーバではSysvinitを使っている様でしたので、以下の様にしてapache2を停止させます。

root@localhost:~# service apache2 stop
 * Stopping web server apache2                                                                             * 
root@localhost:/#

もしくは

root@localhost:~# cd /etc/init.d
root@localhost:/etc/init.d# ./apache2 stop
 * Stopping web server apache2                                                                             * 
root@localhost:/etc/init.d# 

そして、次回からサーバを再起動させても起動しないように設定します。

root@localhost:/# update-rc.d -f apache2 remove 
 Removing any system startup links for /etc/init.d/apache2 ...
   /etc/rc0.d/K20apache2
   /etc/rc1.d/K20apache2
   /etc/rc2.d/S20apache2
   /etc/rc3.d/S20apache2
   /etc/rc4.d/S20apache2
   /etc/rc5.d/S20apache2
   /etc/rc6.d/K20apache2
root@localhost:/#

2.2.2 xinetdの停止

xinetd経由で起動するサービスで、特に必要なものはありません。 調べたところ、このサーバではUpstartを使っている様でしたので、以下の様にしてxinetdを停止させます。

root@localhost:/# service xinetd stop
root@localhost:/#

もしくは

root@localhost:/# initctl stop xinetd
xinetd stop/waiting
root@localhost:/#

そして、次回からサーバを再起動させても起動しないように設定します。

root@localhost:/# cd /etc/init
root@localhost:/etc/init# mv xinetd.conf xinetd.conf.disable
root@localhost:/etc/init#

2.3 Java 実行環境のインストール

NIS及びServantプログラムはJavaバイトコードで提供されています。この為、Javaの実行環境(JRE)をインストールします。PPAでは、Javaの実行環境のみのパッケージは提供されていませんので、Javaの開発環境(JDK)と実行環境両方をダウンロードします)。

root@localhost:~# apt-get update
root@localhost:~# apt-get -y install apt-file
root@localhost:~# apt-file update
root@localhost:~# apt-file search add-apt-repository
root@localhost:~# apt-get -y install software-properties-common
root@localhost:~# add-apt-repository ppa:webupd8team/java
root@localhost:~# apt-get update
root@localhost:~# apt-get -y install oracle-java8-installer
root@localhost:~# java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)

最後にjava -versionコマンドにて、インストールが出来ているか及び最新のものが入っているかを確認します。

2.4 unzipのインストール確認

Servantプログラムを解凍する為にunzipを使用します。入ってない場合も多いですので、dpkgコマンドでunzipが入っているか確認します。

(入っている場合)
root@localhost:~# dpkg -l unzip
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name           Version      Architecture Description
+++-==============-============-============-=================================
ii  unzip          6.0-9ubuntu1 amd64        De-archiver for .zip files
root@localhost:~#

(入っていない場合)
root@localhost:~#
dpkg-query: no packages found matching unzip
root@localhost:~# 

unzipが入っていない場合には、次の様にしてunzipをインストールします。

root@localhost:~# apt-get install unzip

2.5 スーパーノード実行用アカウントの作成

以下の様にして、スーパーノードを動かすアカウント nemを作成します。

root@localhost:~# adduser nem
 (省略)
Enter new UNIX password: (nemユーサのパスワード設定します)  
Retype new UNIX password: (上記と同じものを再度入力)  
passwd: password updated successfuly  
Changing the user infomation for nem  
Enter the new value, or press ENTER for the default  
        Full Name []:(リターンキーで省略)  
        Room Number []:(リターンキーで省略)  
        Work Phone []:(リターンキーで省略)  
        Home Phone []:(リターンキーで省略)  
        Other []:(リターンキーで省略)  
Is the infomation correct? [Y/n] y  
root@localhost:~#

2.6 サーバからスーパーノードに必要なプログラムのダウンロードしインストールする

ここからは、rootユーザではなくnemユーザで作業します。 また、nemという名前は任意ですので、好きな名前で問題ありません。

以下の2つのファイルをダウンロードします。

  • NISサーバ(NCCも同梱されていますが使いません)
  • Servant(スーパーノードを監視するプログラム)
root@localhost:~# su -nem
nem@localhost:~$ pwd
/home/nem
nem@localhost:~$ wget http://bob.nem.ninja/nis-ncc-0.6.83.tgz
 (中略)
2017-02-08 08:50:00 (685 KB/s) - 'nis-ncc-0.6.83.tgz' saved [32222941/32222941]

nem@localhost:~$ wget wget http://bob.nem.ninja/servant_0_0_4.zip
 (中略)
2017-02-08 08:51:08 (754 KB/s) - 'servant_0_0_4.zip' saved [10582497/10582497]

nem@localhost:~$ tar xzf nis-ncc-0.6.83.tgz
nem@localhost:~$ unzip -q servant_0_0_4.zip
nem@localhost:~$ ls -l
-rw-rw-r-- 1 nem nem 32222941 Feb  2 20:51 nis-ncc-0.6.83.tgz
drwxrwxr-x 8 nem nem     4096 Jan  5  2016 package
drwxrwxr-x 3 nem nem     4096 Feb  3  2016 servant
-rw-rw-r-- 1 nem nem 10582497 Jun  1  2016 servant_0_0_4.zip
nem@localhost:~$ mv servant package
nem@localhost:~$ mv package nemServer
nem@localhost:~$ chmod -R g-w nemServer
nem@localhost:~$ ls
nemServer  nis-ncc-0.6.83.tgz  servant_0_0_4.zip
nem@localhost:~$ rm nis-ncc-0.6.83.tgz servant_0_0_4.zip
nem@localhost:~$

2.6.1 NISサーバの設定

nemのホームディレクトリの下に、nemServerというディレクトリが出来ていますので、./nemServer/nis/config.propertiesファイルを編集します。編集を行う前に、オリジナルファイルは別途保存しておきます。

nem@localhost:~$ cd nemServer/nis
nem@localhost:~/nemServer/nis$ cp -p config.properties config.properties.org
nem@localhost:~/nemServer/nis$ 

実際に変更を行うのはconfig.propaties内の次の行です。

46: #nis.bootKey = #0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
47: #nis.bootName = foobar

では、こちらに私が自分用に設定したファイルがありますので、差分を見てみます。 - - -より上が元の内容で下が変更後の内容です。

nem@localhost:~/nemServer/nis$ diff /home/nem/temp/nemServer/nis/config.properties  config.properties
46,47c46,47
< #nis.bootKey = #0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
< #nis.bootName = foobar
---
> nis.bootKey = 4d8cf75b12d41bdeb654bc42b5054b3e8df6cd722d9ed95d037d1190fe9cffca
> nis.bootName = MIZUNASHI

この編集は、次の作業を行なっています。

  • 先頭の#マークを外します
  • nis.bootKeyには、NanoWalletで表示される 委任プライベートキー を入力します
  • nis.bootNameには、自分が分かりやすい名前を自由に付けて下さい。

もしも、UNIXでファイルの編集出来ない方は、下記の方法もあります。但し、スペルミスがあるとファイルを壊してしまう可能性もありますので、その際には、 config.properties.org ファイルよりコピーしなおして復元してください。

nem@localhost:~/nemServer/nis$ perl -p -i -e 's/^#nis.bootKey.+$/nis.bootKey = 4d8cf75b12d41bdeb654bc42b5054b3e8df6cd722d9ed95d037d1190fe9cffca/' config.properties
nem@localhost:~/nemServer/nis$ perl -p -i -e 's/^#nis.bootName.+$/nis.bootName = MIZUNASHI/' config.properties
nem@localhost:~/nemServer/nis$ perl -p -i -e 's/^M//' config.properties  (注:^M は CTL+v CTL+m と入力してください)
nem@localhost:~/nemServer/nis$

以上で、NISサーバの設定は終わりです。

2.6.2 Servantサーバの設定

nemのホームディレクトリの下に、nemServer/servant というディレクトリが出来ていますので、./nemServer/servant/config.propertiesファイルを編集します。編集を行う前に、オリジナルファイルは別途保存しておきます。

nem@localhost:~$ cd nemServer/servant
nem@localhost:~/nemServer/servant$ cp -p config.properties config.properties.org
nem@localhost:~/nemServer/servant$ 

こちらの設定ファイルはかなり小さい設定ファイルですので、ファイルの内容全てを以下に記載します。

  1 # Common configuration
  2 # short server name
  3 nem.shortServerName = Servant
  4 
  5 # Specifies the maximum number of threads of the thread pool.
  6 nem.maxThreads = 500
  7 
  8 # protocol, ports, paths
  9 nem.protocol = http
 10 nem.host = <put vps ip address here>
 11 nem.httpPort = 7880
 12 nem.httpsPort = 7881
 13 nem.webContext =
 14 nem.apiContext =
 15 nem.homePath =
 16 nem.shutdownPath = /shutdown
 17 
 18 # Servant key configuration
 19 servant.key = <put your NIS boot key here>

実際に変更を行うのはconfig.propaties内の10行目と19行目だけです。

 10 nem.host = 172.31.100.28 (注: サーバのIPアドレスを指定しますがFQDNでも可)
 11 nem.httpPort = 7880
 12 nem.httpsPort = 7881
 13 nem.webContext =
 14 nem.apiContext =
 15 nem.homePath =
 16 nem.shutdownPath = /shutdown
 17 
 18 # Servant key configuration
 19 servant.key = 4d8cf75b12d41bdeb654bc42b5054b3e8df6cd722d9ed95d037d1190fe9cffca
        (委任アカウントのプライベートキーを入力します。NISサーバの設定で記入したものと同じです。)

nem.hostに記述する名前はFQDNでも可能ですが、IPアドレスの方が障害時に有利です。固定IPではない状況下でDDNSを利用しなければサーバを特定できない場合以外はIPアドレスで指定する事を推奨します。

この編集は、次の作業を行なっています。

  • nem.hostには、NISサーバを動かすIPアドレスを入力します
  • servant.keyには、NanoWalletで表示される 委任プライベートキー を入力します

もしも、UNIXでファイルの編集出来ない方は、下記の方法もあります。但し、スペルミスがあるとファイルを壊してしまう可能性もありますので、その際には、 config.properties.org ファイルより復元してください。

nem@localhost:~/nemServer/servant$  perl -p -i -e 's/^nem.shortServerName.+$/nem.shortServerName = 172.31.100.28/' config.properties
nem@localhost:~/nemServer/servant$  perl -p -i -e 's/^servant.key.+$/servant.key  = 4d8cf75b12d41bdeb654bc42b5054b3e8df6cd722d9ed95d037d1190fe9cffca/' config.properties
nem@localhost:~/nemServer/servant$  perl -p -i -e 's/^M//' config.properties  (注:^M は CTL+v CTL+m と入力してください)
nem@localhost:~/nemServer/servant$

以上で、Servantサーバの設定は終わりです。

2.7 仮実行してみる

nemユーザでログインし、NISとServantプログラムを実行します。 画面に色々とログが流れますので別のターミナルからログインした方が作業及び監視が楽になります。

nem@localhost:~$ cd ~/nemServer
nem@localhost:~/nemServer$ nohup ./nix.runNis.sh < /dev/null & (NISサーバの起動)
nem@localhost:~/nemServer$
nem@localhost:~$ cd ~/nemServer/servant
nem@localhost:~/nemServer/servant$ chmod u+x startservant.sh (実行権限がついていませんでしたので追加します)
nem@localhost:~/nemServer/servant$ nohup ./startservant.sh < /dev/null & (Servantの起動)
nem@localhost:~/nemServer/servant$

2つのプログラムを起動しました。それぞれのプログラムのログは、プログラムを実行したディレクトリにnohup.outという名前で保存されています。今回は仮実行ですので、正式に実行した場合は、後でnohup.outを削除します。 リアルタイムにログ・ファイルが見たい場合には、実行したディレクトリに移動し、tail -f nohup.outコマンドを打ち込む事でリアルタイムにログファイルを見る事が出来ます。

エラーメッセージを出してすぐに止まってしまわない様であれば設定は正確に行われていると思われます。NISサーバは時々エラーを出しますが特に問題は無いです。

NISサーバの最初の起動は、数時間かけてNISのデーターベースをダウンロードする作業があります。暫く別の事をする事をお勧め致します。

nohupコマンドは、sshの接続を切断した際に送られるSIGHUPを実行プロセスに渡さない様にする為のものです。また、バックグラウンドにて入力を受け付けない状態で動きますので、標準入力に /dev/null を指定しています。

2.7.1 NISデータベースを高速にダウンロードする(任意)

NISデータベースは現在99万ブロック程あり、データサイズでは987MBになります。他のスーパーノードとの通信でダウンロードする場合は何時間もかかってしまします。これを解消する為、あらかじめ用意されているNISデータをダウンロードして時間の短縮をはかる事もできます。

これは、初めてNISサーバを起動する場合だけではなく、データに不整合が発生し、NISサーバが正常に起動しなくなった場合にも利用可能です。

まず、次のディレクトリにアクセスをします。閲覧だけですので、お手元のPCからでも問題ありません。

別のタブでリンクが開きます → http://bob.nem.ninja

ここで表示されているファイルの中で、先頭がnis5_mainnetで始まり.h2.db.zipで終了するファイルを探します。 複数ある場合は日付が新しいものを選んでください。

私が現在見ている時点では、ファイル名が``nis5_mainnet-966500.h2.db.zipとなりました。以下このファイル名を例として説明します。では、ファイルのダウンロードをサーバで行なっていきます。

nem@localhost:~$ wget http://bob.nem.ninja/nis5_mainnet-966500.h2.db.zip (ファイルをダウンロードします)
 (中略) 
2017-02-19 14:42:01 (1.53 MB/s) - ‘nis5_mainnet-966500.h2.db.zip’ saved [295659941/295659941]
nem@localhost:~$ unzip -q nis5_mainnet-966500.h2.db.zip (解凍します)
nem@localhost:~$

私のサーバでは、ダウンロードに3分程、解凍に30秒程かかりました。

解凍後には、nis5_mainnet-966500.h2.dbというファイルができており、このファイルがNISのデータそのものとなります。ファイル名からも想像できると思いますが、このデータは966,500ブロック迄のデータです。このファイルを正式な場所に置く事によって、これ以降の差分のデータのみのダウンロードでNISデータベースが同期します。

あらたに、NISのデータベースを置き換える事になりますので、今まで保存されているデータは一旦全て削除する作業が必要です。それを含めて下記の様に作業します。 なおこの作業は、NISサーバを停止してから行って下さい。

nem@localhost:~$ ls ~/nem/nis/data/
nis5_mainnet.h2.db  nis5_mainnet.lock.db  nis5_mainnet.trace.db (現在あるファイル)
nem@localhost:~$ rm  ~/nem/nis/data/* (全て消去)
nem@localhost:~$ mv nis5_mainnet-966500.h2.db ~/nem/nis/data/ (ファイルを指定の場所へ移動)
nem@localhost:~$ ls  ~/nem/nis/data/
nis5_mainnet.h2.db
nem@localhost:~$ rm nis5_mainnet-966500.h2.db.zip (zipファイルを削除します)

上記作業終了後、NISサーバを起動して下さい。

2.8 enrollメッセージの送信

スーパーノードの公式アカウント宛にメッセージを送信し、スーパーノードリストへの追加をリクエストします。 NanoWalletのXEMの送金画面より、以下のメッセージを記入して送金します(送金額は0XEMで問題ありません)。

送信先アドレス: NAFUND-BUKIOS-TMD4BN-XL7ZFE-735QHN-7A3FBS-6CMY

メッセージの入れ方:

enroll  (2.6.2で入れたnem.host) (2.6.1で入れたnis.bootName) (NanoWalletに表示されている委任公開鍵) 

メッセージ実例:

enroll 172.31.100.28 MIZUNASHI 1a30416fe6241561deb26cabd984e0ed58ebd9fea7dcbfa12b33e8223c763096

f:id:mizunashi_rin:20170214150435p:plain

ここで入力するenrollメッセージは、絶対に間違えない様に確認してから送信して下さい。nem.host 及び nis.Bootname を間違えた場合は、別途修正コマンドを送る事で訂正する事が可能だと思われますが、委任公開鍵を間違えた場合は修正する方法がありません。 新しく修正したメッセージを送っても無効で、下記のサイトに英語で問い合わせする必要があります。

forum.nem.io

2.9 スーパーノード登録審査結果の確認

2.7にてメッセージを送信すると、スーパーノードとして間違えが無くサーバが構築されているかのテストが行われます。設定が間違って無い場合は、NEM Node Rewardsに自分のスーパーノードの名前が載ります。登録順になっていますので、一番最後のページに移動して確認してください。

自分の名前のサーバをクリックすると、今までのテスト結果が表示されます。こちらのテストはスーパーノードとしての設定が正しいかだけではなく、きちんとパフォーマンスが一定に達しているかのテストとなります。1日4回のテストが行われますので、全て合格するとスーパーノード報酬が支払われます。

f:id:mizunashi_rin:20170214152200p:plain

2.10 自動起動の設定

本章2.7迄でスーパーノードとしてきちんと動作をしております。但し、サーバが何かしらの理由で再起動した場合や、NISやServantプログラムが単体で異常終了してしまった場合には、スーパーノードとして動いていない事となり報酬も得られません。

ここでは、サーバ起動時に自動でサービスをスタートされる事と、プロセスの異常終了時に自動的に再起動させる設定を行います。

まずは、NISサーバの自動起動ファイルを作成します。

以下の内容のファイル/etc/init/nem-nis.confを作成します。

# NEM NIS Server nem-nis.conf

description "NEM NIS Server"
author "MIZUNASHI, Rin <hoge@hoge.hoge>"

start on runlevel [2345]
stop on runlevel [!2345]

pre-start script
    test -x /home/nem/nemServer/nix.runNis.sh || { stop; exit 0; }
end script

setuid nem
setgid nem

chdir /home/nem/nemServer
exec ./nix.runNis.sh
respawn

次に、Servantの自動起動ファイルを同様に作成します。ファイル名は、/etc/init/nem-servant.confとします。

# NEM Super Node Servant nem-servant.conf

description "NEM Super Node Servant"
author "MIZUNASHI, Rin <hoge@hoge.hoge>"

start on runlevel [2345] and started nem-nis
stop on runlevel [!2345]

pre-start script
    test -x /home/nem/nemServer/servant/startservant.sh || { stop; exit 0; }
end script

setuid nem
setgid nem

chdir /home/nem/nemServer/servant
exec ./startservant.sh
respawn

作成したファイルを反映する為に、次のコマンドを実行します。

root@localhost:~# initctl reload-configuration
root@localhost:~# initctl list | grep nem-
nem-servant stop/waiting (※)
nem-nis stotp/waiting (※)
root@localhost:~#

initctl listコマンドにて、※の表示が出ていれば正常に登録されている事になります。

実際に上記登録方法で登録した方法で起動テストを行いますので、現在動いているNISとServantのプロセスを停止します。

root@localhost:/# pgrep -fa org.nem  (※UNIXの種類によっては pgrep -fl org.nem と入力する場合もあります)
459 java -Xms512M -Xmx1G -cp .:./*:../libs/* org.nem.deploy.CommonStarter 
477 java -Xms256M -Xmx256M -cp .:jars/* org.nem.rewards.servant.NodeRewardsServant 
 (※ここで表示された先頭の数字が後ろに続くプロセスのプロセスIDとなります)

root@localhost:/# kill -SIGTERM 459 477
 (又は)
root@localhost:/# pkill -SIGTERM -f org.nem

root@localhost:/# pgrep -fa org.nem (何も表示されなければプロセスは終了しています)
root@localhost:/# 

現在は、NISサーバ及びServantプログラムが停止している状態ですので、改めて登録したスクリプトから起動します。

root@localhost:/# initctl start nem-nis
nem-nis start/running, process 8871
root@localhost:/# initctl start nem-servant
nem-servant start/running, process 8885

念のためプロセスを確認します。

root@localhost:/# pgrep -fa org.nem
8873 java -Xms512M -Xmx1G -cp .:./*:../libs/* org.nem.deploy.CommonStarter 
8887 java -Xms256M -Xmx256M -cp .:jars/* org.nem.rewards.servant.NodeRewardsServant 
root@localhost:/#
 (10秒程待ち同じコマンドを実行します)
root@localhost:/# pgrep -fa org.nem
8873 java -Xms512M -Xmx1G -cp .:./*:../libs/* org.nem.deploy.CommonStarter 
8887 java -Xms256M -Xmx256M -cp .:jars/* org.nem.rewards.servant.NodeRewardsServant 

この時、コマンドを実行した時に先頭に表示されるプロセスIDが同一であれば正常に動いています。 もし、数字が異なっている場合は、一度下記の様にしてプロセスの起動を停止します。

root@localhost:/# initctl stop nem-nis
nem-nis stop/waiting 
root@localhost:/# initctl stop nem-servant
nem-servant stop/waiting 

この状態は、何度も再起動を繰り返していますので、2.10章の頭からファイルの内容が間違ってないか確認します。 間違っている部分を修正した後に、再度initctl startを使ってプロセスを起動しプロセスの確認作業を行います。

問題なく動いている様であれば、rebootコマンドを入力しサーバを再起動して最終確認を行います。

2.11 最終確認

root@localhost:~# reboot
root@localhost:~# 
Broadcast message from root@localhost.localdomain
    (/dev/pts/2) at 0:48 ...

The system is going down for reboot NOW!

root@localhost:~i# Connection to 172.31.100.28 closed by remote host.
Connection to 172.31.100.28.

上記のメッセージを確認したら、現在サーバは再起動中となります。

直ぐに起動してきますので、sshにて再度ログインします。下記の様にプロセスの動作が確認できれば、スーパーノードを運用する最低限の設定は全て終了となります。

nem@localhost:~$ pgrep -fa org.nem
459 java -Xms512M -Xmx1G -cp .:./*:../libs/* org.nem.deploy.CommonStarter
477 java -Xms256M -Xmx256M -cp .:jars/* org.nem.rewards.servant.NodeRewardsServant
nem@localhost:~$

最後に、要らないログファイルの削除を行います。これは、手動にてNISサーバとServantを起動した為に出来てしまったファイルの削除です。

nem@localhost:~$ cd
nem@localhost:~$ rm -f nisServer/nohup.out nisServer/servant/nohup.out
nem@localhost:~$

そして、現在のNISサーバのログファイルは/var/log/upstart/nem-nis.logというファイル名で作成されています。

nem@localhost:~$ cd /var/log/upstart
nem@localhost:/var/log/upstart$ ls -l nem-nis*
-rw-r----- 1 root root 28136411 Feb 14 23:50 nem-nis.log
-rw-r----- 1 root root  2190933 Feb 13 00:24 nem-nis.log.1.gz
-rw-r----- 1 root root  2163204 Feb 12 00:24 nem-nis.log.2.gz
-rw-r----- 1 root root  4427891 Feb 11 00:24 nem-nis.log.3.gz
nem@localhost:/var/log/upstart$ 

1日でおよそ30MBのログファイルを作成しています。1ヶ月放置すると1GB弱のログファイルを作成するスピードですが、毎日ログファイルを別名に変えて圧縮して保存される様になっております。
上記のファイル名と時間を見ていただけると理解しやすいと思いますが、古いログファイルになればなる程ファイル名の最後の部分の〜log.数字.gzが大きくなっていきます。過去のログファイルは最大で〜log.3.gz迄しか保存されず、それ以上古くなると削除されます。
この様にして、一定期間のログを保存しつつディスク領域を圧迫しない様に設定されている状態です。これはupstartにより自動で提供されている機能となります。

ServerMan@VPS 1GB Ubuntu 14.04 LTS (64bit)のシンプルセットにて、最低限のパッケージ追加にて作業できる様に説明したつもりです。他のOSではコマンドが異なる場合もありますが、参考にはなるのではないかと思います。 今回は、root アカウントにて多くの作業を行なっていますので、特にUNIX初心者の方はコマンド操作には十分注意して作業する様にしてください。

次回は、サーバの追加設定を行ないます。またrootにて作業をしなくてもいいように、sudoコマンドを使える様な説明を入れていきたいと思います。