Neo4j, verileri geleneksel ilişkisel veritabanlarındaki (RDBMS) tablo ve satırlar yerine Düğümler (Nodes), İlişkiler (Relationships) ve Özellikler (Properties) şeklinde saklayan açık kaynaklı ve ACID uyumlu lider bir Graf Veritabanı Yönetim Sistemidir (Graph Database Management System).
İlişkisel veritabanlarında karmaşık JOIN sorguları ile yüksek maliyet oluşturan bağlantılı veri yapıları, Neo4j üzerinde yerel ilişkiler olarak tutulur. Bu sayede milyarlarca veri arasındaki bağlantılar milisaniyeler seviyesinde sorgulanabilir. Neo4j, sorgulama dili olarak son derece esnek ve bildirimsel bir dil olan Cypher (CQL) yapısını kullanır. Dolandırıcılık tespiti (fraud detection), kimlik ve erişim yönetimi, öneri sistemleri, ağ/altyapı haritalama ve bilgi grafikleri (knowledge graphs) gibi yüksek oranda ilişkili verilerin işlendiği senaryolarda yaygın olarak tercih edilmektedir.
Neo4j kurulumuna geçilmeden önce temel işletim sistemi altyapısının hazırlanması gerekmektedir.
Ubuntu server işletim sisteminin yüklenmesi gerekmektedir. İlgili sayfadan ubuntu server işletim sistemi indirilir. Resmi indirme adresi olan ubuntu.com/download/server adresinden Ubuntu Server 24.04 LTS (veya 22.04 LTS) .iso dosyasını indirin. İndirme işleminden sonra sana makine üzerinden kurulum işlemi yapılmaktadır.

İndirme işleminden sonra sanallaştırma platformunuz üzerinde gerekli kaynak tahsisini (CPU, RAM, Disk) yapılması gerekmektedir. Gerekli kaynak tahsisi yaptıktan sonra Bitir deyip işletim sistemi kurulumuna geçiyoruz.

Gelen önyükleme ekranında “Try or Install Ubuntu Server” seçeneğine basıp ilerleyin.

Dil ve Klavye:
- Language: English (Sunucu ortamlarında sistem loglarının takibi ve tespiti için İngilizce önerilir).
- Keyboard layout: Turkish seçin.


Standart Ubuntu kurulumu için ilgili seçenek değiştirilmeden Done butonuna basılır.

Otomatik IP alması için DHCP seçilmesi gerekir. Sunucuya sabit IP vermek için ilgili ethernet kartını seçip Edit IPv4 -> Manual yapabilir ya da atanan DHCP IP’sini not edebilirsiniz. İlgili ip değeri belirlendikten sonra bir sonraki bölüme geçilmektedir.

Gelen Proxy ekranında herhangi bir özel yönlendirme yoksa işlem yapmadan Done diyerek bir sonraki ekrana geçin.
Kurulum sihirbazı; sistem güncellemelerini, dil paketlerini ve ek yazılımları resmi Linux depolarından (repository) indirmek için internet bağlantısına ihtiyaç duyar.
Şirket veya veri merkezi ağlarında güvenlik nedeniyle cihazların doğrudan dış internete erişimi engellenmiş olabilir. Tüm HTTP/HTTPS trafiği yetkili bir proxy sunucusundan (örn. Squid, Zscaler) geçtiği durumlarda kurulum aracına bu adres tanıtılır.
Doğrudan internete bağlanabiliyorsanız bu alanı boş bırakarak “Done” seçeneği ile ilerleyebilirsiniz. Sunucumuz internete bağlı olmadığı için Done deyip bir sonraki ekrana geçiş yapılır.

Gelen ekranda ilgili bölümlerin seçili olması gerekmektedir.
Use an entire disk seçeneğini işaretleyin. “Set up this disk as an LVM group” kutucuğunu işaretli bırakın (ileride disk boyutunu kolayca artırmak için).

Gelen ekranda tekrardan Done deyip bir sonraki ekrana geçilir.

