OrientDB, grafik ve doküman veritabanları ile çoklu model yapısında olan bir NoSQL veritabanıdır. Java uygulaması olması sebebi ile Java’nın çalıştığı tüm işletim sistemleri üzerinde çalışabilmektedir. Ayrıca ACID uyumlu olması sebebi ile yatay da çok kolay bir şekilde ölçeklenebilmektedir.

Bu dokümanda Ubuntu 16.04 üzerine OrientDB kurulumunu anlatacağız.

Gereksinimler

Öncelikle OrientDB kurulumu ve yapılandırmasına geçmeden önce CloudEOS‘ a kayıt olarak bir adet Ubuntu 16.04 sunucunuzu oluşturmalısınız.

Kuruluma başlamadan önce Ubuntu sunucular için güvenlik açısından sudo yetkilerine sahip bir kullanıcı oluşturmanızı tavsiye ediyoruz.

Yeni Kullanıcı Ekleme

Sisteme size verilen şifre ve root kullanıcısı ile giriş yaptıktan sonra

$ adduser yenikullanici

ile kullanıcı oluşturmuş oluyoruz.

$ usermod -aG sudo yenikullanici

komutu ile de oluşturduğumuz kullanıcıya sudo yetkilerini vermiş olduk. Şimdi OrientDB yapılandırma adımlarına bu oluşturduğumuz sudo yetkili kullanıcı ile devam edeceğiz.

Java kurulumu makalemizden JDK 8 adımını uygulamanız gerekmektedir.

Ubuntu 16.04 üzerinde ideal olarak minimum sistem gereksinimi 2 GB hafızadır, ancak 512MB üzerinde de çalışabilmektedir. Size uygun 2 GB hafızalı paketi seçerek sunucunuzu CloudEOS üzerinde oluşturabilirsiniz.

OrientDB Kurulumu

Bu adımda OrientDB’ nin en son topluluk sürümünü indireceğiz ve /opt dizine yükleyeceğiz. Bu dizin Linux’de üçüncü parti yazılımların kurulup kullanılması için ayrılmış bir dizindir.

İlk olarak paket depomuzu güncelleyelim.

$ sudo apt-get update

Şimdi en son topluluk sürümünü indireceğiz. Uygulamamızda 2.2.26 versiyonunu kullandık ancak proje indirme sayfasından kontrol ederek son sürümü indirebilir ve sürüm numara kısmını kodda değiştirebilirsiniz.

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

Tar formatında sıkıştırılmış dosyamızı çıkartacağız.

$ tar -zxvf orientdb-community-2.2.26.tar.gz

orientdb-community-2.2.26 olarak isimlendirilen bir klasörümüz oldu. Bu dosyayı /opt altına orientdb klasör isimli olarak taşıyacağız.

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

OrientDB şu anda yüklendi. Eğer hafıza/memory/ram kısıtlı sunucunuz var ise OrientDB yapılandırmasını düşük hafıza kullanımı olarak yapılandırmak için sıradaki adımı uygulayabilirsiniz. Eğer böyle bir kısıtınız yok ise bu adımı geçerek sonraki adımdan devam edebilirsiniz.

Düşük Hafıza Kullanımı için OrientDB’nin Yapılandırılması (İsteğe Bağlı)

Varsayılan olarak OrientDB daemon programı en düşük 2 GB RAM alanı istemektedir ve daha azı ile karşılaştığında log dosyasına aşağıdaki gibi hatalar vermektedir.

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.

Şu an 512MB RAM kullanımında ki yapılandırmadan bahsedeceğiz. server.sh dosyası içindeki ayar fonksiyonu ile daha az RAM kullanımı için değişiklik yapacağız.

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

Dosya içinde yukarıdaki alanı bulup bu kısmı aşağıdaki şekilde değiştireceğiz.

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

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

Dosyayı kaydederek çıkalım.

Sunucunun Başlatılması

Eğer düşük RAM kullanıyorsanız üstteki adım sonrası eğer 2 GB ve daha fazla RAM alanınız var ise direkt bu adımdan devam edebilirsiniz.

$ cd /opt/orientdb

İlgili dizin içindeyken sunucuyu başlatalım.

$ sudo bin/server.sh

Sunucuyu ilk defa başlatırken, root kullanıcı için şifre belirleme ekranı karşınıza çıkacaktır. Bu OrientDB içindeki kendi hesabıdır ve OrientDB yönetimi için web tabanlı arayüz olan OrientDB Studio gibi arayüzlere erişim için kullanılır. Eğer bir şifre belirlemezseniz otomatik olarak bir adet yaratılacaktır. Ancak sizin kendi şifrenizi belirlemeniz daha uygundur.

Aşağıdaki gibi OrientDB Studio’ nun dinlediği portları gösteren bir çıktı ile karşılaşacaksınız.

2017-07-14 12:23:04:306 INFO Listening binary connections on 0.0.0.0:2424 (protocol v.36, socket=default) [OServerNetworkListener]
2017-07-14 12:23:04:310 INFO Listening http connections on 0.0.0.0:2480 (protocol v.10, socket=default) [OServerNetworkListener]
. . .
2017-07-14 12:23:04:372 INFO OrientDB Studio available at http://192.168.0.30:2480/studio/index.html [OServer]
2017-07-14 12:23:04:374 INFO OrientDB Server is active v2.2.26 (build UNKNOWN@r98dbf8a2b8d43e4af09f1b12fa7ae9dfdbd23f26; 2017-07-12 08:11:26+0000). 
[OServer]

