Как установить и настроить OrientDB на Ubuntu 16.04

Обсудить

Введение

OrientDB – это система управления базами данных, сочетающая в себе возможности графовой и документо-ориентированной базы данных. OrientDB является Java-приложением и может использоваться на любой операционной системе, поддерживающей Java-технологии. В качестве языка запросов OrientDB поддерживает SQL (точнее, по словам разработчиков, NewSQL), поэтому использовать ее легко. Также она поддерживает различные режимы описания данных, которые хранятся в базе данных: schema-less – бессхемные, слабоструктурированные данные, schema-full – задаются обязательные поля, schema-mixed – смешанный режим, поддерживающий как обязательные, так и необязательные поля.

Одно из преимуществ OrientDB – это транзакционность, а именно полная поддержка ACID-транзакций. Другое преимущество – компактность, так как сервер занимает совсем немного места и не зависит от других библиотек.

Из этого руководства вы узнаете о том, как установить на Ubuntu 16.04 и настроить самую последнюю версию OrientDB Community Edition, которая вышла в феврале 2017 года.

Требования

Для того, чтобы выполнить необходимые действия, вам понадобятся:

  • сервер с установленной ОС Ubuntu 16.04 с не менее 2 Гб ОЗУ (но работать будет даже при 512 Мб);
  • пользователь, который может выполнять команды sudo, а также установленный фаервол;
  • ПО Java.

Шаг 1: загрузка и установка OrientDB

Сначала вам нужно загрузить самую последнюю Community версию OrientDB и установить ее в директорию /opt, куда обычно устанавливаются приложения сторонних производителей для Linux.

Как всегда, первым делом необходимо обновить информацию о пакетах, которые содержатся в репозиториях:

$ sudo apt-get update

Далее вам нужно загрузить последнюю версию OrientDB. На момент написания статьи это версия 2.2.18, которая вышла в начале апреля. Узнать последнюю можно на официальном сайте проекта. Если сейчас уже вышла какая-то еще более новая версия, вам нужно заменить цифру 2.2.18 в команде ниже на номер актуальной версии:

$ wget http://mkt.orientdb.com/CE-2216-multiOS -O orientdb-community-2.2.18.tar.gz

Для того, чтобы распаковать этот архив, вам нужно установить unzip:

$ sudo apt-get install unzip

Загруженный архив содержит скомилированные бинарные файлы, которые необходимы для запуска OrientDB в вашей системе, поэтому все, что надо сделать – это ввести команду ниже:

$ unzip orientdb-community-2.2.18.tar.gz

Файлы распакованы в директорию под названием orientdb-community-2.2.18. Теперь необходимо перенести их в директорию /opt и переименовать в orientdb:

$ sudo mv ~/orientdb-community-2.2.18 /opt/orientdb

Теперь у вас установлена OrientDB. Если вы используете сервер с ограниченной памятью, то в следующем шаге сможете настроить OrientDB так, чтобы она использовала меньше оперативной памяти. Если необходимости в этом нет, сразу переходите к третьему шагу и запускайте сервер.

Шаг 2: настройка OrientDB

По умолчанию демон OrientDB предполагает, что будет доступно по меньшей мере 2 Гб оперативной памяти, и, если памяти будет меньше, он просто не запустится – вы увидите вот такой вывод об ошибке, если попробуете его запустить:

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.

Однако есть способ запустить OrientDB даже в том случае, если у вас есть всего 512 Мб оперативной памяти. Для этого нужно внести некоторые изменения в настройки, а именно в файл server.sh. Откройте его в редакторе nano или в любом другом на ваш выбор:

$ sudo nano /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. По умолчанию они установлены на 2 Гб.

Вам нужно задать новые показатели, однако учитывайте, что Xms – не меньше 128 Мб, иначе OrientDB не запустится. Можно поставить 128 Мб и 256 Мб соответственно, как на примере ниже:

# ORIENTDB memory options, default to 2GB of heap.

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

Сохраните и закройте файл. Далее перейдем к запуску OrientDB.

Шаг 3: запуск сервера

Перейдите в директорию установки СУБД:

$ cd /opt/orientdb

А затем запустите сервер:

$ sudo bin/server.sh

При первом запуске вам нужно будет задать пароль суперпользователя OrientDB. Это будет постоянный аккаунт OrientDB, который будет использоваться для получения доступа, например, к OrientDB Studio, веб-интерфейсу, позволяющему настраивать OrientDB. Если вы не зададите пароль, то он будет сгенерирован автоматически. Однако удобнее все же задать пароль самостоятельно.

По появляющейся на экране информации вы сможете понять, к примеру, какие порты относятся к OrientDB и OrientDB Studio.

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.16 (build UNKNOWN@r98dbf8a2b8d43e4af09f1b12fa7ae9dfdbd23f26; 2017-02-02 07:01:26+0000).
[OServer]