Gelen ekranda continue dedikten sonra bir sonraki ekrana geçilir.

Gelen ekranda sunucu ismi kullanıcı ve şifre oluşturduktan sonra Continue deyip bir sonraki ekrana geçilir.

Gelen ekranda herhangi bir değişiklik yapmadan Continue deyip bir sonraki ekrana geçilir.

SSH Setup ekranında [X] Install OpenSSH server seçeneğini mutlaka işaretleyin (MobaXterm veya PuTTY ile uzaktan bağlanabilmek için).

Ek snap paketlerini işaretlemeden Done diyerek geçin.

Kurulum bittiğinde ekranın altında Reboot Now seçeneği çıkar.

Sunucu üzerine başarılı bir şekilde bağlantı gerçekleşir.

Mobaxterm üzerinden SSH bağlantısı başarılı bir şekilde yapılmaktadır.

Bağlantı sağlanmış olundu.

Windows tarayıcınızdan tıklayarak indirip USB bellek ile internetsiz Ubuntu sunucunuza aktarabilirsiniz.
İnterneti olan Windows bilgisayarınızdan ilgili linke tıklayarak indirim işlemi yapılmaktadır. Dosya hiçbir engelle karşılaşmadan doğrudan Windows bilgisayarınıza inecektir:
İlgili dosya internet olan açık bilgisayar üzerine indirilir.

Winscp programı ile Linux sunucusuna bağlantı gerçekleştirilir.

WinSCP ile dosyayı yükleyeceğiniz en uygun geçici konum /tmp dizinidir.

İlgili klasöre kopyalama işlemi yapılmaktadır.

MobaXterm, PuTTY veya WinSCP terminali üzerinden SSH ile sunucunuza bağlanın ve sırasıyla şu komutları çalıştırın:
1. /tmp dizinine geçin
cd /tmp
2. .tar.gz arşivini bulunduğunuz yere çıkarın. Dosya adı neo4j-community-5.26.0-unix.tar.gz
tar -zxvf neo4j-community-5.26.0-unix.tar.gz

3. Çıkarılan klasörü kalıcı sistem dizinine (/usr/share/neo4j) taşıyın. Yukarıdaki dizinde çıkardığımız dosyanın ismi neo4j-community-5.26.0 aşağıda görülmektedir. Aşağıdaki komut çalışıldıktan sonra neo4j klasörü oluşmaktadır.
sudo mv neo4j-community-5.26.0 /usr/share/neo4j
Not: neo4j-community-5.26.0-unix.tar.gz indirilen dosyasının adıdır.

İlgili komut ile de görülebilir.
ls -l /usr/share/neo4j

Yukarıdaki işlemlerden sonra kaldığımız yerden devam edelim. Neo4j 5 sürümünün çalışabilmesi için sistemde Java 17 kurulu olmalıdır. Terminalde kontrol edin:
java -version
Sunucu üzerinde java kurulu olmadığı görülüyor. Sunucunun internet erişimi olmadığı için ekranda önerilen sudo apt install … komutları çalışmayacaktır. Sürümlere göre install komutlarını vermektedir.

İnternetli Windows bilgisayarınızdan indirdiğiniz Adoptium Temurin Java 17 .deb dosyasını WinSCP ile Ubuntu sunucunuzun /tmp klasörüne atın. İlgili bağlantıdan Linux için java indirimi yapılır.


Tar uzantılı indirildiği için aşağıdaki yöntemle oluşturulan yeni klasöre java dosyaları atılmaktadır.
1. Dosyanın bulunduğu /tmp dizinine geçin
cd /tmp
2. Sistemde Java klasörünü oluşturun. Bir sonraki adımda tar uzantılı dosyayı ilgili klasör altına almış olacağız.
sudo mkdir -p /usr/lib/jvm
3. .tar.gz arşivini /usr/lib/jvm klasörüne çıkartın. İlgili java dosyasının adı “OpenJDK17U-jdk_x64_linux_hotspot_17.0.21_9.tar.gz”
sudo tar -zxvf OpenJDK17U-jdk_x64_linux_hotspot_17.0.21_9.tar.gz -C /usr/lib/jvm/
İlgili dizin altına dosyalarımız kopyalamış olduk.

