Debian 8.x (Jessie) üzerine PostgreSQL 9.6 Kurulumu
Bildiğiniz gibi 2016 eylül sonunda PostgreSQL’in 9.6 versiyonu çıktı. Bu makalede PostgreSQL 9.6’nın minimal bir Debian 8.x (Jessie) üzerinde kurulum adımlarını bulacaksınız. Ek olarak, Türkçe desteği olan bir veritabanı oluşturacağız.
PostgreSQL’de UTF-8 desteği olduğu için herhangi bir dildeki karakteri veritabanında saklayabilirsiniz. Yalnız hangi küçük harfin hangi büyük harfle eşleneceği veya karakterleri sıralarken nasıl bir sıra izleneceği dilin yapısıyla ilgilidir. Türkçe için “i”nin büyük harfi “İ” iken İngilizcede “I” şeklindedir. Bu durum çeşitli fonksiyonların verdikleri çıktıların dile göre farklı olacağı anlamına gelir. PostgreSQL’de bu ayarlar veritabanı oluştururken yapılır. (aynı veritabanında farklı dil destekleri de kullanılabilir ama bu detaya girmeyeceğim)
Ön koşul
Bu makale ssh destekli minimal bir Jessie kurulumunun yapıldığını ve root yetkinizin olduğunu varsayarak başlar. Minimal bir Jessie kurulumu için burada bulunan adımları okuyabilirsiniz. Site İngilizcedir. Ek olarak vim / nano gibi bir shell editörünü kullanılabilir olmalısınız. Ben makalede vim kullanacağız.
Kurulum
Debian Dil ayarları
İlk iş olarak işletim sistemimizin varsayılan locale’ini ve Türkçe localin yüklü olup olmadığını kontrol edelim. Türkçe locale yoksa yükleyelim. Varsayılan locale’i kontrol etmek için;
root@JESSIE:/home/sahap# echo $LANG en_US.UTF-8
Varsayılan dilimiz en_US.UTF-8
Bunu not edip devam ediyoruz ve aşağıdaki komutu çalıştırıyoruz.
dpkg-reconfigure locales
[*] tr_TR.UTF-8 UTF-8
seçeneğinin seçili olduğuna emin olalım (space ile seçebilirsiniz) ve <OK>
tuşuna basarak (Tab ile geçebilirsiniz) devam edelim.
Daha önce varsayılan locale’in ne olduğuna bakmıştık, onu seçerek yolumuza devam ediyoruz. Bunun amacı aslında hali hazırda çalışan servislerin dil ayarları ile oynamamış olmak. Bizim durumumuzda bu en_US.UTF-8
idi
<OK>
ye bastığımızda aşağıdaki gibi bir sonuç gelmesi gerekiyor. Böylece işletim sistemimizde Türkçe dil desteğinin olduğuna emin olmuş oluyoruz.
root@JESSIE:/home/sahap# dpkg-reconfigure locales Generating locales (this might take a while)... en_US.UTF-8... done tr_TR.UTF-8... done Generation complete.
PostgreSQL Kurulumu
Debian içerisinde halihazırda PostgreSQL paketleri geliyor ama kararlı debian sürümleri halihazırda geldiği PostgreSQL versiyonunu sabit tuttuğu için daha yenisi yüklemek istediğimizde PostgreSQL’in kendi repository’sini kullanıyoruz. Bizim durumumuzda Jessie, PostgreSQL’in 9.4 versiyonu ile beraber geliyor ama biz 9.6 versiyonunu yüklemek istiyoruz.
Önce repository’mizi ekleyelim;
vim /etc/apt/sources.list.d/pgdg.list
Daha sonra açılan dökümanın içerisine aşağıdaki satırı yazıyoruz. Bu sayede Jessie mevcut paketlerde arama yaparken bizim verdiğimiz URL’i de kontrol etmiş oluyor.
deb http://apt.postgresql.org/pub/repos/apt/ jessie-pgdg main
Kaydedip çıkalım;
Repository’nin key’ini güvenilir key’lere ekliyoruz.
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -
Paket listesini güncelliyoruz;
apt-get update
PostgreSQL’i yükleyelim; Çıkan soruya 'Y'
diyerek devam edelim;
apt-get install postgresql-9.6
Aşağıdaki bilgi bize veri dosyalarımızın nerede olduğu ile ilgili bilgileri veriyor.
Creating new cluster 9.6/main ... config /etc/postgresql/9.6/main data /var/lib/postgresql/9.6/main locale en_US.UTF-8 socket /var/run/postgresql port 5432
Konfigurasyon dosyalarımız /etc/postgresql/9.6/main
içerisinde ve veri dosyalarımız /var/lib/postgresql/9.6/main
içerisinde. Bunlar varsayılan ayarlar ve istenildiği gibi değiştirilebilir. Şimdilik o detaya girmeyelim. Servisimizin çalıştığını kontrol edelim ve PostgreSQL’in çalışır vaziyette olduğunu görelim;
systemctl status postgresql
Türkçe Veritabanı Oluşturma
PostgreSQL kurulumuzu yaptığımıza göre artık içerisine veritabanını oluşturabiliriz. İşletim sistemimizin varsayılan locale’i en_US.UTF-8 olduğu için PostgreSQL’de varsayılan dilde bir cluster oluşturdu. Eğer biz bir parametre vermeden içerisine yeni bir veritabanı oluşturursak yine varsayılan olan en_US.UTF-8 locale’inde bir veritabanımız olacak. Eğer en başta işletim sistemimizde varsayılan dilimiz tr_TR.UTF-8 olsaydı o zaman bunlara gerek yoktu. Çoğu işletim sistemi kurulumu İngilizce olduğu için bunların kontrol edilmesi gerekiyor.
PostgreSQL’e bash’ten giriş yapalım; Bunun birkaç yolu var. Bunlardan biri kurulumla beraber oluşan postgres
kullanıcısı ile giriş yapmak. Önce o kullanıcıya geçelim daha sonra psql kullanarak veritabanına bağlanalım.
su postgres psql
Veritabanımızı oluşturalım;
CREATE DATABASE testdb WITH TEMPLATE = template0 ENCODING = 'UTF8' LC_COLLATE = 'tr_TR.UTF-8' LC_CTYPE = 'tr_TR.UTF-8';
\c testdb
ile yeni oluşturduğumuz veritabanına bağlanabilirsiniz.
postgres=# \c testdb You are now connected to database "testdb" as user "postgres". testdb=#
Türkçe karakterleri ve sıralamasını test edelim;
SELECT harf, upper(harf) FROM ( VALUES ('ş'), ('t'), ('u'), ('a'), ('n'), ('o'), ('ö'), ('p'), ('f'), ('g'), ('ğ'), ('h'), ('ı'), ('i'), ('j' ), ('k'), ('l'), ('m'), ('ü'), ('v'), ('r'), ('s'), ('b'), ('c'), ('ç'), ('d'), ('e'), ('y'), ('z')) AS alfabe(harf) ORDER BY 1;
Türkçe veritabanımız hazır. Henüz postgreSQL sunucusuna başka bir bilgisayardan erişim için gerekli ayarları yapmadık. Yalnızca kurulu olduğu bilgisayardan eriştik. Başka bir makalede erişimle ilgili detaylara gireceğiz.
Referanslar
- https://www.postgresql.org/download/linux/debian/
- https://wiki.debian.org/Locale
- https://www.postgresql.org/docs/9.6/static/sql-createdatabase.html
- https://www.postgresql.org/docs/9.6/static/locale.html