Теперь OrientDB запущена в текущем терминале. Давайте убедимся, что сервер работает по подходящим портам.

Откройте второй терминал и подключитесь к этому же серверу через SSH.

$ ssh sammy@ip_вашего_сервера

В этом же втором терминале для того, чтобы убедиться, что сервер использует порты 2424 (для бинарных соединений) и 2480 (для HTTP-соединений), введите следующую команду:

$ sudo netstat -plunt | grep -i listen

Выдача должна содержать упоминания обоих портов. К примеру:

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

Теперь, когда сервер запущен, и вы убедились, что он работает, необходимо подсоединиться к консоли OrientDB.

Шаг 4: подсоединение к консоли

Консоль OrientDB – это интерфейс командной строки для работы с приложением. Для того, чтобы запустить консоль, введите:

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

Вы увидите примерно такой вывод:

OrientDB console v.2.2.16 (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

После успешного соединения вы увидите следующее:

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

Если этого не произошло, убедитесь в том, что пароль введен правильно, а OrientDB до сих пор запущена в первом терминале.

Наконец, когда все готово, наберите exit во втором терминале для того, чтобы выйти из консоли OrientDB.

Итак, к концу этого шага вы установили и запустили OrientDB, а также подсоединились к ней. Это значит, что OrientDB работает, но также это означает, что вам нужно будет запускать ее вручную всякий раз, когда вы перезагружаете сервер. Поэтому на следующих этапах руководства нужно будет задать такие настройки OrientDB, чтобы она запускалась так же, как все остальные демоны на вашем сервере.

Шаг 5: OrientDB как демон

Вы установили OrientDB, но на данный момент это только несколько скриптов на сервере. Поэтому в этом разделе мы настроим OrientDB так, чтобы СУБД запускалась в системе в качестве демона. Для этого нужно будет отредактировать скрипт /opt/orientdb/bin/orientdb.sh и конфигурационный файл /opt/orientdb/config/orientdb-server-config.xml.

Первым делом используйте CTRL+C в окне первого терминала для того, чтобы остановить работающую OrientDB. Также вы можете уже закрыть второй терминал.

Начнем с редактирования скрипта /opt/orientdb/bin/orientdb.sh для того, чтобы указать, под каким пользователем будет работать OrientDB, а также для указания директории установки.

Начните с создания пользователя. В этом руководстве в качестве такого пользователя будет выступать orientdb. Следующая команда также создаст и группу orientdb:

$ sudo useradd -r orientdb -s /sbin/nologin

Отдайте права директории и файлов OrientDB только что созданному пользователю и группе, используя следующую команду:

$ sudo chown -R orientdb:orientdb /opt/orientdb

Теперь перейдем к скрипту orientdb.sh , куда необходимо внести несколько изменений:

$ sudo nano /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 соответственно.

# 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

Шаг 6: установка стартап скрипта Systemd

OrientDB поставляется с системным Systemd файлом, который отвечает за запуск и остановку сервиса. Этот файл необходимо копировать в директорию /etc/systemd/system:

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

Несколько настроек в этом файле необходимо изменить, поэтому откройте его в редакторе:

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

Переменные User, Group и ExecStart в блоке Service нужно изменить на те, которые соответствуют данным вашей установки. Пользователя и группу вы установили в 5 шаге (если вы использовали предложенный в руководстве вариант, то это orientdb). ExecStart указывает путь до скрипта, который должен начинаться с /opt/orientdb, если вы следовали данному руководству.

. . .

[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

Вывод будет примерно таким, как показан ниже. Обратите внимание на Active: active (running).

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
. . .

Если сервер не запустился, изучите вывод для того, чтобы понять, в чем проблема.

Шаг 7: OrientDB Studio

OrientDB Studio – это веб-интерфейс для работы с OrientDB. Он полезен для тестирования, однако в целях безопасности лучше полностью запретить доступ к нему.

Если вы хотите включить доступ к нему для тестирования, необходимо добавить новое правило в фаервол. По умолчанию порт OrientDB Studio – 2480, поэтому вам нужно открыть доступ к этому порту.

$ sudo ufw allow 2480

Затем перезапустите фаервол:

$ sudo systemctl restart ufw

Для того, чтобы подсоединиться к OrientDB Studio, введите в своем браузере http://ip_вашего_сервера:2480. После этого вы увидите экран авторизации.

Вы можете авторизоваться в качестве суперпользователя, используя пароль, который вы задали ранее.

Заключение

Теперь у вас есть установленная OrientDB на вашем сервере с Ubuntu 16.04. Вы отредактировали ее настройки и настроили ее запуск в качестве демона. Следующее, о чем стоит подумать – о безопасности базы данных, о чем я расскажу в другой статье.

VPS/VDS на Таймвэб

Комментарии