序章

OrientDB は、グラフおよびドキュメントデータベースをサポートするマルチモデルのNoSQLデータベースです。 これはJavaアプリケーションであり、任意のオペレーティングシステムで実行できます。 また、マルチマスターレプリケーションをサポートするACIDに完全に準拠しているため、水平方向のスケーリングが容易です。

この記事では、Ubuntu16.04サーバーにOrientDBの最新のCommunityエディションをインストールして構成します。

前提条件

このチュートリアルに従うには、次のものが必要です。

  • 理想的には少なくとも2GBのRAMを搭載した1台のUbuntu16.04サーバーですが、512MBでも動作します。
  • このUbuntu16.04を使用した初期サーバーセットアップに従ってセットアップされたsudo非rootユーザーおよびファイアウォール。
  • Javaがインストールされています。これは、このJavaインストールガイドJDK8の手順に従って実行できます。

ステップ1—OrientDBのダウンロードとインストール

このステップでは、OrientDBの最新のCommunityエディションをダウンロードし、Linuxにサードパーティアプリケーションをインストールするための従来の場所である/optディレクトリにインストールします。

開始する前に、システム上のパッケージが最新であることを確認してください。

  1. sudo apt-get update

ネット、OrientDBコミュニティの最新バージョンをダウンロードします。 公開時は2.2.20ですが、プロジェクトのダウンロードページで最新バージョンを確認し、以下のコマンドでバージョン番号を変更して一致させることができます。

  1. wget -O orientdb-community-2.2.20.tar.gz http://orientdb.com/download.php?file=orientdb-community-2.2.20.tar.gz&os=linux

ダウンロードしたtarballには、システムでOrientDBを実行するために必要なコンパイル済みのバイナリファイルが含まれているため、ここで行う必要があるのは、tarを解凍することだけです。

  1. tar -zxvf orientdb-community-2.2.20.tar.gz

ファイルはorientdb-community-2.2.20という名前のディレクトリに抽出されます。 次に、それを/optディレクトリに移動し、プロセスで名前をorientdbに変更する必要があります。

  1. sudo mv ~/orientdb-community-2.2.20 /opt/orientdb

OrientDBがインストールされました。 メモリに制約のあるサーバーを使用している場合は、次の手順で使用するRAMが少なくなるようにOrientDBを構成できます。 それ以外の場合は、ステップ3に進んでサーバー自体を起動できます。

ステップ2—より少ないRAMを使用するようにOrientDBを構成する(オプション)

デフォルトでは、OrientDBデーモンは少なくとも2 GBのRAMが使用可能であると想定しており、それより少ない場合は起動に失敗します。 とにかく起動しようとすると、次のようなエラーが表示されます。

Output
ubuntu-orientdb server.sh[1670]: Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000aaaa0000, 1431699456, 0) failed; error='Cannot allocate memory' (errno=12) ubuntu-orientdb server.sh[1670]: # There is insufficient memory for the Java Runtime Environment to continue.

構成を変更できる構成が1つあります。これにより、わずか512MBのRAMを搭載したサーバーを使用する必要がなくなります。 これは、server.shファイルの設定の機能であり、デーモンがはるかに少ないRAMで起動できるように変更できます。

nanoまたはお好みのテキストエディタでファイルを開きます。

  1. sudo nano /opt/orientdb/bin/server.sh

次に、このコードブロックに示されているコードのチャンクを含むセクションまでスクロールします。

/opt/orientdb/bin/server.sh
. . .
# ORIENTDB memory options, default to 2GB of heap.

if [ -z "$ORIENTDB_OPTS_MEMORY" ] ; then
    ORIENTDB_OPTS_MEMORY="-Xms2G -Xmx2G"
fi
. . .

変更する必要のある値は、XmsおよびXmxで、Java仮想マシンの初期および最大メモリ割り当てプールを指定します。 デフォルトでは、2GBに設定されています。

サーバーに割り当てられているRAMの量より少ない新しい値を設定できますが、Xmsが128MB以上であることを確認してください。そうでない場合、OrientDBは起動しません。 たとえば、以下の値は、RAMの初期量と最大量をそれぞれ128MBと256MBに設定します。

/opt/orientdb/bin/server.sh
# ORIENTDB memory options, default to 2GB of heap.

if [ -z "$ORIENTDB_OPTS_MEMORY" ] ; then
    ORIENTDB_OPTS_MEMORY="-Xms128m -Xmx256m"
fi

ファイルを保存して閉じます。 次のステップでは、OrientDBを起動します。

ステップ3—サーバーを起動する

バイナリが配置され、RAMの使用量を減らすようにサーバーをオプションで構成したので、サーバーを起動してコンソールに接続できます。

インストールディレクトリに移動します。

  1. cd /opt/orientdb