Java’yı çıkardığınız klasörün tam yolunu kontrol edin

ls -la /usr/lib/jvm


Java hazır olduğuna göre Neo4j servisini başlatabilirsiniz:
1. Neo4j’i sistem servisi olarak kaydedin
sudo /usr/share/neo4j/bin/neo4j install-service
Klasör ilgili dizin altına taşındığı için ilgili uzantı yolu belirtilmektedir.

Yukarıdaki komutu çalıştırıldığında aşağıdaki hata mesajıyla karşılaşılır.

Önce sistemin Java’yı sorunsuz görmesi için sembolik link oluşturun ve JAVA_HOME değişkenini kalıcı olarak yazın:
1. /usr/bin/java klasörünü oluşturun. Başlangıçta indirilen java dosyası /temp klasöründen /usr/lib/jvm klasörüne taşınmıştı. Şimdi ise ilgili dosyayı /usr/bin/java altına ekliyoruz. Aşağıdaki resimde görülmektedir.
sudo ln -sf /usr/lib/jvm/jdk-17.0.21+9/bin/java /usr/bin/java

2. JAVA_HOME değişkenini /etc/environment dosyasına ekleyin.
echo 'JAVA_HOME="/usr/lib/jvm/jdk-17.0.21+9"' | sudo tee -a /etc/environment

3. Değişkeni mevcut oturuma yükleyin
source /etc/environment
Değişkeni doğrudan komut içerisinde tanımlayarak Neo4j’i sistem servisi olarak kaydedin:
sudo JAVA_HOME=/usr/lib/jvm/jdk-17.0.21+9 /usr/share/neo4j/bin/neo4j install-service

Neo4j 5.x sürümünde (.tar.gz arşiv kurulumlarında) install-service komutu kaldırılmıştır. Bu nedenle sistem Unmatched argument at index 0: ‘install-service’ uyarısı vermektedir.
Arşivden çıkarılan Neo4j’i Ubuntu üzerinde arka planda systemd servisi olarak çalıştırmak için servis dosyasını kendimiz tanımlamalıyız.
Aşağıdaki adımları sırasıyla uygulayarak kurulumu tamamlayabilirsiniz:
Servis dosyasını nano editörü ile açın:
sudo nano /etc/systemd/system/neo4j.service

Açılan boş dosyaya aşağıdaki blok metnini yapıştırın. Kaydet(ctrl+O) ve çık(ctrl+X). Dikkat edilirse ilgili klasörler bizim oluşturduğumuz klasörlerdir.
Unit]
Description=Neo4j Graph Database
After=network.target
[Service]
Type=forking
User=root
Environment=JAVA_HOME=/usr/lib/jvm/jdk-17.0.21+9
ExecStart=/usr/share/neo4j/bin/neo4j start
ExecStop=/usr/share/neo4j/bin/neo4j stop
ExecReload=/usr/share/neo4j/bin/neo4j restart
RemainAfterExit=yes
LimitNOFILE=60000
[Install]
WantedBy=multi-user.target

Sistem servis listesini yenileyin, Neo4j’i açılışa ekleyin ve servisi başlatın:
1. Systemd konfigürasyonunu yenileyin
sudo systemctl daemon-reload
2. Neo4j servisini sistem açılışına ekleyin
sudo systemctl enable neo4j
3. Servisi başlatın
sudo systemctl start neo4j
4. Servis durumunu kontrol edin (active / running görünmelidir)
sudo systemctl status neo4j

Conf dosyasındaki varsayılan 127.0.0.1 kısıtlamasını kaldırın. Dış ağ bağlantısını açmak için bu işlem yapılmaktadır. Satırı bulun ve başındaki # işaretini kaldırarak aşağıdaki hale getirin Uzaktan (Neo4j Browser ve Neo4j Desktop) erişim sağlayabilmek için konfigürasyon dosyasını düzenleyin:
| sudo nano /usr/share/neo4j/conf/neo4j.conf |

