{"id":32858,"date":"2025-10-26T18:41:37","date_gmt":"2025-10-26T15:41:37","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=32858"},"modified":"2025-10-26T18:41:37","modified_gmt":"2025-10-26T15:41:37","slug":"riak-2-ve-python-3un-ubuntu-14-04-uzerine-kurulumu-ve-yapilandirmasi","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/riak-2-ve-python-3un-ubuntu-14-04-uzerine-kurulumu-ve-yapilandirmasi\/","title":{"rendered":"Riak 2 ve Python 3&#8217;\u00fcn Ubuntu 14.04 \u00dczerine Kurulumu ve Yap\u0131land\u0131rmas\u0131"},"content":{"rendered":"<p><body><\/p>\n<h2>Riak 2 ve Python 3&#8217;\u00fcn Ubuntu 14.04 \u00dczerine Kurulumu ve Yap\u0131land\u0131rmas\u0131<\/h2>\n<h3>Giri\u015f<\/h3>\n<p>G\u00fcn\u00fcm\u00fcz\u00fcn veri odakl\u0131 d\u00fcnyas\u0131nda, y\u00fcksek \u00f6l\u00e7eklenebilirlik, eri\u015filebilirlik ve hata tolerans\u0131 sunan veritaban\u0131 \u00e7\u00f6z\u00fcmleri kritik \u00f6neme sahiptir. Riak, Basho Technologies taraf\u0131ndan geli\u015ftirilen, da\u011f\u0131t\u0131k bir NoSQL anahtar-de\u011fer depolama sistemidir. Dynamo prensiplerine dayal\u0131 olarak tasarlanm\u0131\u015f olan Riak, b\u00fcy\u00fck veri k\u00fcmelerini y\u00f6netmek ve s\u00fcrekli \u00e7al\u0131\u015fma s\u00fcresi sa\u011flamak i\u00e7in m\u00fckemmel bir se\u00e7enektir. Bu makalede, Riak 2&#8217;nin Ubuntu 14.04 i\u015fletim sistemi \u00fczerine nas\u0131l kurulaca\u011f\u0131n\u0131, temel yap\u0131land\u0131rmas\u0131n\u0131n nas\u0131l yap\u0131laca\u011f\u0131n\u0131 ve Python 3 programlama dili ile nas\u0131l entegre edilece\u011fini ad\u0131m ad\u0131m inceleyece\u011fiz. Ubuntu 14.04 (Trusty Tahr) eski bir s\u00fcr\u00fcm olsa da, belirli projeler veya eski sistemlerle uyumluluk gereksinimleri nedeniyle hala kullan\u0131l\u0131yor olabilir. Bu rehber, s\u00f6z konusu spesifik ortam i\u00e7in detayl\u0131 bir yol haritas\u0131 sunmaktad\u0131r.<\/p>\n<p>Riak, \u00f6zellikle IoT (Nesnelerin \u0130nterneti) cihazlar\u0131ndan gelen zaman serisi verileri, oturum y\u00f6netimi, kullan\u0131c\u0131 profilleri ve i\u00e7erik depolama gibi s\u00fcrekli de\u011fi\u015fen ve y\u00fcksek hacimli verilere ihtiya\u00e7 duyan uygulamalar i\u00e7in idealdir. Python 3 ise modern yaz\u0131l\u0131m geli\u015ftirmede yayg\u0131n olarak kullan\u0131lan, g\u00fc\u00e7l\u00fc ve esnek bir dildir. Riak&#8217;\u0131n da\u011f\u0131t\u0131k mimarisi ile Python&#8217;\u0131n geli\u015ftirici dostu yap\u0131s\u0131n\u0131 birle\u015ftirmek, dayan\u0131kl\u0131 ve \u00f6l\u00e7eklenebilir uygulamalar olu\u015fturman\u0131n kap\u0131lar\u0131n\u0131 a\u00e7ar.<\/p>\n<p>Bu makale boyunca, Riak 2&#8217;nin kurulumundan Python istemcisinin yap\u0131land\u0131rmas\u0131na, temel veri i\u015flemlerinden k\u00fcmeleme kavramlar\u0131na kadar geni\u015f bir yelpazede bilgi edineceksiniz.<\/p>\n<h3>\u00d6n Gereksinimler<\/h3>\n<p>Riak 2 ve Python 3 kurulumuna ba\u015flamadan \u00f6nce a\u015fa\u011f\u0131daki \u00f6n gereksinimlerin kar\u015f\u0131land\u0131\u011f\u0131ndan emin olun:<\/p>\n<p>*   <strong>Ubuntu 14.04 Sunucusu veya Sanal Makinesi:<\/strong> Temiz bir Ubuntu 14.04 (64-bit) kurulumu \u00f6nerilir.<br \/>\n*   <strong>Sudo Yetkileri:<\/strong> Kurulum ve yap\u0131land\u0131rma ad\u0131mlar\u0131 i\u00e7in <code>sudo<\/code> komutunu kullanma yetene\u011fi.<br \/>\n*   <strong>\u0130nternet Ba\u011flant\u0131s\u0131:<\/strong> Gerekli paketleri indirmek i\u00e7in aktif bir internet ba\u011flant\u0131s\u0131.<br \/>\n*   <strong>Temel Linux Komut Sat\u0131r\u0131 Bilgisi:<\/strong> Terminal \u00fczerinden komutlar\u0131 \u00e7al\u0131\u015ft\u0131rma ve dosya d\u00fczenleme becerisi.<\/p>\n<h3>Riak 2 Kurulumu<\/h3>\n<p>Riak 2&#8217;nin Ubuntu 14.04 \u00fczerine kurulumu, Basho&#8217;nun resmi APT deposunu kullanarak yap\u0131l\u0131r. Bu, paket y\u00f6netimini kolayla\u015ft\u0131r\u0131r ve ba\u011f\u0131ml\u0131l\u0131klar\u0131n otomatik olarak \u00e7\u00f6z\u00fclmesini sa\u011flar.<\/p>\n<h4>Sistem G\u00fcncellemesi<\/h4>\n<p>Kuruluma ba\u015flamadan \u00f6nce sistem paket listesini g\u00fcncellemek ve mevcut paketleri y\u00fckseltmek iyi bir uygulamad\u0131r. Bu, olas\u0131 ba\u011f\u0131ml\u0131l\u0131k sorunlar\u0131n\u0131 \u00f6nlemeye yard\u0131mc\u0131 olur.<\/p>\n<pre><code class=\"language-bash\">sudo apt-get update\nsudo apt-get upgrade -y<\/code><\/pre>\n<h4>Gerekli Ba\u011f\u0131ml\u0131l\u0131klar\u0131n Kurulumu<\/h4>\n<p>Riak deposunu eklemek i\u00e7in <code>curl<\/code> ve <code>apt-transport-https<\/code> gibi baz\u0131 temel ara\u00e7lara ihtiyac\u0131m\u0131z olabilir.<\/p>\n<pre><code class=\"language-bash\">sudo apt-get install -y curl apt-transport-https<\/code><\/pre>\n<h4>Riak Repository Ekleme<\/h4>\n<p>Basho, Riak paketlerini kendi \u00f6zel deposu \u00fczerinden sunar. Bu depoyu sisteminize eklemek i\u00e7in a\u015fa\u011f\u0131daki komutu kullan\u0131n:<\/p>\n<pre><code class=\"language-bash\">curl -s https:\/\/packagecloud.io\/install\/repositories\/basho\/riak\/script.deb.sh | sudo bash<\/code><\/pre>\n<p>Bu komut, Basho&#8217;nun genel anahtar\u0131n\u0131 sisteme ekler ve <code>\/etc\/apt\/sources.list.d\/basho_riak.list<\/code> dosyas\u0131na Riak deposu URL&#8217;sini yazar. Komutun \u00e7\u0131kt\u0131s\u0131n\u0131 kontrol ederek i\u015flemin ba\u015far\u0131l\u0131 olup olmad\u0131\u011f\u0131n\u0131 teyit edebilirsiniz. Bu ad\u0131m tamamland\u0131ktan sonra, APT paket listesini tekrar g\u00fcncellemeniz gerekir:<\/p>\n<pre><code class=\"language-bash\">sudo apt-get update<\/code><\/pre>\n<h4>Riak Kurulumu<\/h4>\n<p>Depo eklendikten ve paket listesi g\u00fcncellendikten sonra Riak 2&#8217;yi kurabiliriz. Ubuntu 14.04 i\u00e7in Riak 2&#8217;nin son kararl\u0131 s\u00fcr\u00fcm\u00fc olan 2.2.3&#8217;\u00fc belirtmek, olas\u0131 uyumluluk sorunlar\u0131n\u0131 \u00f6nlemek ad\u0131na iyi bir yakla\u015f\u0131md\u0131r.<\/p>\n<pre><code class=\"language-bash\">sudo apt-get install -y riak=2.2.3-1<\/code><\/pre>\n<p>Bu komut, Riak 2.2.3 s\u00fcr\u00fcm\u00fcn\u00fc ve t\u00fcm ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 sisteminize kuracakt\u0131r. Kurulum tamamland\u0131ktan sonra, Riak&#8217;\u0131n versiyonunu kontrol ederek ba\u015far\u0131l\u0131 olup olmad\u0131\u011f\u0131n\u0131 do\u011frulayabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">riak version<\/code><\/pre>\n<p>\u00c7\u0131kt\u0131 olarak <code>riak 2.2.3<\/code> veya benzeri bir versiyon numaras\u0131 g\u00f6rmelisiniz. Ayr\u0131ca, Riak servisinin durumunu kontrol etmek i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">sudo riak status<\/code><\/pre>\n<p>Bu komut, Riak d\u00fc\u011f\u00fcm\u00fcn\u00fcn \u00e7al\u0131\u015f\u0131p \u00e7al\u0131\u015fmad\u0131\u011f\u0131n\u0131 ve temel bilgilerini g\u00f6sterecektir. Hen\u00fcz yap\u0131land\u0131rma yapmad\u0131\u011f\u0131m\u0131z i\u00e7in tam olarak \u00e7al\u0131\u015f\u0131r durumda olmayabilir, ancak komutun tan\u0131nd\u0131\u011f\u0131n\u0131 g\u00f6rmek yeterlidir.<\/p>\n<h3>Riak 2 Yap\u0131land\u0131rmas\u0131<\/h3>\n<p>Riak&#8217;\u0131n d\u00fczg\u00fcn \u00e7al\u0131\u015fmas\u0131 i\u00e7in baz\u0131 temel yap\u0131land\u0131rmalar yap\u0131lmas\u0131 gerekmektedir. Riak&#8217;\u0131n ana yap\u0131land\u0131rma dosyalar\u0131 <code>\/etc\/riak\/<\/code> dizini alt\u0131nda bulunur.<\/p>\n<h4>Temel Yap\u0131land\u0131rma Dosyalar\u0131<\/h4>\n<p>*   <code>\/etc\/riak\/riak.conf<\/code>: Riak&#8217;\u0131n ana yap\u0131land\u0131rma dosyas\u0131d\u0131r. A\u011f ayarlar\u0131, depolama arka u\u00e7lar\u0131, g\u00fcvenlik ve di\u011fer bir\u00e7ok Riak \u00f6zg\u00fc ayar burada yap\u0131l\u0131r.<br \/>\n*   <code>\/etc\/riak\/vm.args<\/code>: Erlang Sanal Makinesi (VM) i\u00e7in arg\u00fcmanlar\u0131 i\u00e7erir. D\u00fc\u011f\u00fcm ad\u0131, Erlang \u00e7erezi ve bellek ayarlar\u0131 gibi Erlang&#8217;a \u00f6zg\u00fc yap\u0131land\u0131rmalar burada bulunur.<\/p>\n<h4><code>riak.conf<\/code> Ayarlar\u0131<\/h4>\n<p><code>riak.conf<\/code> dosyas\u0131, Riak&#8217;\u0131n davran\u0131\u015f\u0131n\u0131 kontrol eden bir\u00e7ok ayar\u0131 i\u00e7erir. Bu dosya, HOCON (Human-Optimized Config Object Notation) format\u0131ndad\u0131r. A\u015fa\u011f\u0131da, tek d\u00fc\u011f\u00fcml\u00fc bir kurulum i\u00e7in \u00f6nemli baz\u0131 ayarlar ve a\u00e7\u0131klamalar\u0131 bulunmaktad\u0131r. Dosyay\u0131 d\u00fczenlemek i\u00e7in favori metin d\u00fczenleyicinizi kullan\u0131n (\u00f6rn. <code>nano<\/code> veya <code>vim<\/code>):<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/riak\/riak.conf<\/code><\/pre>\n<p><strong>\u00d6nemli Yap\u0131land\u0131rma Sat\u0131rlar\u0131:<\/strong><\/p>\n<p>*   <strong><code>node<\/code><\/strong>: Riak d\u00fc\u011f\u00fcm\u00fcn\u00fcn Erlang d\u00fc\u011f\u00fcm ad\u0131n\u0131 belirtir. Genellikle <code>riak@<IP_ADRESI><\/code> format\u0131ndad\u0131r. Tek d\u00fc\u011f\u00fcml\u00fc bir kurulum i\u00e7in <code>riak@127.0.0.1<\/code> kullanabilirsiniz. E\u011fer sunucunuzun belirli bir IP adresi varsa, onu kullanman\u0131z \u00f6nerilir.<\/p>\n<pre><code class=\"language-\">## Erlang Node Name\n    ##\n    ## The Erlang node name of this Riak instance.\n    ##\n    ## Default: riak@127.0.0.1\n    node = riak@127.0.0.1<\/code><\/pre>\n<p>*   <strong><code>listener.http.internal<\/code><\/strong>: Riak&#8217;\u0131n HTTP API&#8217;si i\u00e7in dinleyece\u011fi adres ve port. Varsay\u0131lan olarak 8098 portunu kullan\u0131r.<\/p>\n<pre><code class=\"language-\">## HTTP listener for Riak\n    ##\n    ## This is the address and port that Riak will listen on for HTTP\n    ## connections from clients.\n    ##\n    ## Default: 127.0.0.1:8098\n    listener.http.internal = 127.0.0.1:8098<\/code><\/pre>\n<p>*   <strong><code>listener.protobuf.internal<\/code><\/strong>: Riak&#8217;\u0131n Protobuf API&#8217;si i\u00e7in dinleyece\u011fi adres ve port. Protobuf, Python istemcisi gibi bir\u00e7ok Riak istemcisi taraf\u0131ndan tercih edilen daha verimli bir protokold\u00fcr. Varsay\u0131lan olarak 8087 portunu kullan\u0131r.<\/p>\n<pre><code class=\"language-\">## Protocol Buffers listener for Riak\n    ##\n    ## This is the address and port that Riak will listen on for Protocol\n    ## Buffers connections from clients.\n    ##\n    ## Default: 127.0.0.1:8087\n    listener.protobuf.internal = 127.0.0.1:8087<\/code><\/pre>\n<p>    E\u011fer Riak&#8217;a d\u0131\u015far\u0131dan eri\u015fim sa\u011flamak istiyorsan\u0131z, <code>127.0.0.1<\/code> yerine sunucunuzun genel IP adresini veya <code>0.0.0.0<\/code> (t\u00fcm aray\u00fczler) kullanman\u0131z gerekebilir. G\u00fcvenlik a\u00e7\u0131s\u0131ndan <code>0.0.0.0<\/code> kullan\u0131rken g\u00fcvenlik duvar\u0131 (firewall) kurallar\u0131 olu\u015fturmay\u0131 unutmay\u0131n.<\/p>\n<p>*   <strong><code>storage_backend<\/code><\/strong>: Riak&#8217;\u0131n verileri depolamak i\u00e7in kullanaca\u011f\u0131 arka u\u00e7.<br \/>\n    *   <code>bitcask<\/code>: Riak 2&#8217;nin varsay\u0131lan ve \u00f6nerilen depolama arka ucudur. Yazma a\u011f\u0131rl\u0131kl\u0131 i\u015f y\u00fckleri i\u00e7in optimize edilmi\u015ftir ve d\u00fc\u015f\u00fck gecikme s\u00fcresi sunar.<br \/>\n    *   <code>leveldb<\/code>: Daha genel ama\u00e7l\u0131 bir depolama arka ucudur, okuma ve yazma aras\u0131nda daha dengeli performans sunar.<br \/>\n    Tek d\u00fc\u011f\u00fcml\u00fc bir kurulum i\u00e7in <code>bitcask<\/code> genellikle yeterlidir.<\/p>\n<pre><code class=\"language-\">## Storage Backend\n    ##\n    ## The storage backend to use for Riak.\n    ##\n    ## Default: bitcask\n    storage_backend = bitcask<\/code><\/pre>\n<p>Di\u011fer ayarlar, \u00f6zellikle k\u00fcmeleme veya performans ayarlamalar\u0131 i\u00e7in \u00f6nemlidir, ancak tek d\u00fc\u011f\u00fcml\u00fc temel bir kurulum i\u00e7in yukar\u0131daki ayarlar yeterlidir. De\u011fi\u015fiklikleri kaydedip dosyay\u0131 kapat\u0131n.<\/p>\n<h4><code>vm.args<\/code> Ayarlar\u0131<\/h4>\n<p><code>vm.args<\/code> dosyas\u0131, Erlang VM&#8217;sinin ba\u015flang\u0131\u00e7 arg\u00fcmanlar\u0131n\u0131 i\u00e7erir. Bu dosya, \u00f6zellikle k\u00fcmeleme ve performans i\u00e7in \u00f6nemlidir.<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/riak\/vm.args<\/code><\/pre>\n<p><strong>\u00d6nemli Yap\u0131land\u0131rma Sat\u0131rlar\u0131:<\/strong><\/p>\n<p>*   <strong><code>-name<\/code><\/strong>: Erlang d\u00fc\u011f\u00fcm ad\u0131n\u0131 belirtir ve <code>riak.conf<\/code> dosyas\u0131ndaki <code>node<\/code> ayar\u0131 ile e\u015fle\u015fmelidir.<\/p>\n<pre><code class=\"language-\">-name riak@127.0.0.1<\/code><\/pre>\n<p>*   <strong><code>-setcookie<\/code><\/strong>: Erlang d\u00fc\u011f\u00fcmleri aras\u0131nda ileti\u015fim kurmak i\u00e7in kullan\u0131lan bir &#8220;sihirli \u00e7erez&#8221;dir. K\u00fcmedeki t\u00fcm Riak d\u00fc\u011f\u00fcmlerinin ayn\u0131 \u00e7ereze sahip olmas\u0131 GEREK\u0130R. G\u00fcvenlik i\u00e7in bu \u00e7erezi karma\u015f\u0131k ve tahmin edilemez bir dizeyle de\u011fi\u015ftirmelisiniz.<\/p>\n<pre><code class=\"language-\">-setcookie riak<\/code><\/pre>\n<p>    \u00d6rnek: <code>-setcookie my_secret_riak_cookie_12345<\/code><\/p>\n<p>*   <strong>Bellek Ayarlar\u0131<\/strong>: Erlang VM&#8217;sinin ne kadar bellek kullanaca\u011f\u0131n\u0131 kontrol eder. Sunucunuzun RAM miktar\u0131na g\u00f6re ayarlanmal\u0131d\u0131r.<\/p>\n<pre><code class=\"language-\">+K true\n    +A 64\n    -smp enable<\/code><\/pre>\n<p>    Bu ayarlar, Erlang&#8217;\u0131n i\u015flemci \u00e7ekirdeklerini daha iyi kullanmas\u0131n\u0131 ve daha iyi performans g\u00f6stermesini sa\u011flar.<\/p>\n<p>De\u011fi\u015fiklikleri kaydedip dosyay\u0131 kapat\u0131n.<\/p>\n<h4>Riak Servisini Ba\u015flatma ve Kontrol Etme<\/h4>\n<p>Yap\u0131land\u0131rma dosyalar\u0131nda yapt\u0131\u011f\u0131n\u0131z de\u011fi\u015fikliklerden sonra Riak servisini ba\u015flatman\u0131z gerekir:<\/p>\n<pre><code class=\"language-bash\">sudo riak start<\/code><\/pre>\n<p>Riak&#8217;\u0131n ba\u015flat\u0131lmas\u0131 biraz zaman alabilir. Servisin durumunu kontrol etmek i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">sudo riak status<\/code><\/pre>\n<p>\u00c7\u0131kt\u0131da <code>Node is running<\/code> ve Riak d\u00fc\u011f\u00fcm\u00fcn\u00fcz\u00fcn temel istatistiklerini g\u00f6rmelisiniz. Ayr\u0131ca, Riak d\u00fc\u011f\u00fcm\u00fcne ping atarak ula\u015f\u0131labilirli\u011fini test edebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo riak ping<\/code><\/pre>\n<p>Ba\u015far\u0131l\u0131 bir ping i\u015flemi <code>pong<\/code> \u00e7\u0131kt\u0131s\u0131n\u0131 verecektir.<\/p>\n<p>E\u011fer herhangi bir sorunla kar\u015f\u0131la\u015f\u0131rsan\u0131z, <code>\/var\/log\/riak\/<\/code> dizinindeki log dosyalar\u0131n\u0131 kontrol etmelisiniz. \u00d6zellikle <code>console.log<\/code> ve <code>error.log<\/code> dosyalar\u0131 faydal\u0131 bilgiler i\u00e7erebilir.<\/p>\n<h4>Tek D\u00fc\u011f\u00fcml\u00fc K\u00fcme Olu\u015fturma<\/h4>\n<p>Riak, tek bir d\u00fc\u011f\u00fcmde bile &#8220;k\u00fcme&#8221; kavram\u0131n\u0131 kullan\u0131r. Riak&#8217;\u0131n d\u00fczg\u00fcn \u00e7al\u0131\u015fmas\u0131 i\u00e7in d\u00fc\u011f\u00fcm\u00fcn kendi kendine bir k\u00fcmeye kat\u0131lmas\u0131 gerekir.<\/p>\n<pre><code class=\"language-bash\">riak-admin cluster join riak@127.0.0.1<\/code><\/pre>\n<p>Bu komut, d\u00fc\u011f\u00fcm\u00fc kendi IP adresini kullanarak k\u00fcmeye kat\u0131lmaya zorlar. Ard\u0131ndan, k\u00fcme de\u011fi\u015fikliklerini planlaman\u0131z ve uygulaman\u0131z gerekir:<\/p>\n<pre><code class=\"language-bash\">riak-admin cluster plan\nriak-admin cluster commit<\/code><\/pre>\n<p>Bu ad\u0131mlardan sonra, k\u00fcmenin durumunu kontrol edebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">riak-admin member-status<\/code><\/pre>\n<p>\u00c7\u0131kt\u0131da d\u00fc\u011f\u00fcm\u00fcn\u00fcz\u00fcn <code>valid<\/code> durumda oldu\u011funu ve <code>riak@127.0.0.1<\/code> olarak listelendi\u011fini g\u00f6rmelisiniz.<\/p>\n<h3>Python 3 Kurulumu<\/h3>\n<p>Ubuntu 14.04, varsay\u0131lan olarak Python 3.4 s\u00fcr\u00fcm\u00fc ile gelir. Bu s\u00fcr\u00fcm, Riak Python istemcisini \u00e7al\u0131\u015ft\u0131rmak i\u00e7in yeterlidir.<\/p>\n<h4>Ubuntu 14.04 \u00dczerinde Python 3<\/h4>\n<p>Sisteminizde Python 3&#8217;\u00fcn kurulu olup olmad\u0131\u011f\u0131n\u0131 ve hangi s\u00fcr\u00fcmde oldu\u011funu kontrol edin:<\/p>\n<pre><code class=\"language-bash\">python3 --version<\/code><\/pre>\n<p>\u00c7\u0131kt\u0131 olarak <code>Python 3.4.x<\/code> gibi bir \u015fey g\u00f6rmelisiniz.<\/p>\n<h4>pip3 Kurulumu (Gerekliyse)<\/h4>\n<p>Python paketlerini y\u00f6netmek i\u00e7in <code>pip<\/code>&#8216;e ihtiyac\u0131m\u0131z var. Ubuntu 14.04&#8217;te <code>pip3<\/code> ayr\u0131 olarak y\u00fcklenmesi gerekebilir.<\/p>\n<pre><code class=\"language-bash\">sudo apt-get install -y python3-pip<\/code><\/pre>\n<p>Kurulum tamamland\u0131ktan sonra <code>pip3<\/code>&#8216;\u00fcn versiyonunu kontrol edin:<\/p>\n<pre><code class=\"language-bash\">pip3 --version<\/code><\/pre>\n<h3>Riak Python \u0130stemcisinin Kurulumu<\/h3>\n<p>Riak ile Python uygulamalar\u0131 geli\u015ftirmek i\u00e7in resmi Riak Python istemcisine ihtiyac\u0131m\u0131z var. Bu istemciyi <code>pip3<\/code> kullanarak kolayca kurabiliriz.<\/p>\n<h4>Riak Python \u0130stemcisi<\/h4>\n<pre><code class=\"language-bash\">pip3 install riak<\/code><\/pre>\n<p>Bu komut, Riak Python istemcisini ve gerekli t\u00fcm ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 kuracakt\u0131r.<\/p>\n<h4>Kurulumu Do\u011frulama<\/h4>\n<p>Python istemcisinin ba\u015far\u0131l\u0131 bir \u015fekilde kuruldu\u011funu do\u011frulamak i\u00e7in bir Python kabu\u011fu a\u00e7\u0131p <code>riak<\/code> mod\u00fcl\u00fcn\u00fc i\u00e7e aktarmay\u0131 deneyebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">python3<\/code><\/pre>\n<p>Python kabu\u011funda:<\/p>\n<pre><code class=\"language-python\">import riak\nprint(riak.__version__)<\/code><\/pre>\n<p>E\u011fer herhangi bir hata mesaj\u0131 almazsan\u0131z ve istemcinin versiyon numaras\u0131n\u0131 g\u00f6r\u00fcrseniz, kurulum ba\u015far\u0131l\u0131 demektir. \u00c7\u0131kmak i\u00e7in <code>exit()<\/code> yaz\u0131n.<\/p>\n<h3>Riak ile Python 3 Kullan\u0131m\u0131: Temel \u0130\u015flemler<\/h3>\n<p>\u015eimdi Riak sunucumuz \u00e7al\u0131\u015f\u0131r durumda ve Python istemcimiz kurulu oldu\u011funa g\u00f6re, Riak ile temel veri i\u015flemlerini (yazma, okuma, g\u00fcncelleme, silme) nas\u0131l yapaca\u011f\u0131m\u0131z\u0131 g\u00f6steren basit bir Python scripti olu\u015ftural\u0131m.<\/p>\n<h4>Ba\u011flant\u0131 Kurma<\/h4>\n<p>Riak istemcisi ile Riak sunucusuna ba\u011flanmak i\u00e7in <code>riak.RiakClient<\/code> s\u0131n\u0131f\u0131n\u0131 kullan\u0131r\u0131z. Protobuf portu (8087) genellikle tercih edilen ve daha performansl\u0131 olan ba\u011flant\u0131 y\u00f6ntemidir.<\/p>\n<pre><code class=\"language-python\">import riak\n\n<h2>Riak sunucusuna ba\u011flant\u0131 kurma<\/h2>\n<h2>pb_port: Protobuf portu (varsay\u0131lan 8087)<\/h2>\n<h2>http_port: HTTP portu (varsay\u0131lan 8098)<\/h2>\n<h2>protocol: 'pbc' (Protobuf) veya 'http'<\/h2>\nclient = riak.RiakClient(pb_port=8087, protocol='pbc')\n\n<h2>Ba\u011flant\u0131y\u0131 kontrol etme<\/h2>\nif client.ping():\n    print(\"Riak'a ba\u015far\u0131yla ba\u011flan\u0131ld\u0131!\")\nelse:\n    print(\"Riak ba\u011flant\u0131s\u0131 ba\u015far\u0131s\u0131z oldu. Sunucu \u00e7al\u0131\u015f\u0131yor mu?\")\n    exit()<\/code><\/pre>\n<h4>Kova (Bucket) Olu\u015fturma ve Veri Yazma<\/h4>\n<p>Riak&#8217;ta veriler kovalar (buckets) i\u00e7inde saklan\u0131r. Her kova, anahtar-de\u011fer \u00e7iftlerini i\u00e7erir.<\/p>\n<pre><code class=\"language-python\"># 'users' ad\u0131nda bir kova (bucket) alal\u0131m.\n<h2>E\u011fer kova yoksa Riak otomatik olarak olu\u015fturur.<\/h2>\nusers_bucket = client.bucket('users')\n\n<h2>Yeni bir anahtar-de\u011fer \u00e7ifti olu\u015ftural\u0131m ve depolayal\u0131m.<\/h2>\n<h2>Anahtar: 'alice'<\/h2>\n<h2>De\u011fer: Python s\u00f6zl\u00fc\u011f\u00fc (Riak otomatik olarak JSON'a d\u00f6n\u00fc\u015ft\u00fcr\u00fcr)<\/h2>\nalice_data = {'name': 'Alice', 'age': 30, 'city': 'New York'}\nalice_obj = users_bucket.new('alice', alice_data)\nalice_obj.store()\nprint(f\"Veri depoland\u0131: users\/alice -> {alice_data}\")\n\n<h2>Ba\u015fka bir anahtar-de\u011fer \u00e7ifti<\/h2>\nbob_data = {'name': 'Bob', 'age': 25, 'city': 'London'}\nbob_obj = users_bucket.new('bob', bob_data)\nbob_obj.store()\nprint(f\"Veri depoland\u0131: users\/bob -> {bob_data}\")\n\n<h2>Basit bir string de\u011feri depolama<\/h2>\nmessage_bucket = client.bucket('messages')\nhello_obj = message_bucket.new('greeting', 'Hello, Riak!')\nhello_obj.store()\nprint(\"Mesaj depoland\u0131: messages\/greeting -> Hello, Riak!\")<\/code><\/pre>\n<h4>Veri Okuma<\/h4>\n<p>Depolad\u0131\u011f\u0131m\u0131z verileri anahtar kullanarak geri okuyabiliriz.<\/p>\n<pre><code class=\"language-python\"># 'alice' anahtar\u0131na sahip veriyi okuyal\u0131m\nfetched_alice = users_bucket.get('alice')\n\nif fetched_alice.exists:\n    print(f\"Okunan veri (alice): {fetched_alice.data}\")\nelse:\n    print(\"Alice verisi bulunamad\u0131.\")\n\n<h2>'greeting' anahtar\u0131na sahip mesaj\u0131 okuyal\u0131m<\/h2>\nfetched_greeting = message_bucket.get('greeting')\nif fetched_greeting.exists:\n    print(f\"Okunan mesaj (greeting): {fetched_greeting.data}\")\nelse:\n    print(\"Mesaj bulunamad\u0131.\")<\/code><\/pre>\n<h4>Veri G\u00fcncelleme<\/h4>\n<p>Veri g\u00fcncellemek i\u00e7in \u00f6nce mevcut veriyi okur, \u00fczerinde de\u011fi\u015fiklik yapar ve sonra tekrar depolars\u0131n\u0131z. Riak, \u00e7at\u0131\u015fmalar\u0131 y\u00f6netmek i\u00e7in vekt\u00f6r saatleri (vector clocks) kullan\u0131r.<\/p>\n<pre><code class=\"language-python\"># Alice'in ya\u015f\u0131n\u0131 g\u00fcncelleyelim\nalice_to_update = users_bucket.get('alice')\n\nif alice_to_update.exists:\n    print(f\"G\u00fcncellemeden \u00f6nce (alice): {alice_to_update.data}\")\n    alice_to_update.data['age'] = 31\n    alice_to_update.data['occupation'] = 'Software Engineer'\n    alice_to_update.store()\n    print(f\"Veri g\u00fcncellendi (alice): {alice_to_update.data}\")\n\n    # G\u00fcncellenmi\u015f veriyi tekrar okuyarak kontrol edelim\n    updated_alice = users_bucket.get('alice')\n    print(f\"G\u00fcncellemeden sonra okunan (alice): {updated_alice.data}\")\nelse:\n    print(\"Alice verisi g\u00fcncelleme i\u00e7in bulunamad\u0131.\")<\/code><\/pre>\n<h4>Veri Silme<\/h4>\n<p>Bir anahtar-de\u011fer \u00e7iftini Riak&#8217;tan silmek i\u00e7in <code>delete()<\/code> metodunu kullan\u0131r\u0131z.<\/p>\n<pre><code class=\"language-python\"># 'bob' anahtar\u0131na sahip veriyi silelim\nbob_to_delete = users_bucket.get('bob')\n\nif bob_to_delete.exists:\n    bob_to_delete.delete()\n    print(f\"Veri silindi: users\/bob\")\n\n    # Silme i\u015flemini do\u011frulamak i\u00e7in tekrar okumaya \u00e7al\u0131\u015fal\u0131m\n    deleted_bob = users_bucket.get('bob')\n    if not deleted_bob.exists:\n        print(\"Bob verisi ba\u015far\u0131yla silinmi\u015f.\")\n    else:\n        print(\"Bob verisi silinemedi veya hala mevcut.\")\nelse:\n    print(\"Bob verisi silme i\u00e7in bulunamad\u0131.\")<\/code><\/pre>\n<h4>Basit Bir \u00d6rnek Uygulama<\/h4>\n<p>Yukar\u0131daki t\u00fcm i\u015flemleri birle\u015ftiren \u00f6rnek bir Python scripti:<\/p>\n<pre><code class=\"language-python\">import riak\n\ndef run_riak_example():\n    client = None\n    try:\n        # Riak sunucusuna ba\u011flant\u0131 kurma\n        client = riak.RiakClient(pb_port=8087, protocol='pbc')\n\n        if not client.ping():\n            print(\"Hata: Riak ba\u011flant\u0131s\u0131 ba\u015far\u0131s\u0131z oldu. Sunucu \u00e7al\u0131\u015f\u0131yor mu?\")\n            return\n\n        print(\"Riak'a ba\u015far\u0131yla ba\u011flan\u0131ld\u0131.\")\n\n        users_bucket = client.bucket('users')\n        products_bucket = client.bucket('products')\n\n        # 1. Veri Depolama\n        print(\"\\n--- Veri Depolama ---\")\n        user1_data = {'name': 'Ay\u015fe Y\u0131lmaz', 'email': 'ayse@example.com', 'age': 28}\n        user1_obj = users_bucket.new('user_ayse', user1_data)\n        user1_obj.store()\n        print(f\"Depolanan kullan\u0131c\u0131: user_ayse -> {user1_data}\")\n\n        product1_data = {'name': 'Diz\u00fcst\u00fc Bilgisayar', 'price': 1200.00, 'category': 'Elektronik'}\n        product1_obj = products_bucket.new('prod_laptop', product1_data)\n        product1_obj.store()\n        print(f\"Depolanan \u00fcr\u00fcn: prod_laptop -> {product1_data}\")\n\n        # 2. Veri Okuma\n        print(\"\\n--- Veri Okuma ---\")\n        fetched_user = users_bucket.get('user_ayse')\n        if fetched_user.exists:\n            print(f\"Okunan kullan\u0131c\u0131 (user_ayse): {fetched_user.data}\")\n        else:\n            print(\"Kullan\u0131c\u0131 user_ayse bulunamad\u0131.\")\n\n        fetched_product = products_bucket.get('prod_laptop')\n        if fetched_product.exists:\n            print(f\"Okunan \u00fcr\u00fcn (prod_laptop): {fetched_product.data}\")\n        else:\n            print(\"\u00dcr\u00fcn prod_laptop bulunamad\u0131.\")\n\n        # 3. Veri G\u00fcncelleme\n        print(\"\\n--- Veri G\u00fcncelleme ---\")\n        if fetched_user.exists:\n            print(f\"G\u00fcncellemeden \u00f6nce (user_ayse): {fetched_user.data}\")\n            fetched_user.data['age'] = 29\n            fetched_user.data['status'] = 'Active'\n            fetched_user.store()\n            print(f\"G\u00fcncellenen kullan\u0131c\u0131 (user_ayse): {fetched_user.data}\")\n            # G\u00fcncellemeyi do\u011frulamak i\u00e7in tekrar oku\n            re_fetched_user = users_bucket.get('user_ayse')\n            print(f\"G\u00fcncelleme sonras\u0131 tekrar okunan (user_ayse): {re_fetched_user.data}\")\n        else:\n            print(\"Kullan\u0131c\u0131 user_ayse g\u00fcncelleme i\u00e7in bulunamad\u0131.\")\n\n        # 4. Veri Silme\n        print(\"\\n--- Veri Silme ---\")\n        user_to_delete = users_bucket.get('user_ayse')\n        if user_to_delete.exists:\n            user_to_delete.delete()\n            print(\"Kullan\u0131c\u0131 user_ayse silindi.\")\n            # Silme i\u015flemini do\u011frula\n            deleted_user = users_bucket.get('user_ayse')\n            if not deleted_user.exists:\n                print(\"Kullan\u0131c\u0131 user_ayse ba\u015far\u0131yla silinmi\u015f.\")\n            else:\n                print(\"Hata: Kullan\u0131c\u0131 user_ayse silinemedi.\")\n        else:\n            print(\"Kullan\u0131c\u0131 user_ayse silme i\u00e7in bulunamad\u0131.\")\n\n    except riak.RiakError as e:\n        print(f\"Riak Hatas\u0131: {e}\")\n    except Exception as e:\n        print(f\"Beklenmedik bir hata olu\u015ftu: {e}\")\n    finally:\n        if client:\n            print(\"\\n\u00d6rnek tamamland\u0131.\")\n\nif __name__ == \"__main__\":\n    run_riak_example()<\/code><\/pre>\n<p>Bu scripti <code>riak_example.py<\/code> olarak kaydedip <code>python3 riak_example.py<\/code> komutuyla \u00e7al\u0131\u015ft\u0131rabilirsiniz.<\/p>\n<h3>Riak K\u00fcmeleme Temelleri<\/h3>\n<p>Tek d\u00fc\u011f\u00fcml\u00fc bir kurulum, Riak&#8217;\u0131n yeteneklerini anlamak i\u00e7in harika bir ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r, ancak Riak&#8217;\u0131n ger\u00e7ek g\u00fcc\u00fc da\u011f\u0131t\u0131k k\u00fcmeleme yeteneklerinde yatar.<\/p>\n<h4>Neden K\u00fcmeleme?<\/h4>\n<p>*   <strong>Y\u00fcksek Eri\u015filebilirlik:<\/strong> Bir d\u00fc\u011f\u00fcm \u00e7\u00f6kerse, di\u011fer d\u00fc\u011f\u00fcmler hizmet vermeye devam eder.<br \/>\n*   <strong>Hata Tolerans\u0131:<\/strong> Veriler birden fazla d\u00fc\u011f\u00fcmde \u00e7o\u011falt\u0131ld\u0131\u011f\u0131 i\u00e7in veri kayb\u0131 riski azal\u0131r.<br \/>\n*   <strong>\u00d6l\u00e7eklenebilirlik:<\/strong> Veri hacmi veya i\u015flem y\u00fck\u00fc artt\u0131k\u00e7a k\u00fcmeye kolayca yeni d\u00fc\u011f\u00fcmler ekleyebilir veya \u00e7\u0131karabilirsiniz.<br \/>\n*   <strong>Co\u011frafi Da\u011f\u0131t\u0131m:<\/strong> Verileri farkl\u0131 veri merkezlerine veya co\u011frafi b\u00f6lgelere da\u011f\u0131tarak felaket kurtarma yeteneklerini art\u0131rabilir.<\/p>\n<h4>K\u00fcme Olu\u015fturma Ad\u0131mlar\u0131 (Genel Bak\u0131\u015f)<\/h4>\n<p>Birden fazla Riak d\u00fc\u011f\u00fcm\u00fcn\u00fc bir araya getirerek bir k\u00fcme olu\u015fturmak i\u00e7in genel ad\u0131mlar \u015funlard\u0131r:<\/p>\n<p>1.  <strong>Her D\u00fc\u011f\u00fcme Riak Kurulumu:<\/strong> Her bir sunucuya yukar\u0131daki ad\u0131mlar\u0131 takip ederek Riak 2&#8217;yi kurun.<br \/>\n2.  <strong>Yap\u0131land\u0131rma:<\/strong> Her d\u00fc\u011f\u00fcmdeki <code>\/etc\/riak\/riak.conf<\/code> ve <code>\/etc\/riak\/vm.args<\/code> dosyalar\u0131n\u0131 do\u011fru \u015fekilde yap\u0131land\u0131r\u0131n:<br \/>\n    *   <code>riak.conf<\/code>: <code>node = riak@<D\u00dc\u011e\u00dcM_IP_ADRESI><\/code> (her d\u00fc\u011f\u00fcm kendi IP adresini kullanmal\u0131). <code>listener.http.internal<\/code> ve <code>listener.protobuf.internal<\/code> ayarlar\u0131n\u0131 da ilgili IP adreslerine veya <code>0.0.0.0<\/code> olarak ayarlay\u0131n.<br \/>\n    *   <code>vm.args<\/code>: <code>-name riak@<D\u00dc\u011e\u00dcM_IP_ADRESI><\/code> ve <strong>t\u00fcm d\u00fc\u011f\u00fcmlerde ayn\u0131<\/strong> <code>-setcookie <G\u00dcVENL\u0130_\u00c7EREZ><\/code> kullan\u0131n.<br \/>\n3.  <strong>D\u00fc\u011f\u00fcmleri Ba\u015flatma:<\/strong> Her d\u00fc\u011f\u00fcmde <code>sudo riak start<\/code> komutunu \u00e7al\u0131\u015ft\u0131r\u0131n.<br \/>\n4.  <strong>D\u00fc\u011f\u00fcmleri K\u00fcmeye Katma:<\/strong> \u0130lk d\u00fc\u011f\u00fcm\u00fc ba\u015flat\u0131n ve di\u011fer d\u00fc\u011f\u00fcmleri bu ilk d\u00fc\u011f\u00fcme kat\u0131n. \u00d6rne\u011fin, <code>node1<\/code> ilk d\u00fc\u011f\u00fcm ise ve IP adresi <code>192.168.1.10<\/code> ise, <code>node2<\/code>&#8216;den a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">riak-admin cluster join riak@192.168.1.10<\/code><\/pre>\n<p>    Bu ad\u0131m\u0131 k\u00fcmedeki her yeni d\u00fc\u011f\u00fcm i\u00e7in tekrarlay\u0131n.<br \/>\n5.  <strong>K\u00fcme De\u011fi\u015fikliklerini Uygulama:<\/strong> D\u00fc\u011f\u00fcmler k\u00fcmeye kat\u0131ld\u0131ktan sonra, herhangi bir d\u00fc\u011f\u00fcmden (genellikle ilk d\u00fc\u011f\u00fcmden) de\u011fi\u015fiklikleri planlay\u0131n ve uygulay\u0131n:<\/p>\n<pre><code class=\"language-bash\">riak-admin cluster plan\n    riak-admin cluster commit<\/code><\/pre>\n<p>6.  <strong>Durumu Kontrol Etme:<\/strong> K\u00fcmenin durumunu kontrol etmek i\u00e7in herhangi bir d\u00fc\u011f\u00fcmden <code>riak-admin member-status<\/code> komutunu kullan\u0131n. T\u00fcm d\u00fc\u011f\u00fcmlerin <code>valid<\/code> durumda oldu\u011funu ve k\u00fcmenin bir par\u00e7as\u0131 oldu\u011funu g\u00f6rmelisiniz.<\/p>\n<h4>\u00d6nemli K\u00fcmeleme Kavramlar\u0131<\/h4>\n<p>*   <strong>VNode&#8217;lar (Virtual Nodes):<\/strong> Riak, verileri fiziksel d\u00fc\u011f\u00fcmler yerine sanal d\u00fc\u011f\u00fcmler (vnodes) aras\u0131nda da\u011f\u0131t\u0131r. Bu, k\u00fcme boyutunu de\u011fi\u015ftirirken veya d\u00fc\u011f\u00fcmler ekleyip \u00e7\u0131kar\u0131rken verilerin daha kolay yeniden dengelenmesini sa\u011flar.<br \/>\n*   <strong>Replika Fakt\u00f6r\u00fc (N):<\/strong> Bir verinin k\u00fcmede ka\u00e7 kopyas\u0131n\u0131n tutulaca\u011f\u0131n\u0131 belirler. Varsay\u0131lan de\u011fer 3&#8217;t\u00fcr, yani her veri \u00fc\u00e7 farkl\u0131 d\u00fc\u011f\u00fcmde depolan\u0131r. Daha y\u00fcksek N de\u011feri, daha fazla hata tolerans\u0131 sa\u011flar ancak depolama alan\u0131 ve yazma gecikmesini art\u0131r\u0131r.<br \/>\n*   <strong>Okuma (R) ve Yazma (W) Quorum&#8217;lar\u0131:<\/strong> Bir okuma veya yazma i\u015fleminin ba\u015far\u0131l\u0131 say\u0131lmas\u0131 i\u00e7in gereken minimum replika say\u0131s\u0131d\u0131r.<br \/>\n    *   <code>R<\/code>: Bir okuma i\u015fleminin ba\u015far\u0131l\u0131 olmas\u0131 i\u00e7in ka\u00e7 replikadan yan\u0131t al\u0131nmas\u0131 gerekti\u011fini belirtir.<br \/>\n    *   <code>W<\/code>: Bir yazma i\u015fleminin ba\u015far\u0131l\u0131 olmas\u0131 i\u00e7in ka\u00e7 replikaya yazma i\u015fleminin tamamlanmas\u0131 gerekti\u011fini belirtir.<br \/>\n    *   <code>RW<\/code>: Ayn\u0131 anda hem okuma hem de yazma quorum&#8217;u.<br \/>\n    *   <code>all<\/code>: T\u00fcm replikalar.<br \/>\n    *   <code>one<\/code>: Bir replika.<br \/>\n    *   <code>quorum<\/code>: N\/2 + 1 replika.<br \/>\n    <code>R + W > N<\/code> oldu\u011funda, &#8220;Strong Consistency&#8221; (g\u00fc\u00e7l\u00fc tutarl\u0131l\u0131k) elde edilebilir, ancak bu, eri\u015filebilirli\u011fi azaltabilir. Riak genellikle &#8220;Eventual Consistency&#8221; (nihai tutarl\u0131l\u0131k) sunar.<br \/>\n*   <strong>\u00c7at\u0131\u015fma \u00c7\u00f6z\u00fcm\u00fc (Conflict Resolution):<\/strong> Riak&#8217;\u0131n da\u011f\u0131t\u0131k yap\u0131s\u0131 nedeniyle ayn\u0131 anahtar\u0131n birden fazla kopyas\u0131 \u00fczerinde e\u015f zamanl\u0131 yazma i\u015flemleri \u00e7at\u0131\u015fmalara yol a\u00e7abilir. Riak, bu \u00e7at\u0131\u015fmalar\u0131 vekt\u00f6r saatleri (vector clocks) kullanarak tespit eder ve varsay\u0131lan olarak &#8220;son yazan kazan\u0131r&#8221; (last-write-wins) veya kullan\u0131c\u0131 tan\u0131ml\u0131 kurallar ile \u00e7\u00f6zebilir.<\/p>\n<h3>Riak Performans ve G\u00fcvenlik \u0130pu\u00e7lar\u0131<\/h3>\n<p>Riak da\u011f\u0131t\u0131k bir sistem oldu\u011fundan, performans ve g\u00fcvenlik konular\u0131na \u00f6zel dikkat g\u00f6stermek \u00f6nemlidir.<\/p>\n<h4>Performans \u0130pu\u00e7lar\u0131<\/h4>\n<p>*   <strong>Do\u011fru Depolama Arka Ucunu Se\u00e7me:<\/strong><br \/>\n    *   <code>Bitcask<\/code>: Yazma yo\u011fun i\u015f y\u00fckleri ve d\u00fc\u015f\u00fck gecikme s\u00fcresi i\u00e7in idealdir.<br \/>\n    *   <code>LevelDB<\/code>: Daha dengeli okuma\/yazma performans\u0131 sunar ve daha iyi birle\u015ftirme (compaction) \u00f6zelliklerine sahiptir.<br \/>\n*   <strong>Donan\u0131m Optimizasyonu:<\/strong><br \/>\n    *   <strong>SSD Kullan\u0131m\u0131:<\/strong> \u00d6zellikle Bitcask i\u00e7in disk I\/O performans\u0131 kritiktir. SSD&#8217;ler, HDD&#8217;lere g\u00f6re \u00f6nemli bir performans art\u0131\u015f\u0131 sa\u011flar.<br \/>\n    *   <strong>Yeterli RAM:<\/strong> Riak, Erlang VM \u00fczerinde \u00e7al\u0131\u015ft\u0131\u011f\u0131 i\u00e7in bol miktarda RAM&#8217;den faydalan\u0131r. Erlang VM ayarlar\u0131n\u0131 (<code>vm.args<\/code>) sunucunuzun RAM&#8217;ine g\u00f6re optimize edin.<br \/>\n    *   <strong>CPU \u00c7ekirdekleri:<\/strong> Yeterli CPU \u00e7ekirde\u011fi, Erlang&#8217;\u0131n e\u015fzamanl\u0131 i\u015flemleri daha verimli y\u00f6netmesini sa\u011flar.<br \/>\n*   <strong>Erlang VM Ayarlar\u0131 (<code>vm.args<\/code>):<\/strong><br \/>\n    *   <code>-smp enable<\/code>: \u00c7ok \u00e7ekirdekli i\u015flemcileri kullanmay\u0131 etkinle\u015ftirir.<br \/>\n    *   <code>+A<\/code>: I\/O i\u015f par\u00e7ac\u0131\u011f\u0131 havuzu boyutunu ayarlar.<br \/>\n    *   <code>+K true<\/code>: Erlang&#8217;\u0131n kernel poller kullanmas\u0131n\u0131 sa\u011flar.<br \/>\n*   <strong>Bucket Tipleri ve \u00d6zellikleri:<\/strong> Riak 2&#8217;de bucket tipleri, kovalar i\u00e7in varsay\u0131lan davran\u0131\u015flar\u0131 ve \u00f6zellikleri tan\u0131mlaman\u0131za olanak tan\u0131r (\u00f6rn. N de\u011feri, \u00e7at\u0131\u015fma \u00e7\u00f6z\u00fcm stratejisi). Uygulaman\u0131z\u0131n gereksinimlerine g\u00f6re \u00f6zel bucket tipleri tan\u0131mlayarak performans\u0131 ve tutarl\u0131l\u0131\u011f\u0131 optimize edebilirsiniz.<br \/>\n*   <strong>Okuma\/Yazma Quorum&#8217;lar\u0131n\u0131 Ayarlama:<\/strong> Uygulaman\u0131z\u0131n tutarl\u0131l\u0131k ve eri\u015filebilirlik gereksinimlerine g\u00f6re <code>R<\/code> ve <code>W<\/code> de\u011ferlerini dikkatlice ayarlay\u0131n. Daha d\u00fc\u015f\u00fck <code>R<\/code> ve <code>W<\/code> de\u011ferleri daha h\u0131zl\u0131 i\u015flemlere yol a\u00e7abilir ancak veri tutarl\u0131l\u0131\u011f\u0131 riskini art\u0131rabilir.<\/p>\n<h4>G\u00fcvenlik \u0130pu\u00e7lar\u0131<\/h4>\n<p>*   <strong>A\u011f \u0130zolasyonu ve G\u00fcvenlik Duvar\u0131:<\/strong> Riak d\u00fc\u011f\u00fcmlerini sadece g\u00fcvenli a\u011flardan eri\u015filebilecek \u015fekilde yap\u0131land\u0131r\u0131n. HTTP (8098) ve Protobuf (8087) portlar\u0131n\u0131 sadece uygulaman\u0131z\u0131n veya di\u011fer Riak d\u00fc\u011f\u00fcmlerinin eri\u015fmesi gereken IP adreslerine a\u00e7\u0131n. UFW (Uncomplicated Firewall) gibi ara\u00e7larla g\u00fcvenlik duvar\u0131 kurallar\u0131 olu\u015fturun.<br \/>\n*   <strong>Erlang \u00c7erezi (<code>-setcookie<\/code>):<\/strong> <code>vm.args<\/code> dosyas\u0131ndaki Erlang \u00e7erezi, d\u00fc\u011f\u00fcmlerin birbirine g\u00fcvenmesini sa\u011flar. Bu \u00e7erez g\u00fc\u00e7l\u00fc, tahmin edilemez bir dize olmal\u0131 ve asla if\u015fa edilmemelidir.<br \/>\n*   <strong>Ayr\u0131cal\u0131ks\u0131z Kullan\u0131c\u0131:<\/strong> Riak&#8217;\u0131 <code>root<\/code> kullan\u0131c\u0131s\u0131 yerine ayr\u0131cal\u0131ks\u0131z bir kullan\u0131c\u0131 (\u00f6rn. <code>riak<\/code>) alt\u0131nda \u00e7al\u0131\u015ft\u0131rmak, g\u00fcvenlik risklerini azalt\u0131r.<br \/>\n*   <strong>Veri \u015eifreleme:<\/strong> Hassas verileri Riak&#8217;a yazmadan \u00f6nce uygulama katman\u0131nda \u015fifrelemek, veri g\u00fcvenli\u011fini art\u0131r\u0131r. Riak 2, veritaban\u0131 d\u00fczeyinde yerle\u015fik \u015fifreleme sunmaz.<br \/>\n*   <strong>Eri\u015fim Kontrol\u00fc:<\/strong> Riak 2&#8217;de yerle\u015fik kullan\u0131c\u0131 tabanl\u0131 kimlik do\u011frulama veya yetkilendirme sistemi yoktur. Eri\u015fim kontrol\u00fc, genellikle a\u011f seviyesinde (g\u00fcvenlik duvar\u0131) ve uygulama katman\u0131nda y\u00f6netilir.<\/p>\n<h3>Sorun Giderme<\/h3>\n<p>Kurulum veya yap\u0131land\u0131rma s\u0131ras\u0131nda kar\u015f\u0131la\u015fabilece\u011finiz yayg\u0131n sorunlar ve \u00e7\u00f6z\u00fcmleri:<\/p>\n<h4>S\u0131k Kar\u015f\u0131la\u015f\u0131lan Sorunlar<\/h4>\n<p>*   <strong>Riak Ba\u015flat\u0131lam\u0131yor:<\/strong><br \/>\n    *   <strong>Loglar\u0131 Kontrol Edin:<\/strong> <code>\/var\/log\/riak\/console.log<\/code> ve <code>\/var\/log\/riak\/error.log<\/code> dosyalar\u0131n\u0131 inceleyin. Hata mesajlar\u0131 sorunun k\u00f6k nedenini g\u00f6sterecektir.<br \/>\n    *   <strong>Yap\u0131land\u0131rma Dosyalar\u0131:<\/strong> <code>riak.conf<\/code> ve <code>vm.args<\/code> dosyalar\u0131ndaki s\u00f6zdizimi hatalar\u0131n\u0131 veya yanl\u0131\u015f de\u011ferleri kontrol edin. \u00d6zellikle <code>node<\/code> ve <code>-name<\/code> ayarlar\u0131n\u0131n e\u015fle\u015fti\u011finden emin olun.<br \/>\n    *   <strong>Port \u00c7ak\u0131\u015fmalar\u0131:<\/strong> Riak&#8217;\u0131n kullanmaya \u00e7al\u0131\u015ft\u0131\u011f\u0131 portlar\u0131n (8087, 8098) ba\u015fka bir servis taraf\u0131ndan kullan\u0131lmad\u0131\u011f\u0131ndan emin olun. <code>sudo netstat -tulpn | grep 8087<\/code> gibi komutlarla kontrol edebilirsiniz.<br \/>\n*   <strong>K\u00fcmeleme Sorunlar\u0131:<\/strong><br \/>\n    *   <strong>Erlang \u00c7erezi:<\/strong> T\u00fcm d\u00fc\u011f\u00fcmlerde <code>vm.args<\/code> dosyas\u0131ndaki <code>-setcookie<\/code> de\u011ferinin ayn\u0131 oldu\u011fundan emin olun.<br \/>\n    *   <strong>IP Adresleri:<\/strong> <code>riak.conf<\/code> ve <code>vm.args<\/code> dosyalar\u0131ndaki IP adreslerinin do\u011fru ve di\u011fer d\u00fc\u011f\u00fcmler taraf\u0131ndan eri\u015filebilir oldu\u011fundan emin olun.<br \/>\n    *   <strong>G\u00fcvenlik Duvar\u0131:<\/strong> D\u00fc\u011f\u00fcmler aras\u0131 ileti\u015fimi engelleyen g\u00fcvenlik duvar\u0131 kurallar\u0131 olup olmad\u0131\u011f\u0131n\u0131 kontrol edin. Erlang da\u011f\u0131t\u0131m portlar\u0131 (genellikle 4369 ve 9100-9150 aral\u0131\u011f\u0131) a\u00e7\u0131k olmal\u0131d\u0131r.<br \/>\n*   <strong>Python \u0130stemcisi Ba\u011flant\u0131 Hatalar\u0131:<\/strong><br \/>\n    *   <strong>Riak Servisi \u00c7al\u0131\u015f\u0131yor mu?<\/strong>: Riak d\u00fc\u011f\u00fcm\u00fcn\u00fcn <code>sudo riak status<\/code> ile \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olun.<br \/>\n    *   <strong>Do\u011fru Port:<\/strong> Python istemcisinde belirtilen <code>pb_port<\/code> veya <code>http_port<\/code> de\u011ferinin <code>riak.conf<\/code> dosyas\u0131ndaki <code>listener.protobuf.internal<\/code> veya <code>listener.http.internal<\/code> ile e\u015fle\u015fti\u011finden emin olun.<br \/>\n    *   <strong>G\u00fcvenlik Duvar\u0131:<\/strong> Python istemcisinin \u00e7al\u0131\u015ft\u0131\u011f\u0131 makineden Riak sunucusunun portlar\u0131na eri\u015fime izin verildi\u011finden emin olun.<br \/>\n    *   <strong>IP Adresi:<\/strong> Python istemcisinde <code>riak.RiakClient()<\/code> \u00e7a\u011fr\u0131s\u0131nda do\u011fru IP adresini kulland\u0131\u011f\u0131n\u0131zdan emin olun.<\/p>\n<h4>Log Dosyalar\u0131<\/h4>\n<p>Riak&#8217;\u0131n sorun giderme i\u00e7in en \u00f6nemli kaynaklar\u0131 log dosyalar\u0131d\u0131r.<br \/>\n*   <code>\/var\/log\/riak\/console.log<\/code>: Riak d\u00fc\u011f\u00fcm\u00fcn\u00fcn Erlang VM&#8217;sinden gelen genel \u00e7\u0131kt\u0131 ve hata mesajlar\u0131n\u0131 i\u00e7erir.<br \/>\n*   <code>\/var\/log\/riak\/error.log<\/code>: Riak&#8217;\u0131n kar\u015f\u0131la\u015ft\u0131\u011f\u0131 kritik hatalar\u0131 kaydeder.<br \/>\n*   <code>\/var\/log\/riak\/current.log<\/code>: Riak&#8217;\u0131n g\u00fcncel durum ve olay bilgilerini i\u00e7erir.<\/p>\n<p>Bu dosyalar\u0131 d\u00fczenli olarak kontrol etmek, sorunlar\u0131 erken a\u015famada tespit etmenize yard\u0131mc\u0131 olacakt\u0131r.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Bu makalede, Ubuntu 14.04 i\u015fletim sistemi \u00fczerinde Riak 2&#8217;nin kurulumu ve temel yap\u0131land\u0131rmas\u0131 ile Python 3 kullanarak Riak ile nas\u0131l etkile\u015fim kurulaca\u011f\u0131 detayl\u0131 bir \u015fekilde a\u00e7\u0131klanm\u0131\u015ft\u0131r. Ad\u0131m ad\u0131m kurulum talimatlar\u0131, yap\u0131land\u0131rma dosyalar\u0131n\u0131n \u00f6nemi ve temel veri i\u015flemleri \u00f6rnekleri ile Riak&#8217;\u0131n da\u011f\u0131t\u0131k mimarisine giri\u015f yap\u0131lm\u0131\u015ft\u0131r. Ayr\u0131ca, Riak k\u00fcmeleme temelleri, performans ve g\u00fcvenlik ipu\u00e7lar\u0131 ile kar\u015f\u0131la\u015fabilece\u011finiz yayg\u0131n sorunlar\u0131n giderilmesine y\u00f6nelik bilgiler sunulmu\u015ftur.<\/p>\n<p>Riak 2, y\u00fcksek eri\u015filebilirlik ve \u00f6l\u00e7eklenebilirlik gerektiren uygulamalar i\u00e7in g\u00fc\u00e7l\u00fc bir NoSQL \u00e7\u00f6z\u00fcm\u00fc sunar. Python 3 ile entegrasyonu, geli\u015ftiricilere bu g\u00fcc\u00fc kullanmak i\u00e7in esnek ve verimli bir yol sa\u011flar. Ubuntu 14.04 gibi eski bir platformda \u00e7al\u0131\u015f\u0131yor olsan\u0131z bile, bu rehber sayesinde Riak&#8217;\u0131 ba\u015far\u0131yla kurup yap\u0131land\u0131rabilir ve Python uygulamalar\u0131n\u0131zla kullanmaya ba\u015flayabilirsiniz.<\/p>\n<p>Unutulmamal\u0131d\u0131r ki, Ubuntu 14.04 art\u0131k uzun s\u00fcreli destek (LTS) almayan eski bir i\u015fletim sistemidir. G\u00fcvenlik g\u00fcncellemeleri ve modern \u00f6zellikler i\u00e7in daha yeni Ubuntu s\u00fcr\u00fcmlerine ge\u00e7i\u015f yapmak genellikle \u00f6nerilir. Ancak bu makale, belirtilen spesifik ortamda Riak 2 ve Python 3&#8217;\u00fc ba\u015far\u0131l\u0131 bir \u015fekilde kurmak i\u00e7in gerekli t\u00fcm bilgileri sa\u011flamaktad\u0131r. Riak ve Python ekosistemleri s\u00fcrekli geli\u015fti\u011fi i\u00e7in, daha derinlemesine bilgiler ve en g\u00fcncel uygulamalar i\u00e7in resmi Riak belgelerine ve Python Riak istemcisinin GitHub sayfas\u0131na ba\u015fvurman\u0131z faydal\u0131 olacakt\u0131r.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Riak 2 ve Python 3&#8217;\u00fcn Ubuntu 14.04 \u00dczerine Kurulumu ve Yap\u0131land\u0131rmas\u0131\nGiri\u015f\nG\u00fcn\u00fcm\u00fcz\u00fcn veri odakl\u0131 d\u00fcnyas\u0131nda, y\u00fcksek \u00f6l\u00e7eklenebilirli","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1468],"tags":[],"class_list":{"0":"post-32858","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-ubuntu","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Riak 2 ve Python 3&#039;\u00fcn Ubuntu 14.04 \u00dczerine Kurulumu ve Yap\u0131land\u0131rmas\u0131 - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/riak-2-ve-python-3un-ubuntu-14-04-uzerine-kurulumu-ve-yapilandirmasi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Riak 2 ve Python 3&#039;\u00fcn Ubuntu 14.04 \u00dczerine Kurulumu ve Yap\u0131land\u0131rmas\u0131\" \/>\n<meta property=\"og:description\" content=\"Riak 2 ve Python 3&#039;\u00fcn Ubuntu 14.04 \u00dczerine Kurulumu ve Yap\u0131land\u0131rmas\u0131 Giri\u015f G\u00fcn\u00fcm\u00fcz\u00fcn veri odakl\u0131 d\u00fcnyas\u0131nda, y\u00fcksek \u00f6l\u00e7eklenebilirli\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/riak-2-ve-python-3un-ubuntu-14-04-uzerine-kurulumu-ve-yapilandirmasi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-26T15:41:37+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"22 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/riak-2-ve-python-3un-ubuntu-14-04-uzerine-kurulumu-ve-yapilandirmasi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/riak-2-ve-python-3un-ubuntu-14-04-uzerine-kurulumu-ve-yapilandirmasi\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Riak 2 ve Python 3&#8217;\u00fcn Ubuntu 14.04 \u00dczerine Kurulumu ve Yap\u0131land\u0131rmas\u0131\",\"datePublished\":\"2025-10-26T15:41:37+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/riak-2-ve-python-3un-ubuntu-14-04-uzerine-kurulumu-ve-yapilandirmasi\/\"},\"wordCount\":3304,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Ubuntu\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/riak-2-ve-python-3un-ubuntu-14-04-uzerine-kurulumu-ve-yapilandirmasi\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/riak-2-ve-python-3un-ubuntu-14-04-uzerine-kurulumu-ve-yapilandirmasi\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/riak-2-ve-python-3un-ubuntu-14-04-uzerine-kurulumu-ve-yapilandirmasi\/\",\"name\":\"Riak 2 ve Python 3'\u00fcn Ubuntu 14.04 \u00dczerine Kurulumu ve Yap\u0131land\u0131rmas\u0131 - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-26T15:41:37+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/riak-2-ve-python-3un-ubuntu-14-04-uzerine-kurulumu-ve-yapilandirmasi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/riak-2-ve-python-3un-ubuntu-14-04-uzerine-kurulumu-ve-yapilandirmasi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/riak-2-ve-python-3un-ubuntu-14-04-uzerine-kurulumu-ve-yapilandirmasi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Riak 2 ve Python 3&#8217;\u00fcn Ubuntu 14.04 \u00dczerine Kurulumu ve Yap\u0131land\u0131rmas\u0131\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Riak 2 ve Python 3'\u00fcn Ubuntu 14.04 \u00dczerine Kurulumu ve Yap\u0131land\u0131rmas\u0131 - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/riak-2-ve-python-3un-ubuntu-14-04-uzerine-kurulumu-ve-yapilandirmasi\/","og_locale":"tr_TR","og_type":"article","og_title":"Riak 2 ve Python 3'\u00fcn Ubuntu 14.04 \u00dczerine Kurulumu ve Yap\u0131land\u0131rmas\u0131","og_description":"Riak 2 ve Python 3'\u00fcn Ubuntu 14.04 \u00dczerine Kurulumu ve Yap\u0131land\u0131rmas\u0131 Giri\u015f G\u00fcn\u00fcm\u00fcz\u00fcn veri odakl\u0131 d\u00fcnyas\u0131nda, y\u00fcksek \u00f6l\u00e7eklenebilirli","og_url":"https:\/\/fatihsoysal.com\/blog\/riak-2-ve-python-3un-ubuntu-14-04-uzerine-kurulumu-ve-yapilandirmasi\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-26T15:41:37+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"22 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/riak-2-ve-python-3un-ubuntu-14-04-uzerine-kurulumu-ve-yapilandirmasi\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/riak-2-ve-python-3un-ubuntu-14-04-uzerine-kurulumu-ve-yapilandirmasi\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Riak 2 ve Python 3&#8217;\u00fcn Ubuntu 14.04 \u00dczerine Kurulumu ve Yap\u0131land\u0131rmas\u0131","datePublished":"2025-10-26T15:41:37+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/riak-2-ve-python-3un-ubuntu-14-04-uzerine-kurulumu-ve-yapilandirmasi\/"},"wordCount":3304,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Ubuntu"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/riak-2-ve-python-3un-ubuntu-14-04-uzerine-kurulumu-ve-yapilandirmasi\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/riak-2-ve-python-3un-ubuntu-14-04-uzerine-kurulumu-ve-yapilandirmasi\/","url":"https:\/\/fatihsoysal.com\/blog\/riak-2-ve-python-3un-ubuntu-14-04-uzerine-kurulumu-ve-yapilandirmasi\/","name":"Riak 2 ve Python 3'\u00fcn Ubuntu 14.04 \u00dczerine Kurulumu ve Yap\u0131land\u0131rmas\u0131 - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-26T15:41:37+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/riak-2-ve-python-3un-ubuntu-14-04-uzerine-kurulumu-ve-yapilandirmasi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/riak-2-ve-python-3un-ubuntu-14-04-uzerine-kurulumu-ve-yapilandirmasi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/riak-2-ve-python-3un-ubuntu-14-04-uzerine-kurulumu-ve-yapilandirmasi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Riak 2 ve Python 3&#8217;\u00fcn Ubuntu 14.04 \u00dczerine Kurulumu ve Yap\u0131land\u0131rmas\u0131"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32858","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=32858"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32858\/revisions"}],"predecessor-version":[{"id":32859,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32858\/revisions\/32859"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=32858"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=32858"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=32858"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}