前書き
OrientDBは、グラフおよびドキュメントデータベースをサポートするマルチモデルNoSQLデータベースです。 これはJavaアプリケーションであり、任意のオペレーティングシステムで実行できます。 また、マルチマスターレプリケーションをサポートするACIDに完全に対応しており、簡単な水平スケーリングが可能です。
この記事では、Ubuntu 16.04サーバーにOrientDBの最新のコミュニティエディションをインストールして構成します。
前提条件
このチュートリアルを実行するには、次のものが必要です。
-
理想的には、少なくとも2GBのRAMを搭載したUbuntu 16.04サーバー1台ですが、512MBでも動作します。
-
このInitial Server Setup with Ubuntu 16.04に従って設定されたsudo非rootユーザーおよびファイアウォール。
-
Javaがインストールされています。これは、the JDK 8 step of this Java installation guideに従って実行できます。
[[step-1 -—- downloading-and-installing-orientdb]] ==ステップ1—OrientDBのダウンロードとインストール
このステップでは、OrientDBの最新のコミュニティエディションをダウンロードして、Linuxにサードパーティアプリケーションをインストールするための従来の場所である/opt
ディレクトリにインストールします。
開始する前に、システム上のパッケージが最新であることを確認してください。
sudo apt-get update
ネット、OrientDBコミュニティの最新バージョンをダウンロードしてください。 公開時は2.2.20ですが、the project’s download pageで最新バージョンを確認し、以下のコマンドでバージョン番号を変更して一致させることができます。
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を実行するために必要なコンパイル済みのバイナリファイルが含まれているため、ここで必要なのはuntarするだけです。
tar -zxvf orientdb-community-2.2.20.tar.gz
ファイルはorientdb-community-2.2.20
という名前のディレクトリに抽出されます。 次に、プロセスの/opt+`directory, renaming it to `+orientdb
に移動する必要があります。
sudo mv ~/orientdb-community-2.2.20 /opt/orientdb
OrientDBがインストールされました。 メモリに制約のあるサーバーを使用している場合、次の手順でOrientDBを構成して、使用するRAMを減らします。 それ以外の場合は、手順3に進んでサーバー自体を起動できます。
[[step-2 -—- configuring-orientdb-to-use-less-ram-optional]] ==ステップ2—より少ないRAMを使用するようにOrientDBを構成する(オプション)
デフォルトでは、OrientDBデーモンは少なくとも2 GBのRAMが利用可能であると想定しており、それより少ない場合は起動に失敗します。 とにかく起動しようとすると、次のようなエラーが表示されます。
Outputubuntu-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.
512 MBのRAMを搭載したサーバーを使用して問題を回避できるように、構成を1つ変更できます。 これは、server.sh
ファイルの設定の関数であり、デーモンがはるかに少ないRAMで起動できるように変更できます。
nano
またはお気に入りのテキストエディタでファイルを開きます。
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
が128 MB以上であることを確認してください。そうしないと、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を起動します。
[[step-3 -—- starting-the-server]] ==ステップ3—サーバーの起動
バイナリが配置され、必要に応じてより少ないRAMを使用するようにサーバーを構成したので、サーバーを起動してコンソールに接続できます。
インストールディレクトリに移動します。
cd /opt/orientdb
次に、サーバーを起動します。
sudo bin/server.sh
サーバーを初めて起動するときに、rootユーザーアカウントのパスワードを指定するように求められます。 これは、OrientDBを管理するためのWebベースのインターフェイスであるOrientDB Studioなどのサーバーにアクセスするために使用される内部OrientDBアカウントです。 パスワードを指定しない場合、パスワードは自動的に生成されます。 ただし、自分で指定することをお勧めします。プロンプトが表示されたら指定してください。
サーバーの起動から生成される出力の一部は、サーバーとOrientDB Studioがリッスンしているポートを示します。
Output2017-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 UNKNOWN@r98dbf8a2b8d43e4af09f1b12fa7ae9dfdbd23f26; 2017-02-02 07:01:26+0000).
[OServer]
これを見ると、現在の端末でOrientDBが実行されています。 サーバーが適切なポートでリッスンしていることを確認しましょう。
2番目のターミナルを開き、SSHを介して同じサーバーに接続します。
ssh sammy@your_server_ip
次に、その2番目の端末で、次のコマンドを使用して、サーバーがポート2424
(バイナリ接続の場合)および2480
(HTTP接続の場合)をリッスンしていることを確認します。
sudo netstat -plunt | grep -i listen
出力には、次のように両方のポート番号への参照が含まれている必要があります。
Outputtcp 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 -—-コンソールへの接続]] ==ステップ4—コンソールへの接続
OrientDBコンソールは、アプリケーションを操作するためのコマンドラインインターフェイスです。 起動するには、次を入力します。
sudo /opt/orientdb/bin/console.sh
以下が表示されます。
OutputOrientDB console v.2.2.20 (build UNKNOWN@r98dbf8a2b8d43e4af09f1b12fa7ae9dfdbd23f26; 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>
次に、サーバーインスタンスに接続します。 必要なパスワードは、前の手順でサーバーを最初に起動したときに指定したものです。
connect remote:127.0.0.1 root root-password
接続に成功すると、この出力が表示されます。
OutputConnecting 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プロンプトを終了します。
exit
OrientDBをインストールし、手動で起動し、接続しました。 これは、OrientDBが機能していることを意味しますが、サーバーを再起動するたびに手動で起動する必要があることも意味します。 次のいくつかの手順では、サーバー上の他のデーモンと同様に実行されるようにOrientDBを構成および設定します。
[[step-5 -—- configuring-orientdb-as-a-daemon]] ==ステップ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グループも作成します。
sudo useradd -r orientdb -s /sbin/nologin
OrientDBディレクトリとファイルの所有権を、新しく作成されたOrientDBユーザーとグループに与えます。
sudo chown -R orientdb:orientdb /opt/orientdb
それでは、orientdb.sh
スクリプトにいくつか変更を加えましょう。
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/orientdb
とorientdb
に変更します。
/opt/orientdb/bin/orientdb.sh
# You have to SET the OrientDB installation directory here
ORIENTDB_DIR="/opt/orientdb"
ORIENTDB_USER="orientdb"
ファイルを保存して閉じます。
次に、サーバー構成ファイルの権限を変更して、権限のないユーザーがファイルを読み取れないようにします。
sudo chmod 640 /opt/orientdb/config/orientdb-server-config.xml
ファイルのアクセス許可について詳しくは、this Linux permissions tutorialをご覧ください。
次のステップでは、Systemd, the service managerによって制御されるようにデーモンを構成します。
[[step-6 -—- installing-the-systemd-startup-script]] ==ステップ6—Systemdスタートアップスクリプトのインストール
OrientDBには、サービスの開始と停止を担当するSystemdサービス記述子ファイルが付属しています。 そのファイルを/etc/systemd/system
ディレクトリにコピーする必要があります。
sudo cp /opt/orientdb/bin/orientdb.service /etc/systemd/system
このファイルには変更が必要な設定がいくつかあるため、編集用に開いてください。
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
ファイルを保存して閉じます。
次に、次のコマンドを実行してすべてのユニットをリロードします。
sudo systemctl daemon-reload
すべてが整ったら、OrientDBサービスを開始できます。
sudo systemctl start orientdb
そして、起動時に起動することを確認してください。
sudo systemctl enable orientdb
プロセスのステータスを確認して、本当に起動したことを確認します。
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ユーザーインターフェイスであるOrientDB Studioに接続する方法を学びます。
[[step-7 -—- connecting-to-orientdb-studio]] ==ステップ7— OrientDBStudioに接続する
OrientDB Studioは、OrientDBを管理するためのWebインターフェイスです。 これはテスト目的に役立ちますが、アクセスを完全に制限するのはbetter security practiceです。
テスト用に有効にする場合は、ファイアウォールにルールを追加する必要があります。 デフォルトでは、OrientDB studioはポート2480
でリッスンするため、サーバーでファイアウォールを構成した場合は、ポート2480
へのアクセスを許可する必要があります。
sudo ufw allow 2480
次に、UFWを再起動します。
sudo systemctl restart ufw
OrientDB Studioに接続するには、ブラウザーでhttp://your_server_ip:2480
にアクセスします。 ページがロードされると、ログイン画面が表示されます。
以前に設定したパスワードでrootとしてログインできます。 GratefulDeadConcerts
データベースを選択し、OrientDBに含まれているデフォルトのユーザーアカウント(admin、reader、またはwriter)のいずれかを使用してログインすることもできます。
結論
Ubuntu 16.04サーバーにOrientDBのCommunityエディションをインストールし、その構成をカスタマイズし、systemdによって管理されるデーモンとしてセットアップしました。
次に、this OrientDB security tutorialを使用していくつかのセキュリティのヒントを適用することにより、権限のないユーザーからアプリケーションを保護する必要があります。 新しいインストールにインポートする必要がある既存のOrientDBインストールがある場合は、this migration guideを使用します。これはUbuntu 14.04用に作成されていますが、Ubuntu16.04でも機能します。
OrientDBの詳細については、the project’s official documentationにアクセスしてください。