次に、サーバーを起動します。

  1. sudo bin/server.sh

サーバーを初めて起動するときに、rootユーザーアカウントのパスワードを指定するように求められます。 これは、OrientDBを管理するためのWebベースのインターフェイスであるOrientDBStudioなどのサーバーにアクセスするために使用される内部OrientDBアカウントです。 パスワードを指定しない場合、パスワードは自動的に生成されます。 ただし、自分で指定することをお勧めします。プロンプトが表示されたら指定してください。

サーバーの起動から生成される出力の一部は、サーバーとOrientDBStudioがリッスンしているポートを示します。

Output
2017-02-04 19:13:21:306 INFO Listening binary connections on 0.0.0.0:2424 (protocol v.36, socket=default) [OServerNetworkListener] 2017-02-04 19:13:21:310 INFO Listening http connections on 0.0.0.0:2480 (protocol v.10, socket=default) [OServerNetworkListener] . . . 2017-02-04 19:13:21:372 INFO OrientDB Studio available at http://192.168.0.30:2480/studio/index.html [OServer] 2017-02-04 19:13:21:374 INFO OrientDB Server is active v2.2.20 (build [email protected]; 2017-02-02 07:01:26+0000). [OServer]

これが表示されると、OrientDBが現在のターミナルで実行されています。 サーバーが適切なポートでリッスンしていることを確認しましょう。

2番目の端末を開き、SSH経由で同じサーバーに接続します。

  1. ssh sammy@your_server_ip

次に、その2番目の端末で、サーバーがポート2424(バイナリ接続の場合)および2480(HTTP接続の場合)でリッスンしていることを次のコマンドで確認します。

  1. sudo netstat -plunt | grep -i listen

出力には、次のように両方のポート番号への参照が含まれている必要があります。

Output
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1160/sshd tcp6 0 0 :::2480 :::* LISTEN 2758/java tcp6 0 0 :::22 :::* LISTEN 1160/sshd tcp6 0 0 :::2424 :::* LISTEN 2758/java

サーバーが起動し、サーバーが実行されていることを確認したら、次に2番目のターミナルでOrientDBコンソールに接続します。

ステップ4—コンソールに接続する

OrientDBコンソールは、アプリケーションを操作するためのコマンドラインインターフェイスです。 起動するには、次のように入力します。

  1. sudo /opt/orientdb/bin/console.sh

次のように表示されます。

Output
OrientDB console v.2.2.20 (build [email protected]; 2017-02-02 07:01:26+0000) www.orientdb.com Type 'help' to display all the supported commands. Installing extensions for GREMLIN language v.2.6.0 orientdb>

次に、サーバーインスタンスに接続します。 必要なパスワードは、前の手順でサーバーを最初に起動したときに指定したものです。

  1. connect remote:127.0.0.1 root root-password

正常に接続すると、この出力が表示されます。

Output
Connecting to remote Server instance [remote:127.0.0.1] with user 'root'...OK orientdb {server=remote:127.0.0.1/}>

そうでない場合は、rootパスワードを正しく入力したこと、およびOrientDBが最初の端末でまだ実行されていることを再確認してください。

準備ができたら、2番目の端末にexitと入力して、OrientDBプロンプトを終了します。

  1. exit

OrientDBをインストールし、手動で起動して接続しました。 これは、OrientDBが機能していることを意味しますが、サーバーを再起動するたびに手動で起動する必要があることも意味します。 次のいくつかの手順では、サーバー上の他のデーモンと同じように実行するようにOrientDBを構成および設定します。

ステップ5—OrientDBをデーモンとして構成する

この時点で、OrientDBがインストールされていますが、これはサーバー上の一連のスクリプトにすぎません。 このステップでは、システム上でデーモンとして実行するように構成します。 これには、/opt/orientdb/bin/orientdb.shスクリプトと構成ファイル/opt/orientdb/config/orientdb-server-config.xmlの変更が含まれます。

まず、OrientDBを実行したまま、最初のターミナルウィンドウにCTRL+Cと入力して停止します。 ここで2番目の端末接続を閉じることもできます。

/opt/orientdb/bin/orientdb.shスクリプトを変更して、OrientDBに実行するユーザーを通知し、インストールディレクトリを指定することから始めましょう。

したがって、OrientDBを実行するシステムユーザーを作成します。 この例では、orientdbユーザーを作成しています。 このコマンドは、orientdbグループも作成します。

  1. sudo useradd -r orientdb -s /sbin/nologin

OrientDBディレクトリとファイルの所有権を新しく作成されたOrientDBユーザーとグループに付与します。

  1. sudo chown -R orientdb:orientdb /opt/orientdb

次に、orientdb.shスクリプトにいくつかの変更を加えましょう。

  1. sudo nano /opt/orientdb/bin/orientdb.sh