Bunu gördüyseniz OrientDB şu andaki terminalimizde çalışmaya başlamıştır. Şimdi uygun portları dinleyen sunucumuzu doğrulayalım.

İkinci bir terminal açarak ssh bağlantımızı yapalım.

$ ssh yenikullanici@sunucu-ip-adresi

İkinci terminaldeyken sunucumuzun 2424 (binary bağlantılar için) ve 2480 (HTTP bağlantıları için) portlarını dinlediğini aşağıdaki gibi doğrulayalım.

$ sudo netstat -plunt | grep -i listen

Aşağıdakine benzer bir çıktı ile karşılaşacaksınız.

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

Konsol Bağlantısı

OrientDB konsolu, uygulama ile çalışan komut satırı arayüzüdür. Başlatmak için,

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

Aşağıdaki gibi bir ekran ile karşılaşacaksınız.

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

Şimdi sunucu instance’ ına bağlanalım. Daha önceki adımda belirlediğiniz şifreyi kullanmalısınız.

orientdb> connect remote:127.0.0.1 root root-sifresi

Aşağıdaki gibi bir çıktı ile karşılaşacaksınız.

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

İşlem sonrası exit komutu ile çıkış yapabiliriz.

orientdb> {server-remote:127.0.0.1/} exit

Şu anda OrientDB kurulumunu yaptık, manuel başlattık ve bağlantı sağladık. Bu OrientDB’ nin çalıştığını göstermektedir ancak her sunucu başlamasında manuel olarak başlamasının yerine daemon modda Systemd tarafından otomatik olarak başlatılması için aşağıdaki adımdan devam edelim.

Daemon Olarak OrientDB’nin Yapılandırılması

Şu anda OrientDB kuruldu ancak henüz sunucu üzerinde bir demet script olarak bulunmaktadır. Bu adımda bir daemon olarak çalışmasını sağlayacağız. Bunun için /opt/orientdb/bin/orientdb.sh script dosyasını ve /opt/orientdb/config/orientdb-server-config.xml ayar dosyasını düzenleyeceğiz.

İlk olarak ilk terminalde CTRL+C kombinasyonunu yapacağız ve ikinci terminali kapatacağız.

İlk olarak sistem kullanıcısını oluşturacağız. Bu örnekte orientdb adında bir kullanıcı ve yine orientdb adında bir grup oluşturduk.

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

Bu oluşturduğumuz kullanıcı ve gruba OrientDB dizin ve dosyaları için sahiplik vereceğiz.

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

Şimdi orientdb.sh script’ inde bazı değişiklikler yapacağız.

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

Yukarıdaki alanı aşağıdaki gibi güncelleyelim.

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

Dosyayı kaydederek çıkalım.

Şimdi ayar dosyasının izinlerini değiştirerek yetkisiz kullanıcıların okumasını önleyelim.

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

Systemd Başlangıç Script’ i Oluşturulması

OrientDB servisin durduruması ve başlatılmasından sorumlu bir Systemd tanımlayıcı dosyası ile gelmektedir. Bu servisi /etc/systemd/system dizinine kopyalamalıyız.

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

Burada bazı değişiklikler yapacağız.

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

Dosya içinde aşağıdaki alanları bulup ilgili değişiklikleri aşağıdaki gibi yapalım.

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

Dosyayı kaydederek çıkalım.

Daha sonra tüm birimleri yeniden yüklemek için aşağıdaki komutu çalıştıralım.

$ sudo systemctl daemon-reload

OrientDB servisini başlatalım.

$ sudo systemctl start orientdb

Sunucu yeniden başladığında otomatik çalışmasını sağlamak için aşağıdaki komutu çalıştıralım.

$ sudo systemctl enable orientdb

Başladığını aşağıdaki komut ile kontrol edelim.

$ sudo systemctl status orientdb
● orientdb.service - OrientDB Server
Loaded: loaded (/etc/systemd/system/orientdb.service; disabled; vendor preset: enabled)
Active: active (running) since Sat 2017-07-14 17:25:19 CST; 11s ago
Main PID: 22803 (java)
Tasks: 14
Memory: 126.4M
...

OrientDB Studio Bağlantısı

OrientDB Studio, OrientDB yönetimi için hazırlanmış web tabanlı bir arayüzdür.

Default olarak OrientDB Studio 2480 portunu dinlemektedir. Eğer sunucunuz üzerinde aktif güvenlik duvarı bulunuyorsa 2480 portuna izin vermeniz gerekmektedir.

$ sudo ufw allow 2480

Daha sonrasında UFW’ yi baştan başlatarak bu değişikliği almasını sağlayalım.

$ sudo systemctl restart ufw

OrientDB Studio’ ya bağlanmak için tercih ettiğiniz bir browser’ dan http://sunucu-ip-adresi:2480 ile bağlantı sağlayabilirsiniz. Kullanıcı adı olarak root ve daha önce orientdb konfigürasyonu sırasında belirlediğiniz root kullanıcısı şifresi ile giriş yapabilirsiniz.

Ayrıca OrientDB’ nin içerdiği admin, reader veya writer kullanıcıları ile GratefulDeadConcerts veritabanını seçerek giriş yapabilir ve kullanabilirsiniz.

Bu dokümanda, makalede yazan komutları, çözümleri uygulamak tamamen kullanıcının kendi sorumluluğunda ve insiyatifinde olan bir konudur, mevcut komutların uygulanması ile doğabilecek, oluşabilecek her türlü sorumluluk ve sonuçlar kullanıcının kendisine aittir, CloudEOS’ un bu konuda herhangi bir sorumluluğu bulunmamaktadır.