Servis tekrardan başlatılır.
sudo systemctl restart neo4j
Not: Yapılan her değişiklikten servis tekrardan başlatılmaktadır.
Firewall üzerinde kısıtlamalara takılmamak için aşağıdaki portlara izin verilmesi gerekmektedir.
sudo ufw allow 22/tcp
sudo ufw allow 7474/tcp
sudo ufw allow 7687/tcp
sudo ufw enable
cypher-shell komutunu çalıştırdığımızda ilgili komutu bulamadığına dair hata mesajı alırız.

Neo4j üzerinde ilk şifre değişimini yapmak için aşağıdaki komut kullanılır.
JAVA_HOME=/usr/lib/jvm/jdk-17.0.21+9 /usr/share/neo4j/bin/cypher-shell
Kullanıcı: neo4j | Varsayılan Şifre: neo4j

Sistem sizden yeni güçlü bir şifre belirlemenizi isteyecektir. Belirledikten sonra :exit ile çıkın.

Neo4j üzerinde veritabanlarını görebiliriz.

Tekrardan Linux üzerinde cypher-shell ile neo4j yapısına bağlanmak için aşağıdaki komut bir defa çalıştırıldıktan sonra herhangi bir uzantı yazmadan cypher-shell. İle bağlanılır.

Hata alınırsa ilgili komutu bağlayabilirsiniz.
| sudo ln -sf /usr/share/neo4j/bin/cypher-shell /usr/bin/cypher-shell |
Tarayıcıdan (Neo4j Browser): http://192.168.56.103:7474 adresine gidin. Connection URL olarak bolt:// 192.168.56.103:7687 yazıp belirlediğiniz kullanıcı adı ve yeni şifreyle giriş yapın. 7474 giriş ekranın geldiği port bağlantı sağladıktan sonra 7687 adresiyle giriş yapılır. bolt:// ilgili ifade sadece local desktop zamanında geçerlidir. Browser üzerinden bağlantıda herhangi bir şey istenmez.
Not: 7474 Browser arayüz giriş portudur. Arayüz yüklendikten sonra veri aktarımı 7687 (Bolt) portu üzerinden sağlanır. bolt:// protokolü doğrudan browser erişiminde standarttır.

İlgili bağlantı bilgilerimizi yazdıktan sonra başarılı bir şekilde bağlantı gerçekleşir.

Bağlantı sağladıktan sonra işlemlerimizi rahatlıkla yapabiliriz. Sol alt tarafta bağlantı adresi, database ve bağlantı sağlanan kullanıcı görülmektedir.

Kendi Bilgisayarınızdan (Neo4j Desktop) kurulumu için ilgili linkten https://neo4j.com/download/ indirme işlemi yapılmaktadır. İndirip kurduğunuz Neo4j Desktop uygulamasını açın -> Add -> Remote Connection -> IP ve Bolt portunu (7687) girerek sunucuya bağlanın.

Gelen bağlantı ekranında kullanıcı adını ve şifresini girdikten sonra Verify and add deyip bağlantı sağlıyoruz.

Bağlantı sağlarken hata alırsak protocol kısmının değişmesi gerekmektedir. Desktop ortamından bağlanılacağı zaman protocol kısmının bolt:// olarak değişmesi gerekmektedir.

Başarılı bir şekilde bağlantımız gerçekleşir.

İlgili bölümden connect olduktan sonra önceden oluşturulan nodelar ve ilişkiler görülmektedir.


Bu makalede Neo4j offline kurulumunu bitirmiş olduk. Sizde internet ortamı olmayan bir ortamda kurmak isterseniz bu şekilde kurulumunu başarılı bir şekilde yapabilirsiniz.
“Kalpler Ancak Allah’ı Anmakla Huzur Bulur. “Rad-28