まず、適切なインストールディレクトリを指定してから、実行するユーザーを指定する必要があります。 したがって、ファイルの先頭に向かって次の2行を探します。

/opt/orientdb/bin/orientdb.sh
. . .
# You have to SET the OrientDB installation directory here
ORIENTDB_DIR="YOUR_ORIENTDB_INSTALLATION_PATH"
ORIENTDB_USER="USER_YOU_WANT_ORIENTDB_RUN_WITH"
. . .

そして、それぞれ/opt/orientdborientdbに変更します。

/opt/orientdb/bin/orientdb.sh
# You have to SET the OrientDB installation directory here
ORIENTDB_DIR="/opt/orientdb"
ORIENTDB_USER="orientdb"

ファイルを保存して閉じます。

次に、サーバー構成ファイルのアクセス許可を変更して、許可されていないユーザーがファイルを読み取れないようにします。

  1. sudo chmod 640 /opt/orientdb/config/orientdb-server-config.xml

ファイルのパーミッションについて詳しくは、このLinuxパーミッションチュートリアルをご覧ください。

次のステップでは、サービスマネージャーであるSystemdによって制御されるようにデーモンを構成します。

ステップ6—Systemdスタートアップスクリプトをインストールする

OrientDBには、サービスの開始と停止を担当するSystemdサービス記述子ファイルが付属しています。 そのファイルを/etc/systemd/systemディレクトリにコピーする必要があります。

  1. sudo cp /opt/orientdb/bin/orientdb.service /etc/systemd/system

そのファイルには変更が必要な設定がいくつかあるので、編集のために開きます。

  1. sudo nano /etc/systemd/system/orientdb.service

インストールに一致するように、Serviceの下のUser Group 、およびExecStart変数を変更します。 手順5でユーザーとグループを設定します(手順をそのまま実行した場合は、どちらも orientdb です)。 ExecStart は、スクリプトへのパスを指定します。このチュートリアルを記述どおりに実行した場合は、/opt/orientdbで始まる必要があります。

/etc/systemd/system/orientdb.service
. . .

[Service]
User=orientdb
Group=orientdb
ExecStart=/opt/orientdb/bin/server.sh

ファイルを保存して閉じます。

次に、次のコマンドを実行して、すべてのユニットをリロードします。

  1. sudo systemctl daemon-reload

すべてが整ったら、OrientDBサービスを開始できます。

  1. sudo systemctl start orientdb

そして、起動時に起動することを確認します。

  1. sudo systemctl enable orientdb

プロセスのステータスを確認して、実際に開始されたことを確認します。

  1. sudo systemctl status orientdb
Output
● orientdb.service - OrientDB Server Loaded: loaded (/etc/systemd/system/orientdb.service; disabled; vendor preset: enabled) Active: active (running) since Sat 2017-02-04 20:54:27 CST; 11s ago Main PID: 22803 (java) Tasks: 14 Memory: 126.4M . . .

サーバーが起動しない場合は、出力で手がかりを探します。 次のステップでは、アプリケーションのWebユーザーインターフェイスであるOrientDBStudioに接続する方法を学習します。

ステップ7—OrientDBStudioに接続する

OrientDB Studioは、OrientDBを管理するためのWebインターフェイスです。 これはテスト目的に役立ちますが、アクセスを完全に制限することはより優れたセキュリティプラクティスです。

テスト用に有効にする場合は、ファイアウォールにルールを追加する必要があります。 デフォルトでは、OrientDBスタジオはポート2480でリッスンするため、サーバーでファイアウォールを構成した場合は、ポート2480へのアクセスを許可する必要があります。

  1. sudo ufw allow 2480

次に、UFWを再起動します。

  1. sudo systemctl restart ufw

OrientDB Studioに接続するには、ブラウザでhttp://your_server_ip:2480にアクセスしてください。 ページが読み込まれると、ログイン画面が表示されます。

以前に設定したパスワードでrootとしてログインできます。 GratefulDeadConcertsデータベースを選択し、OrientDBに含まれているデフォルトのユーザーアカウント( admin reader 、または writer )のいずれかを使用してログインすることもできます。 )。

結論

これで、Ubuntu 16.04サーバーにOrientDBのCommunityエディションをインストールし、その構成をカスタマイズして、systemdで管理されるデーモンとしてセットアップしました。

次に、このOrientDBセキュリティチュートリアルを使用していくつかのセキュリティのヒントを適用することにより、許可されていないユーザーからアプリケーションを保護する必要があります。 新しいインストールにインポートする必要がある既存のOrientDBインストールがある場合は、この移行ガイドを使用してください。これはUbuntu 14.04用に作成されていますが、Ubuntu16.04でも機能します。

OrientDBの詳細については、プロジェクトの公式ドキュメントにアクセスしてください。