Giriş ve Ön Gereksinimler
Apache CouchDB, NoSQL veritabanları arasında öne çıkan, doküman tabanlı ve dağıtık bir veritabanı sistemidir. Verileri JSON formatında depolar, RESTful API üzerinden erişim sağlar ve yüksek kullanılabilirlik, esneklik ve ölçeklenebilirlik sunar. Genellikle Erlang programlama dili ile yazılmıştır.
Bu rehberde, Ubuntu 13.04 x64 VPS üzerinde CouchDB’yi kaynak koddan nasıl kuracağınızı adım adım öğreneceksiniz. Kaynak koddan kurulum, size en güncel sürümlere erişme, belirli derleme seçeneklerini kullanma ve sisteminizle daha entegre bir yapılandırma yapma esnekliği sunar. Ubuntu 13.04’ün eski bir sürüm olduğunu ve üretim ortamları için güncel LTS (Uzun Süreli Destek) sürümlerinin tercih edilmesi gerektiğini belirtmek önemlidir. Ancak bu rehber, spesifik olarak Ubuntu 13.04 gereksinimi olan kullanıcılar içindir.
Ön Koşullar
Kuruluma başlamadan önce aşağıdaki maddelerin hazır olduğundan emin olun:
* Ubuntu 13.04 x64 VPS: 64-bit Ubuntu 13.04 işletim sistemine sahip bir sanal sunucu.
* Root veya Sudo Yetkileri: Kurulum için gerekli paketleri yüklemek ve sistem genelinde değişiklikler yapmak üzere root erişimi veya sudo yetkisine sahip bir kullanıcı.
* İnternet Bağlantısı: Gerekli bağımlılıkları ve CouchDB kaynak kodunu indirmek için aktif bir internet bağlantısı.
* Temel Linux Bilgisi: Komut satırı kullanımı ve dosya düzenleme konularında temel düzeyde bilgi sahibi olmak.
Kuruluma başlamadan önce sunucunuzdaki paket listesini güncelleyip mevcut paketleri yükseltmek iyi bir alışkanlıktır:
sudo apt-get update
sudo apt-get upgrade -y
Bu komutlar, sisteminizin en güncel paket bilgisine sahip olmasını ve mevcut tüm yazılımların son sürümlerine güncellenmesini sağlar.
Gerekli Bağımlılıkların Kurulumu
CouchDB’yi kaynak koddan derlemek için bir dizi bağımlılığa ihtiyacımız var. Bu bağımlılıklar arasında Erlang (CouchDB’nin yazıldığı dil), Mozilla SpiderMonkey JavaScript motoru, ICU kütüphaneleri, OpenSSL, libcurl ve derleme araçları bulunmaktadır.
Derleme Araçları ve Temel Kütüphaneler
Öncelikle, kaynak koddan derleme yapmak için gerekli olan temel araçları ve bazı sistem kütüphanelerini kuralım:
sudo apt-get install -y build-essential autoconf automake libtool pkg-config
sudo apt-get install -y libicu-dev libcurl4-openssl-dev
* build-essential: gcc, g++, make gibi temel derleme araçlarını içerir.
* autoconf, automake, libtool: Otomatik yapılandırma ve derleme süreçleri için gereklidir.
* pkg-config: Derleme sırasında kütüphane bağımlılıklarını bulmaya yardımcı olur.
* libicu-dev: Uluslararası Bileşenler için Unicode kütüphanesi (ICU). CouchDB tarafından uluslararasılaştırma ve yerelleştirme için kullanılır.
* libcurl4-openssl-dev: HTTP istekleri için kullanılan curl kütüphanesinin geliştirme dosyaları. OpenSSL desteği ile birlikte gelir.
Erlang Kurulumu
CouchDB, Erlang ile yazıldığı için sisteminizde uygun bir Erlang sürümünün yüklü olması şarttır. Ubuntu 13.04 depoları genellikle CouchDB 1.x sürümleri için yeterli olan Erlang sürümlerini sunar.
sudo apt-get install -y erlang-dev erlang-nox
* erlang-dev: Erlang geliştirme dosyalarını içerir.
* erlang-nox: Sunucu ortamları için Erlang çalışma zamanını (grafiksel arayüzsüz) kurar.
Erlang kurulumunu doğrulayalım:
erl -version
Çıktı olarak Erlang’ın yüklü sürümünü görmelisiniz (örneğin, Erlang (SMP,ASYNC_THREADS) (BEAM) emulator version R16B03).
Mozilla SpiderMonkey Kurulumu
CouchDB, görünüm oluşturma (map/reduce) ve diğer JavaScript tabanlı işlevler için bir JavaScript motoruna ihtiyaç duyar. Eski CouchDB sürümleri genellikle Mozilla SpiderMonkey’i kullanır.
sudo apt-get install -y libmozjs185-dev
* libmozjs185-dev: SpiderMonkey 1.8.5 motorunun geliştirme dosyaları.
Bu bağımlılıkları kurduktan sonra, CouchDB kaynak kodunu indirmeye ve derlemeye hazırız.
CouchDB Kaynak Kodunun İndirilmesi ve Derlenmesi
Şimdi CouchDB’nin kaynak kodunu indirecek, derleyecek ve sistemimize kuracağız. Bu rehber için, eski Ubuntu 13.04 ile uyumlu ve yaygın olarak kullanılan CouchDB 1.6.1 sürümünü kullanacağız.
CouchDB Kaynak Kodunu İndirme
Öncelikle, kaynak kodunu indirmek için geçici bir dizine gidelim ve paketi indirelim:
cd /tmp
wget http://archive.apache.org/dist/couchdb/source/1.6.1/apache-couchdb-1.6.1.tar.gz
Ardından, indirilen tar.gz dosyasını açalım:
tar -zxvf apache-couchdb-1.6.1.tar.gz
cd apache-couchdb-1.6.1
CouchDB Kullanıcısı Oluşturma
Güvenlik nedenleriyle, CouchDB’nin kendi özel kullanıcısı altında çalışması önerilir. Bu kullanıcıya gerekli izinleri atayacağız.
sudo adduser --system --no-create-home --shell /bin/bash --group couchdb
Bu komut, couchdb adında bir sistem kullanıcısı ve grubu oluşturur. --no-create-home ev dizini oluşturmazken, --shell /bin/bash kullanıcının bir kabuğa sahip olmasını sağlar.
CouchDB’yi Derleme ve Kurma
Şimdi sıra CouchDB’yi derlemeye geldi. Derleme işlemi configure, make ve make install adımlarından oluşur. configure komutu, sisteminizdeki bağımlılıkları kontrol eder ve derleme ortamını hazırlar. --prefix parametresi ile CouchDB’nin kurulacağı dizini belirtiriz; genellikle /usr/local veya /opt tercih edilir. Biz /usr/local dizinini kullanacağız.
./configure --prefix=/usr/local \
--with-js-lib=/usr/lib/x86_64-linux-gnu \
--with-js-include=/usr/include/js
* --prefix=/usr/local: CouchDB’nin kurulacağı kök dizini belirtir.
* --with-js-lib=/usr/lib/x86_64-linux-gnu: SpiderMonkey kütüphanelerinin bulunduğu dizini belirtir.
* --with-js-include=/usr/include/js: SpiderMonkey başlık dosyalarının bulunduğu dizini belirtir.
Eğer configure adımında herhangi bir hata alırsanız, genellikle eksik bir bağımlılık veya yanlış bir yol belirtimi nedeniyledir. Hata mesajını dikkatlice okuyarak sorunu gidermeye çalışın.
configure başarılı olduktan sonra, derleme işlemini başlatalım:
make
Bu işlem sunucunuzun performansına bağlı olarak biraz zaman alabilir.
Derleme tamamlandığında, CouchDB’yi sisteminize kuralım. Bu adım için root yetkileri gereklidir.
sudo make install
Kurulumdan sonra, CouchDB’nin kurulduğu dizinin sahipliğini couchdb kullanıcısına verelim:
sudo chown -R couchdb:couchdb /usr/local/lib/couchdb /usr/local/bin/couchdb /usr/local/etc/couchdb /usr/local/var/lib/couchdb /usr/local/var/log/couchdb /usr/local/var/run/couchdb
Bu komut, CouchDB’nin tüm dosyalarının ve dizinlerinin couchdb kullanıcısı ve grubuna ait olmasını sağlar. Bu, CouchDB’nin güvenli bir şekilde kendi kullanıcısı altında çalışabilmesi için kritik öneme sahiptir.
CouchDB Yapılandırması ve Başlatılması
CouchDB başarıyla derlenip kurulduktan sonra, onu yapılandırmamız ve başlatmamız gerekiyor.
Temel Yapılandırma
CouchDB’nin yapılandırma dosyaları genellikle local.ini ve default.ini‘dir. default.ini varsayılan ayarları içerirken, local.ini bu ayarları geçersiz kılmak veya ek ayarlar yapmak için kullanılır.
Yapılandırma dosyaları /usr/local/etc/couchdb/ dizininde bulunur. local.ini dosyasını düzenleyerek CouchDB’nin davranışını değiştirebiliriz.
sudo nano /usr/local/etc/couchdb/local.ini
Aşağıdaki ayarları [chttpd] bölümüne ekleyebilir veya düzenleyebilirsiniz:
[chttpd]
; CouchDB'nin dinleyeceği IP adresi. Varsayılan olarak 127.0.0.1 (localhost)
; Eğer dışarıdan erişim istiyorsanız 0.0.0.0 yapın.
bind_address = 127.0.0.1
; CouchDB'nin dinleyeceği port. Varsayılan 5984.
port = 5984
Eğer dışarıdan erişim istiyorsanız bind_address değerini 0.0.0.0 olarak değiştirmeyi unutmayın. Ayrıca, yönetici kullanıcısı oluşturmak için [admins] bölümüne bir kullanıcı adı ve parola ekleyebilirsiniz:
[admins]
admin_kullanici_adi = admin_parolasi
Dosyayı kaydedip kapatın (CTRL+O, Enter, CTRL+X).
CouchDB’yi Başlatma
CouchDB’yi başlatmanın en basit yolu, couchdb kullanıcısı olarak doğrudan komut satırından çalıştırmaktır:
sudo -i -u couchdb /usr/local/bin/couchdb
Bu komut, CouchDB’yi arka planda çalıştırmaz. Konsol çıktısını görmek ve sorun gidermek için kullanışlıdır. Çıktıda herhangi bir hata yoksa, CouchDB’nin çalıştığını varsayabiliriz. Programı durdurmak için CTRL+C tuşlarına basabilirsiniz.
CouchDB’nin bir servis olarak başlamasını sağlamak için Upstart (Ubuntu 13.04’te kullanılan init sistemi) betiği oluşturabiliriz.
sudo nano /etc/init/couchdb.conf
Aşağıdaki içeriği dosyaya yapıştırın:
description "CouchDB"
start on runlevel [2345]
stop on runlevel [!2345]
respawn
respawn limit 10 5
exec /usr/local/bin/couchdb
Dosyayı kaydedip kapatın. Şimdi CouchDB servisini başlatabiliriz:
sudo start couchdb
Servisin durumunu kontrol etmek için:
sudo status couchdb
Kurulumu Doğrulama
CouchDB’nin düzgün çalışıp çalışmadığını doğrulamak için curl komutunu kullanabiliriz:
curl http://127.0.0.1:5984/
Eğer her şey yolundaysa, aşağıdaki gibi bir JSON çıktısı almalısınız:
{"couchdb":"Welcome","uuid":"","version":"1.6.1","vendor":{"name":"The Apache Software Foundation"}}
Ayrıca, web tabanlı arayüzü olan Futon’a da bir web tarayıcısı üzerinden erişebilirsiniz. Tarayıcınızda http://YOUR_VPS_IP_ADDRESS:5984/_utils/ adresine gidin (eğer bind_address‘i 0.0.0.0 olarak ayarladıysanız). Eğer bind_address‘i 127.0.0.1 olarak bıraktıysanız, sadece sunucu içinden erişebilirsiniz.
Sonuç ve Sıkça Sorulan Sorular
Bu rehberde, Ubuntu 13.04 x64 VPS üzerinde Apache CouchDB’yi kaynak koddan başarıyla kurmayı öğrendiniz. Bu süreç, gerekli bağımlılıkların yüklenmesini, kaynak kodun indirilip derlenmesini ve CouchDB’nin temel yapılandırmasını içerir. Kaynak koddan kurulum, sisteminize özel ayarlamalar yapma ve CouchDB’nin çalışma prensiplerini daha iyi anlama fırsatı sunar.
Unutmayın ki Ubuntu 13.04 eski bir işletim sistemi sürümüdür ve güvenlik güncellemeleri almamaktadır. Üretim ortamları için her zaman güncel ve desteklenen bir Ubuntu LTS sürümü kullanmanız önerilir.
Sıkça Sorulan Sorular (SSS)
S: make veya configure adımında hatalar alıyorum, ne yapmalıyım?
C: Bu genellikle eksik veya yanlış sürümdeki bağımlılıklar nedeniyle olur. Hata mesajını dikkatlice okuyun. Genellikle hangi kütüphanenin eksik olduğunu veya hangi sürümün beklendiğini belirtir. Gerekirse apt-get install komutlarıyla eksik paketleri yükleyin veya mevcut paketlerin doğru sürümde olduğundan emin olun.
S: CouchDB çalışmıyor veya curl http://127.0.0.1:5984/ komutu yanıt vermiyor.
C:
1. Günlükleri Kontrol Edin: CouchDB’nin log dosyalarını (/usr/local/var/log/couchdb/couchdb.log) kontrol edin. Hata mesajları genellikle burada bulunur.
2. Kullanıcı İzinleri: CouchDB dizinlerinin ve dosyalarının sahipliğinin couchdb kullanıcısına ait olduğundan emin olun (sudo chown -R couchdb:couchdb /usr/local/lib/couchdb).
3. Port Çakışması: 5984 portunun başka bir servis tarafından kullanılıp kullanılmadığını kontrol edin (sudo netstat -tulnp | grep 5984).
4. Yapılandırma: local.ini dosyasındaki bind_address ve port ayarlarını kontrol edin.
5. Servis Durumu: sudo status couchdb komutu ile servisin gerçekten çalışıp çalışmadığını doğrulayın.
S: CouchDB’ye dışarıdan erişemiyorum.
C:
1. bind_address Ayarı: local.ini dosyasında bind_address = 0.0.0.0 olarak ayarlandığından emin olun.
2. Güvenlik Duvarı (Firewall): VPS’inizin güvenlik duvarı (örneğin, ufw veya sağlayıcınızın paneli) 5984 portuna gelen bağlantılara izin veriyor mu kontrol edin. Gerekirse izin verin: sudo ufw allow 5984.
3. Ağ Yapılandırması: VPS sağlayıcınızın ağ ayarlarında herhangi bir kısıtlama olup olmadığını kontrol edin.
S: Yükseltme yapmak istersem ne yapmalıyım?
C: Yeni bir sürüm yükseltmek için, yeni sürümün kaynak kodunu indirmeniz, yukarıdaki derleme adımlarını tekrarlamanız ve make install yapmanız gerekir. CouchDB veri dizini (/usr/local/var/lib/couchdb) ayrı tutulduğu sürece verileriniz güvende kalacaktır. Yükseltme yapmadan önce her zaman veritabanınızın yedeğini almanız şiddetle tavsiye edilir.
S: Ubuntu 13.04 yerine daha yeni bir Ubuntu sürümünde kurulum farklı mı olur?
C: Temel adımlar benzer olsa da, bazı bağımlılık paketlerinin adları veya sürümleri farklılık gösterebilir. Örneğin, libmozjs185-dev yerine daha yeni SpiderMonkey veya V8 motoru paketleri gerekebilir. Ayrıca, Ubuntu 15.04’ten itibaren systemd kullanıldığı için upstart betiği yerine bir systemd servis dosyası oluşturmanız gerekir.