{"id":39514,"date":"2026-02-23T05:41:02","date_gmt":"2026-02-23T02:41:02","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=39514"},"modified":"2026-02-23T05:41:02","modified_gmt":"2026-02-23T02:41:02","slug":"ubuntu-14-04-uzerinde-bir-osrm-sunucusu-kurulumu","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-uzerinde-bir-osrm-sunucusu-kurulumu\/","title":{"rendered":"Ubuntu 14.04 \u00dczerinde Bir OSRM Sunucusu Kurulumu"},"content":{"rendered":"<p><body><\/p>\n<h2>Ubuntu 14.04 \u00dczerinde Bir OSRM Sunucusu Kurulumu<\/h2>\n<h3>Giri\u015f<\/h3>\n<p>G\u00fcn\u00fcm\u00fcz\u00fcn dijital d\u00fcnyas\u0131nda konum tabanl\u0131 hizmetler ve navigasyon uygulamalar\u0131 vazge\u00e7ilmez bir hal alm\u0131\u015ft\u0131r. Haritalar \u00fczerinde en h\u0131zl\u0131 rotay\u0131 bulma, d\u00f6n\u00fc\u015f talimatlar\u0131 sa\u011flama veya belirli bir noktaya olan mesafeyi hesaplama gibi i\u015flevler, g\u00fcnl\u00fck hayat\u0131m\u0131z\u0131n \u00f6nemli bir par\u00e7as\u0131d\u0131r. Bu t\u00fcr ihtiya\u00e7lar\u0131 kar\u015f\u0131lamak i\u00e7in bir\u00e7ok ticari API ve hizmet bulunsa da, a\u00e7\u0131k kaynakl\u0131 \u00e7\u00f6z\u00fcmler hem maliyet etkinli\u011fi hem de esneklik a\u00e7\u0131s\u0131ndan \u00f6nemli avantajlar sunar. \u0130\u015fte tam da bu noktada Open Source Routing Machine (OSRM) devreye girer.<\/p>\n<p>OSRM, b\u00fcy\u00fck co\u011frafi veri k\u00fcmeleri \u00fczerinde son derece h\u0131zl\u0131 rota hesaplamalar\u0131 yapabilen, y\u00fcksek performansl\u0131 bir y\u00f6nlendirme motorudur. C++ ile yaz\u0131lm\u0131\u015f olup, OpenStreetMap (OSM) verilerini kullanarak saniyeler i\u00e7inde karma\u015f\u0131k rotalar\u0131 hesaplayabilir. Bu yetene\u011fi sayesinde, web uygulamalar\u0131ndan mobil uygulamalara, lojistik planlamadan ak\u0131ll\u0131 \u015fehir projelerine kadar geni\u015f bir kullan\u0131m alan\u0131na sahiptir. OSRM, \u00f6zellikle \u00e7evrimd\u0131\u015f\u0131 (offline) rota hesaplama yetene\u011fi, \u00f6zelle\u015ftirilebilir profil deste\u011fi (ara\u00e7, bisiklet, yaya vb.) ve kendi sunucunuzda bar\u0131nd\u0131rma imkan\u0131 sunmas\u0131yla \u00f6ne \u00e7\u0131kar. Ticari haritalama servislerinin kullan\u0131m limitleri veya maliyetleri sizin i\u00e7in bir engel te\u015fkil ediyorsa, OSRM g\u00fc\u00e7l\u00fc ve \u00f6zg\u00fcr bir alternatiftir.<\/p>\n<p>Bu kapsaml\u0131 teknik makalede, Ubuntu 14.04 i\u015fletim sistemi \u00fczerinde ad\u0131m ad\u0131m bir OSRM sunucusunun nas\u0131l kurulaca\u011f\u0131n\u0131 detayl\u0131 bir \u015fekilde inceleyece\u011fiz. Ubuntu 14.04, eski bir s\u00fcr\u00fcm olmas\u0131na ra\u011fmen, belirli senaryolarda hala kullan\u0131lmakta veya mevcut sistemlerin g\u00fcncellenmesi yerine yeni bir kurulum gerektirebilmektedir. Bu nedenle, bu \u00f6zel s\u00fcr\u00fcm \u00fczerindeki kurulum ad\u0131mlar\u0131na odaklanaca\u011f\u0131z. Kurulumun temel gereksinimlerinden ba\u015flayarak, ba\u011f\u0131ml\u0131l\u0131klar\u0131n y\u00fcklenmesi, OSRM kaynak kodunun derlenmesi, OpenStreetMap verilerinin i\u015flenmesi ve son olarak OSRM sunucusunun \u00e7al\u0131\u015ft\u0131r\u0131lmas\u0131na kadar t\u00fcm s\u00fcreci ele alaca\u011f\u0131z. Amac\u0131m\u0131z, bu rehberi takip eden herkesin kendi OSRM y\u00f6nlendirme hizmetini ba\u015far\u0131yla kurup \u00e7al\u0131\u015ft\u0131rabilmesini sa\u011flamakt\u0131r.<\/p>\n<h3>\u00d6n Gereksinimler<\/h3>\n<p>OSRM sunucusunu kurmaya ba\u015flamadan \u00f6nce, sisteminizin belirli gereksinimleri kar\u015f\u0131lad\u0131\u011f\u0131ndan emin olman\u0131z \u00f6nemlidir. Bu gereksinimler, kurulum s\u00fcrecinin sorunsuz ilerlemesi ve sunucunun optimum performansta \u00e7al\u0131\u015fmas\u0131 i\u00e7in kritik \u00f6neme sahiptir.<\/p>\n<h4>Donan\u0131m Gereksinimleri<\/h4>\n<p>1.  <strong>\u0130\u015fletim Sistemi:<\/strong> Ubuntu 14.04 (Trusty Tahr) sunucu s\u00fcr\u00fcm\u00fc. Bu rehber \u00f6zellikle bu s\u00fcr\u00fcme odaklanmaktad\u0131r. Temiz bir kurulum \u00f6nerilir.<br \/>\n2.  <strong>RAM (Bellek):<\/strong> OSRM, \u00f6zellikle b\u00fcy\u00fck co\u011frafi b\u00f6lgelerin (\u00f6rne\u011fin, t\u00fcm Avrupa veya d\u00fcnya) verilerini i\u015flerken \u00f6nemli miktarda belle\u011fe ihtiya\u00e7 duyar.<br \/>\n    *   K\u00fc\u00e7\u00fck bir b\u00f6lge (\u015fehir veya k\u00fc\u00e7\u00fck bir \u00fclke) i\u00e7in en az 4-8 GB RAM yeterli olabilir.<br \/>\n    *   Orta b\u00fcy\u00fckl\u00fckteki b\u00f6lgeler (b\u00fcy\u00fck bir \u00fclke) i\u00e7in 16-32 GB RAM \u00f6nerilir.<br \/>\n    *   \u00c7ok b\u00fcy\u00fck b\u00f6lgeler (k\u0131ta veya d\u00fcnya) i\u00e7in 64 GB veya daha fazla RAM gerekebilir.<br \/>\n    *   Bellek yetersizli\u011fi, veri i\u015fleme a\u015famas\u0131nda tak\u0131lmalara veya hatalara yol a\u00e7abilir.<br \/>\n3.  <strong>Disk Alan\u0131:<\/strong> OpenStreetMap verileri ve OSRM taraf\u0131ndan i\u015flenmi\u015f \u00e7\u0131kt\u0131 dosyalar\u0131 olduk\u00e7a b\u00fcy\u00fck olabilir.<br \/>\n    *   \u0130\u015flenecek OSM PBF dosyas\u0131n\u0131n boyutunun en az 3-5 kat\u0131 kadar bo\u015f disk alan\u0131 ay\u0131rman\u0131z \u00f6nerilir. \u00d6rne\u011fin, 1 GB&#8217;l\u0131k bir PBF dosyas\u0131 i\u00e7in 3-5 GB bo\u015f alana ihtiyac\u0131n\u0131z olacakt\u0131r.<br \/>\n    *   SSD s\u00fcr\u00fcc\u00fcler, veri i\u015fleme ve sorgu yan\u0131t s\u00fcreleri a\u00e7\u0131s\u0131ndan HDD&#8217;lere g\u00f6re \u00e7ok daha iyi performans sunar.<br \/>\n4.  <strong>\u0130\u015flemci (CPU):<\/strong> \u00c7ok \u00e7ekirdekli bir i\u015flemci (4 veya daha fazla \u00e7ekirdek) veri i\u015fleme s\u00fcresini \u00f6nemli \u00f6l\u00e7\u00fcde h\u0131zland\u0131racakt\u0131r. OSRM, derleme ve veri i\u015fleme a\u015famalar\u0131nda \u00e7oklu \u00e7ekirdek kullan\u0131m\u0131n\u0131 destekler.<\/p>\n<h4>Yaz\u0131l\u0131m Gereksinimleri ve Temel Bilgiler<\/h4>\n<p>1.  <strong>\u0130nternet Ba\u011flant\u0131s\u0131:<\/strong> Ba\u011f\u0131ml\u0131l\u0131klar\u0131 indirmek ve OSM verilerini \u00e7ekmek i\u00e7in aktif bir internet ba\u011flant\u0131s\u0131 gereklidir.<br \/>\n2.  <strong><code>sudo<\/code> Yetkileri:<\/strong> Kurulum ad\u0131mlar\u0131n\u0131n \u00e7o\u011fu sistem genelinde de\u011fi\u015fiklikler yapmay\u0131 gerektirece\u011finden, kullan\u0131c\u0131n\u0131z\u0131n <code>sudo<\/code> yetkilerine sahip olmas\u0131 gerekmektedir.<br \/>\n3.  <strong>Temel Linux Komut Sat\u0131r\u0131 Bilgisi:<\/strong> <code>apt-get<\/code>, <code>cd<\/code>, <code>ls<\/code>, <code>wget<\/code>, <code>git<\/code> gibi temel komutlar\u0131 kullanma becerisi gereklidir.<\/p>\n<p>Bu gereksinimleri kar\u015f\u0131lad\u0131\u011f\u0131n\u0131zdan emin olduktan sonra, kurulum s\u00fcrecine ge\u00e7ebiliriz.<\/p>\n<h3>Sistem G\u00fcncellemesi ve Gerekli Ara\u00e7lar\u0131n Kurulumu<\/h3>\n<p>OSRM&#8217;in derlenebilmesi ve \u00e7al\u0131\u015fabilmesi i\u00e7in bir dizi yaz\u0131l\u0131m ba\u011f\u0131ml\u0131l\u0131\u011f\u0131na ihtiya\u00e7 vard\u0131r. Ubuntu 14.04 \u00fczerinde bu ba\u011f\u0131ml\u0131l\u0131klar\u0131 y\u00fcklemek i\u00e7in <code>apt-get<\/code> paket y\u00f6neticisini kullanaca\u011f\u0131z. \u0130lk ad\u0131m olarak, sisteminizin paket listesini g\u00fcncelleyip mevcut paketleri y\u00fckseltmek her zaman iyi bir uygulamad\u0131r.<\/p>\n<h4>Sistem G\u00fcncellemesi<\/h4>\n<p>Terminali a\u00e7\u0131n ve a\u015fa\u011f\u0131daki komutlar\u0131 \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo apt-get update\nsudo apt-get upgrade -y<\/code><\/pre>\n<p>*   <code>sudo apt-get update<\/code>: Bu komut, yerel paket listenizi Ubuntu&#8217;nun depolar\u0131ndaki en son bilgilerle senkronize eder. Bu, hangi paketlerin mevcut oldu\u011funu ve hangi s\u00fcr\u00fcmlerin y\u00fcklenebilece\u011fini bilmek i\u00e7in gereklidir.<br \/>\n*   <code>sudo apt-get upgrade -y<\/code>: Bu komut, sisteminizde y\u00fckl\u00fc olan t\u00fcm paketleri, <code>update<\/code> komutuyla g\u00fcncellenen paket listesindeki daha yeni s\u00fcr\u00fcmlerine y\u00fckseltir. <code>-y<\/code> bayra\u011f\u0131, t\u00fcm sorulara otomatik olarak &#8220;evet&#8221; yan\u0131t\u0131 vererek y\u00fckseltme i\u015flemini etkile\u015fimli olmadan tamamlar. Bu ad\u0131m, g\u00fcvenlik g\u00fcncellemelerini ve kararl\u0131l\u0131k iyile\u015ftirmelerini i\u00e7erdi\u011fi i\u00e7in \u00f6nemlidir.<\/p>\n<h4>Derleme Ara\u00e7lar\u0131 ve Ba\u011f\u0131ml\u0131l\u0131klar\u0131n Kurulumu<\/h4>\n<p>OSRM, C++ ile yaz\u0131lm\u0131\u015ft\u0131r ve kaynak kodundan derlenmesi gerekir. Bu nedenle, derleme ortam\u0131n\u0131 ve OSRM&#8217;in ihtiya\u00e7 duydu\u011fu \u00e7e\u015fitli k\u00fct\u00fcphaneleri kurmam\u0131z gerekmektedir. Ubuntu 14.04 i\u00e7in gerekli paketler a\u015fa\u011f\u0131daki gibidir:<\/p>\n<pre><code class=\"language-bash\">sudo apt-get install -y \\\n    build-essential \\\n    git \\\n    cmake \\\n    pkg-config \\\n    libboost-all-dev \\\n    libtbb-dev \\\n    liblua5.2-dev \\\n    libstxxl-dev \\\n    libxml2-dev \\\n    libzip-dev \\\n    libbz2-dev \\\n    libosmpbf-dev \\\n    liblz4-dev \\\n    libjsoncpp-dev \\\n    libprotobuf-dev \\\n    protobuf-compiler \\\n    libgeos-dev \\\n    libspatialite-dev \\\n    libluajit-5.1-dev \\\n    libpng-dev \\\n    libicu-dev \\\n    libcurl4-openssl-dev<\/code><\/pre>\n<p>Bu komut, OSRM&#8217;in derlenmesi ve \u00e7al\u0131\u015fmas\u0131 i\u00e7in gerekli olan t\u00fcm temel paketleri ve k\u00fct\u00fcphaneleri kuracakt\u0131r. Her bir paketin ne i\u015fe yarad\u0131\u011f\u0131na k\u0131saca de\u011finelim:<\/p>\n<p>*   <strong><code>build-essential<\/code><\/strong>: C\/C++ programlar\u0131n\u0131 derlemek i\u00e7in gerekli olan GCC, G++ ve make gibi temel ara\u00e7lar\u0131 i\u00e7erir.<br \/>\n*   <strong><code>git<\/code><\/strong>: OSRM kaynak kodunu GitHub deposundan \u00e7ekmek i\u00e7in kullan\u0131l\u0131r.<br \/>\n*   <strong><code>cmake<\/code><\/strong>: OSRM&#8217;in derleme s\u00fcrecini y\u00f6netmek i\u00e7in kullan\u0131lan bir yap\u0131land\u0131rma arac\u0131d\u0131r.<br \/>\n*   <strong><code>pkg-config<\/code><\/strong>: Derleme s\u0131ras\u0131nda k\u00fct\u00fcphanelerin konumlar\u0131n\u0131 ve derleme bayraklar\u0131n\u0131 bulmaya yard\u0131mc\u0131 olur.<br \/>\n*   <strong><code>libboost-all-dev<\/code><\/strong>: Boost C++ k\u00fct\u00fcphane koleksiyonunun geli\u015ftirme dosyalar\u0131d\u0131r. OSRM, bir\u00e7ok Boost bile\u015fenini kullan\u0131r (\u00f6rne\u011fin, dosya sistemi i\u015flemleri, \u00e7oklu i\u015f par\u00e7ac\u0131\u011f\u0131). Ubuntu 14.04&#8217;te genellikle Boost 1.55 bulunur, bu da OSRM&#8217;in \u00e7o\u011fu s\u00fcr\u00fcm\u00fc i\u00e7in yeterlidir.<br \/>\n*   <strong><code>libtbb-dev<\/code><\/strong>: Intel Threading Building Blocks (TBB) k\u00fct\u00fcphanesinin geli\u015ftirme dosyalar\u0131d\u0131r. Paralel programlama i\u00e7in kullan\u0131l\u0131r ve OSRM&#8217;in veri i\u015fleme h\u0131z\u0131n\u0131 art\u0131r\u0131r.<br \/>\n*   <strong><code>liblua5.2-dev<\/code><\/strong>: Lua betik dilinin 5.2 s\u00fcr\u00fcm\u00fcn\u00fcn geli\u015ftirme dosyalar\u0131d\u0131r. OSRM, y\u00f6nlendirme profillerini (araba, bisiklet vb.) tan\u0131mlamak i\u00e7in Lua betiklerini kullan\u0131r.<br \/>\n*   <strong><code>libstxxl-dev<\/code><\/strong>: STXXL (Standard Template Library for Extra Large Data Sets) k\u00fct\u00fcphanesinin geli\u015ftirme dosyalar\u0131d\u0131r. Disk tabanl\u0131 algoritmalar i\u00e7in kullan\u0131l\u0131r ve OSRM&#8217;in b\u00fcy\u00fck veri k\u00fcmeleriyle \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flar.<br \/>\n*   <strong><code>libxml2-dev<\/code><\/strong>: XML belgelerini ayr\u0131\u015ft\u0131rmak ve i\u015flemek i\u00e7in kullan\u0131lan libxml2 k\u00fct\u00fcphanesinin geli\u015ftirme dosyalar\u0131d\u0131r.<br \/>\n*   <strong><code>libzip-dev<\/code><\/strong>: ZIP ar\u015fivleriyle \u00e7al\u0131\u015fmak i\u00e7in kullan\u0131lan libzip k\u00fct\u00fcphanesinin geli\u015ftirme dosyalar\u0131d\u0131r.<br \/>\n*   <strong><code>libbz2-dev<\/code><\/strong>: Bzip2 s\u0131k\u0131\u015ft\u0131rma format\u0131yla \u00e7al\u0131\u015fmak i\u00e7in kullan\u0131lan k\u00fct\u00fcphanenin geli\u015ftirme dosyalar\u0131d\u0131r.<br \/>\n*   <strong><code>libosmpbf-dev<\/code><\/strong>: OpenStreetMap PBF (Protocolbuffer Binary Format) dosyalar\u0131n\u0131 ayr\u0131\u015ft\u0131rmak i\u00e7in kullan\u0131lan k\u00fct\u00fcphanenin geli\u015ftirme dosyalar\u0131d\u0131r. OSM verileri genellikle bu formatta da\u011f\u0131t\u0131l\u0131r.<br \/>\n*   <strong><code>liblz4-dev<\/code><\/strong>: LZ4 s\u0131k\u0131\u015ft\u0131rma algoritmas\u0131 i\u00e7in k\u00fct\u00fcphanenin geli\u015ftirme dosyalar\u0131d\u0131r.<br \/>\n*   <strong><code>libjsoncpp-dev<\/code><\/strong>: JSON verilerini ayr\u0131\u015ft\u0131rmak ve olu\u015fturmak i\u00e7in kullan\u0131lan C++ k\u00fct\u00fcphanesinin geli\u015ftirme dosyalar\u0131d\u0131r. OSRM API yan\u0131tlar\u0131 genellikle JSON format\u0131ndad\u0131r.<br \/>\n*   <strong><code>libprotobuf-dev<\/code> ve <code>protobuf-compiler<\/code><\/strong>: Google&#8217;\u0131n Protocol Buffers k\u00fct\u00fcphanesi ve derleyicisidir. OSM PBF format\u0131 Protocol Buffers \u00fczerine kuruludur.<br \/>\n*   <strong><code>libgeos-dev<\/code><\/strong>: GEOS (Geometry Engine &#8211; Open Source) k\u00fct\u00fcphanesinin geli\u015ftirme dosyalar\u0131d\u0131r. Co\u011frafi geometrik i\u015flemler i\u00e7in kullan\u0131l\u0131r.<br \/>\n*   <strong><code>libspatialite-dev<\/code><\/strong>: SpatiaLite k\u00fct\u00fcphanesinin geli\u015ftirme dosyalar\u0131d\u0131r. SQLite veritabanlar\u0131na uzamsal yetenekler ekler.<br \/>\n*   <strong><code>libluajit-5.1-dev<\/code><\/strong>: LuaJIT (Just-In-Time Compiler for Lua) 5.1 s\u00fcr\u00fcm\u00fcn\u00fcn geli\u015ftirme dosyalar\u0131d\u0131r. Lua betiklerinin performans\u0131n\u0131 art\u0131r\u0131r.<br \/>\n*   <strong><code>libpng-dev<\/code><\/strong>: PNG g\u00f6r\u00fcnt\u00fc format\u0131yla \u00e7al\u0131\u015fmak i\u00e7in k\u00fct\u00fcphanenin geli\u015ftirme dosyalar\u0131d\u0131r.<br \/>\n*   <strong><code>libicu-dev<\/code><\/strong>: International Components for Unicode (ICU) k\u00fct\u00fcphanesinin geli\u015ftirme dosyalar\u0131d\u0131r. Uluslararas\u0131la\u015ft\u0131rma ve yerelle\u015ftirme (\u00f6rne\u011fin, metin i\u015fleme) i\u00e7in kullan\u0131l\u0131r.<br \/>\n*   <strong><code>libcurl4-openssl-dev<\/code><\/strong>: cURL k\u00fct\u00fcphanesinin geli\u015ftirme dosyalar\u0131d\u0131r. HTTP istekleri yapmak i\u00e7in kullan\u0131l\u0131r, baz\u0131 OSRM bile\u015fenleri veya eklentileri i\u00e7in gerekli olabilir.<\/p>\n<p>Bu paketlerin kurulumu, sisteminizin internet ba\u011flant\u0131s\u0131 h\u0131z\u0131na ve sunucunun performans\u0131na ba\u011fl\u0131 olarak biraz zaman alabilir. Kurulum tamamland\u0131ktan sonra, OSRM kaynak kodunu indirmeye ve derlemeye haz\u0131r olacaks\u0131n\u0131z.<\/p>\n<h3>OSRM Kurulumu (Kaynak Koddan Derleme)<\/h3>\n<p>Gerekli t\u00fcm ba\u011f\u0131ml\u0131l\u0131klar y\u00fcklendikten sonra, OSRM kaynak kodunu GitHub deposundan \u00e7ekebilir ve derleme i\u015flemine ba\u015flayabiliriz. Bu b\u00f6l\u00fcm, OSRM&#8217;in ana bile\u015fenlerini kendi sisteminizde olu\u015fturma s\u00fcrecini kapsar.<\/p>\n<h4>OSRM Kaynak Kodunu \u00c7ekme<\/h4>\n<p>\u00d6ncelikle, OSRM kaynak kodunu depodan klonlaman\u0131z gerekmektedir. Bunu yapmak i\u00e7in <code>git<\/code> komutunu kullanaca\u011f\u0131z. Kaynak kodu genellikle kullan\u0131c\u0131n\u0131n ana dizininde veya <code>\/opt<\/code> gibi bir dizinde tutulur. Bu rehberde, kullan\u0131c\u0131n\u0131n ana dizinini kullanaca\u011f\u0131z.<\/p>\n<pre><code class=\"language-bash\">cd ~\ngit clone --recursive https:\/\/github.com\/Project-OSRM\/osrm-backend.git<\/code><\/pre>\n<p>*   <code>cd ~<\/code>: Komutu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131z dizini kullan\u0131c\u0131n\u0131z\u0131n ana dizinine de\u011fi\u015ftirir.<br \/>\n*   <code>git clone --recursive https:\/\/github.com\/Project-OSRM\/osrm-backend.git<\/code>: Bu komut, OSRM&#8217;in ana deposunu <code>osrm-backend<\/code> ad\u0131nda bir dizine klonlar. <code>--recursive<\/code> bayra\u011f\u0131 \u00e7ok \u00f6nemlidir, \u00e7\u00fcnk\u00fc OSRM, baz\u0131 ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 alt mod\u00fcller (submodules) olarak y\u00f6netir. Bu bayrak olmadan, alt mod\u00fcller indirilmez ve derleme ba\u015far\u0131s\u0131z olur.<\/p>\n<p>Bu i\u015flem, internet ba\u011flant\u0131n\u0131z\u0131n h\u0131z\u0131na ba\u011fl\u0131 olarak birka\u00e7 dakika s\u00fcrebilir.<\/p>\n<h4>Derleme Dizini Olu\u015fturma ve Yap\u0131land\u0131rma<\/h4>\n<p>Kaynak kodu indirdikten sonra, derleme i\u00e7in ayr\u0131 bir dizin olu\u015fturmak iyi bir uygulamad\u0131r. Bu, derleme dosyalar\u0131n\u0131 kaynak kodundan ayr\u0131 tutar ve temiz bir \u00e7al\u0131\u015fma alan\u0131 sa\u011flar.<\/p>\n<pre><code class=\"language-bash\">cd osrm-backend\nmkdir build\ncd build<\/code><\/pre>\n<p>\u015eimdi <code>cmake<\/code> kullanarak derleme yap\u0131land\u0131rmas\u0131n\u0131 olu\u015fturaca\u011f\u0131z. <code>cmake<\/code> komutu, sisteminizdeki k\u00fct\u00fcphanelerin konumlar\u0131n\u0131 ve di\u011fer derleme se\u00e7eneklerini alg\u0131lar ve <code>Makefile<\/code> dosyalar\u0131n\u0131 olu\u015fturur.<\/p>\n<pre><code class=\"language-bash\">cmake .. -DCMAKE_BUILD_TYPE=Release<\/code><\/pre>\n<p>*   <code>cmake ..<\/code>: <code>..<\/code> (iki nokta), <code>cmake<\/code>&#8216;e bir \u00fcst dizindeki (yani <code>osrm-backend<\/code> dizinindeki) <code>CMakeLists.txt<\/code> dosyas\u0131n\u0131 kullanmas\u0131n\u0131 s\u00f6yler. Bu dosya, OSRM&#8217;in derleme talimatlar\u0131n\u0131 i\u00e7erir.<br \/>\n*   <code>-DCMAKE_BUILD_TYPE=Release<\/code>: Bu bayrak, derlemenin &#8220;Release&#8221; modunda yap\u0131lmas\u0131n\u0131 sa\u011flar. Release modu, hata ay\u0131klama bilgilerini i\u00e7ermez ve performans i\u00e7in optimize edilmi\u015f kod \u00fcretir. Bu, \u00fcretim ortamlar\u0131 i\u00e7in tercih edilen moddur.<\/p>\n<p><code>cmake<\/code> i\u015flemi ba\u015far\u0131yla tamamland\u0131\u011f\u0131nda, derleme i\u00e7in gerekli olan <code>Makefile<\/code> dosyalar\u0131 <code>build<\/code> dizininde olu\u015fturulmu\u015f olacakt\u0131r.<\/p>\n<h4>OSRM&#8217;i Derleme<\/h4>\n<p><code>Makefile<\/code> dosyalar\u0131 olu\u015fturulduktan sonra, <code>make<\/code> komutunu kullanarak OSRM&#8217;i derleyebiliriz.<\/p>\n<pre><code class=\"language-bash\">make -j$(nproc)<\/code><\/pre>\n<p>*   <code>make<\/code>: Derleme i\u015flemini ba\u015flat\u0131r.<br \/>\n*   <code>-j$(nproc)<\/code>: Bu bayrak, derleme i\u015flemini sisteminizdeki \u00e7ekirdek say\u0131s\u0131 kadar paralel i\u015f par\u00e7ac\u0131\u011f\u0131 kullanarak h\u0131zland\u0131r\u0131r. <code>$(nproc)<\/code> komutu, sistemdeki mant\u0131ksal i\u015flemci \u00e7ekirde\u011fi say\u0131s\u0131n\u0131 d\u00f6nd\u00fcr\u00fcr. \u00d6rne\u011fin, 4 \u00e7ekirdekli bir sistemde <code>make -j4<\/code> gibi \u00e7al\u0131\u015facakt\u0131r. Bu, derleme s\u00fcresini \u00f6nemli \u00f6l\u00e7\u00fcde k\u0131salt\u0131r.<\/p>\n<p>Derleme i\u015flemi, sisteminizin performans\u0131na ve RAM miktar\u0131na ba\u011fl\u0131 olarak 15 dakika ile 1 saat veya daha fazla s\u00fcrebilir. Bu s\u00fcre\u00e7te terminalde bir\u00e7ok derleme \u00e7\u0131kt\u0131s\u0131 g\u00f6receksiniz. Herhangi bir hata mesaj\u0131 almad\u0131\u011f\u0131n\u0131z s\u00fcrece i\u015flem do\u011fru \u015fekilde ilerliyor demektir.<\/p>\n<h4>Kurulum (\u0130ste\u011fe Ba\u011fl\u0131)<\/h4>\n<p>Derleme tamamland\u0131ktan sonra, OSRM ikili dosyalar\u0131n\u0131 sistem genelinde eri\u015filebilir bir konuma kurabilirsiniz. Bu ad\u0131m iste\u011fe ba\u011fl\u0131d\u0131r ancak, OSRM ara\u00e7lar\u0131n\u0131 herhangi bir dizinden \u00e7al\u0131\u015ft\u0131rabilmek i\u00e7in genellikle tavsiye edilir.<\/p>\n<pre><code class=\"language-bash\">sudo make install<\/code><\/pre>\n<p>Bu komut, <code>osrm-extract<\/code>, <code>osrm-partition<\/code>, <code>osrm-customize<\/code> ve <code>osrm-routed<\/code> gibi OSRM y\u00fcr\u00fct\u00fclebilir dosyalar\u0131n\u0131 genellikle <code>\/usr\/local\/bin<\/code> dizinine kopyalar. Bu dizin, PATH ortam de\u011fi\u015fkeninizde oldu\u011fu i\u00e7in, bu komutlar\u0131 tam yolunu belirtmeden do\u011frudan terminalden \u00e7al\u0131\u015ft\u0131rabilirsiniz.<\/p>\n<p>Bu ad\u0131mlar\u0131 ba\u015far\u0131yla tamamlad\u0131ktan sonra, OSRM \u00e7ekirdek motoru sisteminizde kurulmu\u015f ve kullan\u0131ma haz\u0131r hale gelmi\u015f demektir. \u015eimdi s\u0131ra, rota hesaplamalar\u0131 i\u00e7in OpenStreetMap verilerini haz\u0131rlamaya geldi.<\/p>\n<h3>Veri Haz\u0131rl\u0131\u011f\u0131<\/h3>\n<p>OSRM&#8217;in rota hesaplamalar\u0131 yapabilmesi i\u00e7in OpenStreetMap (OSM) verilerine ihtiyac\u0131 vard\u0131r. Bu veriler genellikle <code>.osm.pbf<\/code> format\u0131nda indirilir ve OSRM&#8217;in kendi i\u00e7 format\u0131na d\u00f6n\u00fc\u015ft\u00fcr\u00fclmesi gerekir. Bu s\u00fcre\u00e7 \u00fc\u00e7 ana ad\u0131mdan olu\u015fur: veriyi indirme, profili se\u00e7me ve veriyi i\u015fleme (extract, partition, customize).<\/p>\n<h4>1. OpenStreetMap Verisini \u0130ndirme<\/h4>\n<p>OSM verilerini \u00e7e\u015fitli kaynaklardan indirebilirsiniz. En pop\u00fcler kaynaklardan baz\u0131lar\u0131 \u015funlard\u0131r:<\/p>\n<p>*   <strong>Geofabrik:<\/strong> D\u00fcnyan\u0131n bir\u00e7ok \u00fclkesi ve b\u00f6lgesi i\u00e7in d\u00fczenli olarak g\u00fcncellenen PBF dosyalar\u0131 sunar. (<code>http:\/\/download.geofabrik.de\/<\/code>)<br \/>\n*   <strong>BBBike:<\/strong> Daha k\u00fc\u00e7\u00fck \u015fehirler veya \u00f6zel b\u00f6lgeler i\u00e7in \u00f6zel kesitler olu\u015fturman\u0131za olanak tan\u0131r. (<code>https:\/\/extract.bbbike.org\/<\/code>)<\/p>\n<p>Bu rehber i\u00e7in, Almanya&#8217;n\u0131n Baden-W\u00fcrttemberg eyaletinin k\u00fc\u00e7\u00fck bir b\u00f6lgesini kullanaca\u011f\u0131z. Bu, test ama\u00e7l\u0131 kurulumlar i\u00e7in h\u0131zl\u0131 ve y\u00f6netilebilir bir boyuttad\u0131r. Ger\u00e7ek projeleriniz i\u00e7in ihtiyac\u0131n\u0131z olan b\u00f6lgeyi indirmelisiniz.<\/p>\n<pre><code class=\"language-bash\">cd ~\nmkdir osrm-data\ncd osrm-data\nwget http:\/\/download.geofabrik.de\/europe\/germany\/baden-wuerttemberg-latest.osm.pbf<\/code><\/pre>\n<p>*   <code>mkdir osrm-data<\/code>: \u0130ndirilecek veri dosyalar\u0131 i\u00e7in yeni bir dizin olu\u015ftururuz. Bu, \u00e7al\u0131\u015fma alan\u0131n\u0131z\u0131 d\u00fczenli tutman\u0131za yard\u0131mc\u0131 olur.<br \/>\n*   <code>wget ...<\/code>: Belirtilen URL&#8217;den PBF dosyas\u0131n\u0131 indirir. \u0130ndirme s\u00fcresi internet ba\u011flant\u0131n\u0131z\u0131n h\u0131z\u0131na ve dosyan\u0131n boyutuna ba\u011fl\u0131 olacakt\u0131r.<\/p>\n<h4>2. Y\u00f6nlendirme Profili Se\u00e7imi<\/h4>\n<p>OSRM, farkl\u0131 ula\u015f\u0131m modlar\u0131 (araba, bisiklet, yaya vb.) i\u00e7in farkl\u0131 y\u00f6nlendirme kurallar\u0131 ve h\u0131z profilleri kullan\u0131r. Bu kurallar, Lua betikleri \u015feklinde OSRM&#8217;in <code>profiles<\/code> dizininde bulunur.<\/p>\n<p>Kaynak kodu klonlad\u0131\u011f\u0131n\u0131z <code>osrm-backend<\/code> dizininin i\u00e7inde <code>profiles<\/code> ad\u0131nda bir dizin bulacaks\u0131n\u0131z. Bu dizin, <code>car.lua<\/code>, <code>bike.lua<\/code>, <code>foot.lua<\/code> gibi \u00f6nceden tan\u0131mlanm\u0131\u015f profilleri i\u00e7erir.<\/p>\n<p>*   <strong><code>car.lua<\/code><\/strong>: Arabalar i\u00e7in varsay\u0131lan profildir. Yollar\u0131n h\u0131z limitlerini, d\u00f6n\u00fc\u015f k\u0131s\u0131tlamalar\u0131n\u0131 ve di\u011fer ara\u00e7 odakl\u0131 kurallar\u0131 dikkate al\u0131r.<br \/>\n*   <strong><code>bike.lua<\/code><\/strong>: Bisikletler i\u00e7in optimize edilmi\u015ftir, bisiklet yollar\u0131n\u0131 ve bisiklet dostu rotalar\u0131 tercih eder.<br \/>\n*   <strong><code>foot.lua<\/code><\/strong>: Yayalar i\u00e7in optimize edilmi\u015ftir, yaya yollar\u0131n\u0131, parklar\u0131 ve k\u0131sa mesafeli kestirmeleri kullan\u0131r.<\/p>\n<p>Bu rehberde, <code>car.lua<\/code> profilini kullanarak araba rotalar\u0131 hesaplayaca\u011f\u0131z.<\/p>\n<h4>3. Veriyi \u0130\u015fleme (Extract, Partition, Customize)<\/h4>\n<p>\u0130ndirilen PBF dosyas\u0131n\u0131 OSRM&#8217;in kullanabilece\u011fi dahili formata d\u00f6n\u00fc\u015ft\u00fcrmek i\u00e7in \u00fc\u00e7 a\u015famal\u0131 bir i\u015flem gereklidir:<\/p>\n<h5>a. <code>osrm-extract<\/code><\/h5>\n<p>Bu ad\u0131m, ham OpenStreetMap verilerini (PBF dosyas\u0131) OSRM&#8217;in dahili, s\u0131k\u0131\u015ft\u0131r\u0131lm\u0131\u015f ve y\u00f6nlendirme i\u00e7in optimize edilmi\u015f format\u0131na d\u00f6n\u00fc\u015ft\u00fcr\u00fcr. Bu format, <code>.osrm<\/code> uzant\u0131l\u0131 bir dosyad\u0131r. Bu a\u015famada, se\u00e7ilen y\u00f6nlendirme profili (\u00f6rne\u011fin <code>car.lua<\/code>) uygulan\u0131r.<\/p>\n<pre><code class=\"language-bash\">cd ~\/osrm-data\nosrm-extract -p ~\/osrm-backend\/profiles\/car.lua baden-wuerttemberg-latest.osm.pbf<\/code><\/pre>\n<p>*   <code>osrm-extract<\/code>: OSRM&#8217;in veri \u00e7\u0131karma arac\u0131d\u0131r.<br \/>\n*   <code>-p ~\/osrm-backend\/profiles\/car.lua<\/code>: Kullan\u0131lacak y\u00f6nlendirme profilinin yolunu belirtir. Burada <code>car.lua<\/code> profilini kullan\u0131yoruz.<br \/>\n*   <code>baden-wuerttemberg-latest.osm.pbf<\/code>: \u0130\u015flenecek OSM PBF dosyas\u0131n\u0131n ad\u0131d\u0131r.<\/p>\n<p>Bu i\u015flem, PBF dosyas\u0131n\u0131n boyutuna ve sisteminizin RAM\/CPU performans\u0131na ba\u011fl\u0131 olarak zaman alabilir. Ba\u015far\u0131l\u0131 bir \u015fekilde tamamland\u0131\u011f\u0131nda, <code>baden-wuerttemberg-latest.osrm<\/code> gibi bir dosya seti olu\u015facakt\u0131r.<\/p>\n<h5>b. <code>osrm-partition<\/code><\/h5>\n<p><code>osrm-partition<\/code> arac\u0131, \u00e7\u0131kar\u0131lan graf\u0131 daha h\u0131zl\u0131 sorgular i\u00e7in mant\u0131ksal b\u00f6l\u00fcmlere (partitions) ay\u0131r\u0131r. Bu, \u00f6zellikle b\u00fcy\u00fck veri k\u00fcmelerinde rota hesaplama h\u0131z\u0131n\u0131 art\u0131rmak i\u00e7in kritik \u00f6neme sahiptir. OSRM, hiyerar\u015fik bir y\u00f6nlendirme yakla\u015f\u0131m\u0131 kullan\u0131r ve bu ad\u0131m, bu hiyerar\u015finin ilk b\u00f6l\u00fcm\u00fcn\u00fc olu\u015fturur.<\/p>\n<pre><code class=\"language-bash\">osrm-partition baden-wuerttemberg-latest.osrm<\/code><\/pre>\n<p>*   <code>osrm-partition<\/code>: OSRM&#8217;in graf b\u00f6l\u00fcmleme arac\u0131d\u0131r.<br \/>\n*   <code>baden-wuerttemberg-latest.osrm<\/code>: <code>osrm-extract<\/code> taraf\u0131ndan olu\u015fturulan ana OSRM veri dosyas\u0131d\u0131r.<\/p>\n<p>Bu ad\u0131m da olduk\u00e7a bellek yo\u011fun olabilir. \u0130\u015flem tamamland\u0131\u011f\u0131nda, <code>.osrm.hsgr<\/code>, <code>.osrm.ramIndex<\/code> gibi ek dosyalar olu\u015fturulacakt\u0131r.<\/p>\n<h5>c. <code>osrm-customize<\/code><\/h5>\n<p><code>osrm-customize<\/code> arac\u0131, b\u00f6l\u00fcmlenmi\u015f graf\u0131 daha da optimize eder ve y\u00f6nlendirme profiline \u00f6zg\u00fc ek verileri (\u00f6rne\u011fin, d\u00f6n\u00fc\u015f k\u0131s\u0131tlamalar\u0131, a\u011f\u0131rl\u0131klar) uygular. Bu, son rota hesaplama performans\u0131n\u0131 ve do\u011frulu\u011funu do\u011frudan etkiler.<\/p>\n<pre><code class=\"language-bash\">osrm-customize baden-wuerttemberg-latest.osrm<\/code><\/pre>\n<p>*   <code>osrm-customize<\/code>: OSRM&#8217;in graf \u00f6zelle\u015ftirme arac\u0131d\u0131r.<br \/>\n*   <code>baden-wuerttemberg-latest.osrm<\/code>: Yine ana OSRM veri dosyas\u0131d\u0131r.<\/p>\n<p>Bu i\u015flem, <code>.osrm.cell_metrics<\/code>, <code>.osrm.cnbg<\/code> gibi daha fazla dosya olu\u015fturacakt\u0131r. \u00dc\u00e7 ad\u0131m\u0131n da ba\u015far\u0131yla tamamlanmas\u0131yla, OSRM sunucusunun kullan\u0131ma haz\u0131r hale getirilmesi i\u00e7in gerekli t\u00fcm veri dosyalar\u0131 haz\u0131rlanm\u0131\u015f olur. Art\u0131k OSRM sunucusunu ba\u015flatmaya ge\u00e7ebiliriz.<\/p>\n<h3>OSRM Sunucusunu \u00c7al\u0131\u015ft\u0131rma<\/h3>\n<p>Veri dosyalar\u0131 haz\u0131rland\u0131ktan sonra, OSRM sunucusunu (<code>osrm-routed<\/code>) ba\u015flatabilir ve rota sorgular\u0131n\u0131 kabul etmeye ba\u015flayabiliriz. Sunucuyu \u00e7al\u0131\u015ft\u0131rman\u0131n birka\u00e7 yolu vard\u0131r; basit bir terminal komutundan ba\u015flayarak, \u00fcretim ortamlar\u0131 i\u00e7in daha sa\u011flam \u00e7\u00f6z\u00fcmlere kadar.<\/p>\n<h4>Basit Bir \u015eekilde Sunucuyu Ba\u015flatma<\/h4>\n<p>Test amac\u0131yla, sunucuyu do\u011frudan terminalden ba\u015flatabilirsiniz.<\/p>\n<pre><code class=\"language-bash\">cd ~\/osrm-data\nosrm-routed baden-wuerttemberg-latest.osrm<\/code><\/pre>\n<p>*   <code>cd ~\/osrm-data<\/code>: Veri dosyalar\u0131n\u0131n bulundu\u011fu dizine ge\u00e7i\u015f yapar\u0131z.<br \/>\n*   <code>osrm-routed baden-wuerttemberg-latest.osrm<\/code>: OSRM y\u00f6nlendirme daemon&#8217;\u0131n\u0131 ba\u015flat\u0131r ve ona hangi OSRM veri setini kullanaca\u011f\u0131n\u0131 s\u00f6yler.<\/p>\n<p>Sunucu varsay\u0131lan olarak <code>0.0.0.0:5000<\/code> adresinde dinlemeye ba\u015flayacakt\u0131r. Terminalde sunucunun ba\u015flat\u0131ld\u0131\u011f\u0131na dair mesajlar\u0131 g\u00f6rmelisiniz. Sunucu bu \u015fekilde \u00e7al\u0131\u015f\u0131rken, terminal penceresini kapat\u0131rsan\u0131z sunucu da duracakt\u0131r.<\/p>\n<h4>Sunucuyu Test Etme<\/h4>\n<p>Sunucu \u00e7al\u0131\u015fmaya ba\u015flad\u0131ktan sonra, bir web taray\u0131c\u0131s\u0131 veya <code>curl<\/code> komutu kullanarak test edebilirsiniz. Varsay\u0131lan olarak, OSRM sunucusu <code>http:\/\/localhost:5000<\/code> adresinde \u00e7al\u0131\u015f\u0131r.<\/p>\n<p><strong>Web Taray\u0131c\u0131s\u0131 ile:<\/strong><br \/>\nE\u011fer sunucuyu yerel makinenizde \u00e7al\u0131\u015ft\u0131r\u0131yorsan\u0131z, taray\u0131c\u0131n\u0131zda a\u015fa\u011f\u0131daki adresi a\u00e7\u0131n:<br \/>\n<code>http:\/\/localhost:5000\/route\/v1\/driving\/8.0,48.5;8.1,48.6<\/code><br \/>\n(Bu koordinatlar Baden-W\u00fcrttemberg i\u00e7indeki \u00f6rnek noktalard\u0131r.)<\/p>\n<p>E\u011fer sunucuyu uzak bir makinede \u00e7al\u0131\u015ft\u0131r\u0131yorsan\u0131z, <code>localhost<\/code> yerine sunucunuzun IP adresini veya alan ad\u0131n\u0131 kullan\u0131n:<br \/>\n<code>http:\/\/SUNUCU_IP_ADRES\u0130:5000\/route\/v1\/driving\/8.0,48.5;8.1,48.6<\/code><\/p>\n<p><strong><code>curl<\/code> Komutu ile:<\/strong><br \/>\nTerminalde a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">curl \"http:\/\/localhost:5000\/route\/v1\/driving\/8.0,48.5;8.1,48.6\"<\/code><\/pre>\n<p>Her iki durumda da, OSRM&#8217;den JSON format\u0131nda bir rota yan\u0131t\u0131 almal\u0131s\u0131n\u0131z. Yan\u0131t, rota bilgileri, mesafe, s\u00fcre ve d\u00f6n\u00fc\u015f talimatlar\u0131 gibi detaylar\u0131 i\u00e7erecektir.<\/p>\n<h4>\u00dcretim Ortam\u0131 \u0130\u00e7in: Upstart ile Sunucuyu Daemonize Etme (Ubuntu 14.04)<\/h4>\n<p>\u00dcretim ortam\u0131nda, sunucunun arka planda s\u00fcrekli \u00e7al\u0131\u015fmas\u0131 ve sistem yeniden ba\u015flat\u0131ld\u0131\u011f\u0131nda otomatik olarak ba\u015flamas\u0131 istenir. Ubuntu 14.04, hizmet y\u00f6netimi i\u00e7in <code>Upstart<\/code> kullan\u0131r (daha yeni Ubuntu s\u00fcr\u00fcmleri <code>systemd<\/code> kullan\u0131r). Bir Upstart beti\u011fi olu\u015fturarak OSRM sunucusunu bir hizmet olarak y\u00f6netebiliriz.<\/p>\n<p>\u00d6ncelikle, OSRM verilerinizin ve y\u00fcr\u00fct\u00fclebilir dosyalar\u0131n\u0131z\u0131n tam yollar\u0131n\u0131 not edin. \u00d6rne\u011fin:<br \/>\n*   OSRM Veri Dosyas\u0131: <code>\/home\/kullanici_adi\/osrm-data\/baden-wuerttemberg-latest.osrm<\/code><br \/>\n*   <code>osrm-routed<\/code> y\u00fcr\u00fct\u00fclebilir dosyas\u0131: <code>\/usr\/local\/bin\/osrm-routed<\/code> (e\u011fer <code>sudo make install<\/code> kulland\u0131ysan\u0131z) veya <code>\/home\/kullanici_adi\/osrm-backend\/build\/osrm-routed<\/code> (e\u011fer kurmad\u0131ysan\u0131z).<\/p>\n<p>\u015eimdi, <code>\/etc\/init\/osrm.conf<\/code> ad\u0131nda yeni bir Upstart yap\u0131land\u0131rma dosyas\u0131 olu\u015ftural\u0131m:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/init\/osrm.conf<\/code><\/pre>\n<p>Dosyan\u0131n i\u00e7ine a\u015fa\u011f\u0131daki i\u00e7eri\u011fi yap\u0131\u015ft\u0131r\u0131n ve <code>kullanici_adi<\/code> ile <code>\/home\/kullanici_adi<\/code> k\u0131s\u0131mlar\u0131n\u0131 kendi sisteminize g\u00f6re d\u00fczenleyin:<\/p>\n<pre><code class=\"language-ini\">description \"OSRM Routing Server\"\n\nstart on runlevel [2345]\nstop on runlevel [!2345]\n\nrespawn\nrespawn limit 10 5\n\nsetuid kullanici_adi\nsetgid kullanici_adi\n\n<h2>OSRM veri dosyalar\u0131n\u0131n bulundu\u011fu dizin<\/h2>\nchdir \/home\/kullanici_adi\/osrm-data\n\n<h2>OSRM y\u00fcr\u00fct\u00fclebilir dosyas\u0131n\u0131n tam yolu ve veri dosyas\u0131<\/h2>\nexec \/usr\/local\/bin\/osrm-routed baden-wuerttemberg-latest.osrm --ip 0.0.0.0 --port 5000<\/code><\/pre>\n<p>*   <code>description<\/code>: Hizmetin k\u0131sa bir a\u00e7\u0131klamas\u0131.<br \/>\n*   <code>start on runlevel [2345]<\/code>: Sunucunun \u00e7ok kullan\u0131c\u0131l\u0131 grafiksel olmayan (2) ve \u00e7ok kullan\u0131c\u0131l\u0131 grafiksel (3, 4, 5) runlevel&#8217;larda ba\u015flamas\u0131n\u0131 sa\u011flar.<br \/>\n*   <code>stop on runlevel [!2345]<\/code>: Bu runlevel&#8217;lar\u0131n d\u0131\u015f\u0131na \u00e7\u0131k\u0131ld\u0131\u011f\u0131nda (\u00f6rne\u011fin sistem kapan\u0131rken) hizmetin durmas\u0131n\u0131 sa\u011flar.<br \/>\n*   <code>respawn<\/code>: Hizmet \u00e7\u00f6kerse otomatik olarak yeniden ba\u015flat\u0131lmas\u0131n\u0131 sa\u011flar.<br \/>\n*   <code>respawn limit 10 5<\/code>: 5 saniye i\u00e7inde 10 kez \u00e7\u00f6kerse yeniden ba\u015flatmay\u0131 durdurur.<br \/>\n*   <code>setuid<\/code> ve <code>setgid<\/code>: Hizmetin belirtilen kullan\u0131c\u0131 ve grup kimli\u011fiyle \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flar. Bu, g\u00fcvenlik i\u00e7in \u00f6nemlidir; hizmeti <code>root<\/code> olarak \u00e7al\u0131\u015ft\u0131rmaktan ka\u00e7\u0131n\u0131lmal\u0131d\u0131r.<br \/>\n*   <code>chdir<\/code>: OSRM&#8217;in veri dosyalar\u0131n\u0131 bulabilmesi i\u00e7in \u00e7al\u0131\u015fma dizinini belirtir.<br \/>\n*   <code>exec<\/code>: \u00c7al\u0131\u015ft\u0131r\u0131lacak komutu belirtir. Burada <code>osrm-routed<\/code> komutunu <code>ip<\/code> ve <code>port<\/code> parametreleriyle birlikte kullan\u0131yoruz. <code>--ip 0.0.0.0<\/code> sunucunun t\u00fcm a\u011f aray\u00fczlerinden eri\u015filebilir olmas\u0131n\u0131 sa\u011flar.<\/p>\n<p>Dosyay\u0131 kaydedip kapat\u0131n (Ctrl+O, Enter, Ctrl+X).<\/p>\n<p>\u015eimdi hizmeti ba\u015flatabiliriz:<\/p>\n<pre><code class=\"language-bash\">sudo service osrm start<\/code><\/pre>\n<p>Hizmetin durumunu kontrol etmek i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">sudo service osrm status<\/code><\/pre>\n<p>Sistem yeniden ba\u015flat\u0131ld\u0131\u011f\u0131nda OSRM sunucusu otomatik olarak ba\u015flayacakt\u0131r. Hizmeti durdurmak i\u00e7in <code>sudo service osrm stop<\/code> ve yeniden ba\u015flatmak i\u00e7in <code>sudo service osrm restart<\/code> komutlar\u0131n\u0131 kullanabilirsiniz.<\/p>\n<h4>G\u00fcvenlik Duvar\u0131 Yap\u0131land\u0131rmas\u0131<\/h4>\n<p>E\u011fer sunucunuzda bir g\u00fcvenlik duvar\u0131 (\u00f6rne\u011fin <code>ufw<\/code>) etkinse, OSRM&#8217;in dinledi\u011fi 5000 numaral\u0131 portu d\u0131\u015far\u0131dan eri\u015filebilir hale getirmeniz gerekebilir.<\/p>\n<pre><code class=\"language-bash\">sudo ufw allow 5000\/tcp\nsudo ufw enable<\/code><\/pre>\n<p>Bu komutlar, 5000 numaral\u0131 TCP portundan gelen ba\u011flant\u0131lara izin verir ve <code>ufw<\/code> g\u00fcvenlik duvar\u0131n\u0131 etkinle\u015ftirir (e\u011fer etkin de\u011filse).<\/p>\n<p>Bu ad\u0131mlarla, OSRM sunucunuz art\u0131k Ubuntu 14.04 \u00fczerinde g\u00fcvenli ve s\u00fcrekli bir \u015fekilde \u00e7al\u0131\u015fmaya haz\u0131r olmal\u0131d\u0131r.<\/p>\n<h3>Geli\u015fmi\u015f Yap\u0131land\u0131rma ve Optimizasyon (K\u0131saca)<\/h3>\n<p>OSRM sunucunuzu temel d\u00fczeyde \u00e7al\u0131\u015f\u0131r hale getirdikten sonra, performans\u0131n\u0131 ve esnekli\u011fini art\u0131rmak i\u00e7in baz\u0131 geli\u015fmi\u015f yap\u0131land\u0131rma ve optimizasyon se\u00e7eneklerini g\u00f6z \u00f6n\u00fcnde bulundurabilirsiniz.<\/p>\n<h4>1. \u00c7oklu Harita veya Profil<\/h4>\n<p>Ayn\u0131 sunucu \u00fczerinde farkl\u0131 co\u011frafi b\u00f6lgeler veya farkl\u0131 y\u00f6nlendirme profilleri (araba, bisiklet, yaya) i\u00e7in hizmet vermek isteyebilirsiniz. Bunun i\u00e7in iki ana yakla\u015f\u0131m vard\u0131r:<\/p>\n<p>*   <strong>Farkl\u0131 Portlarda \u00c7al\u0131\u015ft\u0131rma:<\/strong> Her OSRM veri seti veya profil i\u00e7in ayr\u0131 bir <code>osrm-routed<\/code> \u00f6rne\u011fini farkl\u0131 bir portta \u00e7al\u0131\u015ft\u0131rabilirsiniz (\u00f6rn. <code>osrm-routed europe.osrm --port 5000<\/code>, <code>osrm-routed us.osrm --port 5001<\/code>).<br \/>\n*   <strong>Ters Proxy ile Y\u00f6nlendirme:<\/strong> Nginx gibi bir ters proxy (reverse proxy) kullanarak, farkl\u0131 URL yollar\u0131n\u0131 farkl\u0131 OSRM arka u\u00e7lar\u0131na y\u00f6nlendirebilirsiniz. \u00d6rne\u011fin, <code>\/europe\/route<\/code> istekleri 5000 portundaki sunucuya, <code>\/us\/route<\/code> istekleri 5001 portundaki sunucuya gidebilir. Bu, istemciler i\u00e7in tek bir eri\u015fim noktas\u0131 sa\u011flar.<\/p>\n<h4>2. Nginx ile Ters Proxy ve Y\u00fck Dengeleme<\/h4>\n<p>Nginx, OSRM sunucunuzun \u00f6n\u00fcne bir ters proxy olarak yerle\u015ftirilerek performans\u0131, g\u00fcvenli\u011fi ve \u00f6l\u00e7eklenebilirli\u011fi art\u0131rabilir.<\/p>\n<p>*   <strong>SSL\/TLS \u015eifreleme:<\/strong> Nginx, OSRM trafi\u011fini HTTPS \u00fczerinden \u015fifreleyebilir.<br \/>\n*   <strong>\u00d6nbellekleme:<\/strong> Nginx, s\u0131k yap\u0131lan rota sorgular\u0131n\u0131n yan\u0131tlar\u0131n\u0131 \u00f6nbelle\u011fe alarak OSRM \u00fczerindeki y\u00fck\u00fc azaltabilir.<br \/>\n*   <strong>Y\u00fck Dengeleme:<\/strong> Birden fazla OSRM sunucusu \u00f6rne\u011fi \u00e7al\u0131\u015ft\u0131r\u0131yorsan\u0131z, Nginx gelen istekleri bu sunucular aras\u0131nda da\u011f\u0131tarak y\u00fck dengelemesi yapabilir.<br \/>\n*   <strong>API Anahtarlar\u0131 ve H\u0131z Limitleme:<\/strong> Nginx, API anahtar\u0131 do\u011frulama veya istek h\u0131z limitleme gibi g\u00fcvenlik ve kaynak y\u00f6netimi \u00f6zelliklerini uygulayabilir.<\/p>\n<p>Bir Nginx yap\u0131land\u0131rma \u00f6rne\u011fi (basit bir ters proxy i\u00e7in):<\/p>\n<pre><code class=\"language-nginx\">server {\n    listen 80;\n    server_name your_domain.com; # Veya sunucu IP adresi\n\n    location \/ {\n        proxy_pass http:\/\/localhost:5000;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n    }\n}<\/code><\/pre>\n<h4>3. Bellek Y\u00f6netimi ve Performans<\/h4>\n<p>OSRM, bellek yo\u011fun bir uygulamad\u0131r. \u00d6zellikle veri i\u015fleme (<code>osrm-extract<\/code>, <code>osrm-partition<\/code>, <code>osrm-customize<\/code>) ve sunucu \u00e7al\u0131\u015fma zaman\u0131 boyunca y\u00fcksek RAM kullan\u0131m\u0131 g\u00f6r\u00fclebilir.<\/p>\n<p>*   <strong>Takas Alan\u0131 (Swap Space):<\/strong> Yetersiz RAM durumunda, sistem takas alan\u0131n\u0131 kullanmaya ba\u015flayabilir. Ancak disk tabanl\u0131 takas, performans\u0131 ciddi \u015fekilde d\u00fc\u015f\u00fcr\u00fcr. M\u00fcmk\u00fcnse, yeterli fiziksel RAM&#8217;e sahip olun.<br \/>\n*   <strong><code>osrm-routed<\/code> Parametreleri:<\/strong> <code>osrm-routed<\/code> komutu, bellek kullan\u0131m\u0131 ve performans \u00fczerinde ince ayar yapman\u0131z\u0131 sa\u011flayan \u00e7e\u015fitli parametrelere sahiptir. \u00d6rne\u011fin, <code>--max-threads<\/code> ile sorgu i\u015fleme i\u00e7in kullan\u0131lacak i\u015f par\u00e7ac\u0131\u011f\u0131 say\u0131s\u0131n\u0131 s\u0131n\u0131rlayabilirsiniz. <code>osrm-routed --help<\/code> komutunu kullanarak t\u00fcm se\u00e7enekleri g\u00f6rebilirsiniz.<br \/>\n*   <strong>Veri G\u00fcncelleme Stratejileri:<\/strong> OSM verileri s\u00fcrekli g\u00fcncellenir. Sunucunuzdaki verileri d\u00fczenli olarak g\u00fcncellemek isteyebilirsiniz. Bu genellikle yeni PBF dosyas\u0131n\u0131 indirip t\u00fcm i\u015fleme ad\u0131mlar\u0131n\u0131 (extract, partition, customize) yeniden \u00e7al\u0131\u015ft\u0131rmay\u0131 ve ard\u0131ndan sunucuyu yeni veri setiyle yeniden ba\u015flatmay\u0131 i\u00e7erir. Bu i\u015flemi kesinti s\u00fcresini en aza indirmek i\u00e7in ayr\u0131 bir dizinde yap\u0131p, tamamland\u0131\u011f\u0131nda sunucuyu yeni verilere y\u00f6nlendirebilirsiniz.<\/p>\n<h4>4. Loglama ve \u0130zleme<\/h4>\n<p>OSRM sunucusunun d\u00fczg\u00fcn \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olmak i\u00e7in loglar\u0131n\u0131 izlemek \u00f6nemlidir. Upstart beti\u011fi, \u00e7\u0131kt\u0131y\u0131 varsay\u0131lan olarak <code>\/var\/log\/upstart\/osrm.log<\/code> gibi bir dosyaya y\u00f6nlendirebilir. Bu loglar\u0131 d\u00fczenli olarak kontrol ederek olas\u0131 sorunlar\u0131 erken te\u015fhis edebilirsiniz. Ayr\u0131ca, sistem kaynaklar\u0131n\u0131 (CPU, RAM, disk I\/O) izlemek i\u00e7in <code>htop<\/code>, <code>atop<\/code> gibi ara\u00e7lar\u0131 kullanmak, performans darbo\u011fazlar\u0131n\u0131 belirlemenize yard\u0131mc\u0131 olur.<\/p>\n<p>Bu geli\u015fmi\u015f konular, OSRM sunucunuzu bir \u00fcretim ortam\u0131nda daha kararl\u0131, verimli ve g\u00fcvenli hale getirmek i\u00e7in \u00f6nemlidir. \u0130htiya\u00e7lar\u0131n\u0131za g\u00f6re bu se\u00e7enekleri ke\u015ffetmek, OSRM deneyiminizi optimize etmenize yard\u0131mc\u0131 olacakt\u0131r.<\/p>\n<h3>Sorun Giderme<\/h3>\n<p>OSRM kurulumu ve yap\u0131land\u0131rmas\u0131 s\u0131ras\u0131nda \u00e7e\u015fitli sorunlarla kar\u015f\u0131la\u015fmak olas\u0131d\u0131r. \u0130\u015fte s\u0131k kar\u015f\u0131la\u015f\u0131lan baz\u0131 sorunlar ve olas\u0131 \u00e7\u00f6z\u00fcmleri:<\/p>\n<h4>1. Ba\u011f\u0131ml\u0131l\u0131k Hatalar\u0131<\/h4>\n<p>*   <strong>Sorun:<\/strong> <code>cmake<\/code> veya <code>make<\/code> komutlar\u0131 \u00e7al\u0131\u015f\u0131rken &#8220;missing header file&#8221; (eksik ba\u015fl\u0131k dosyas\u0131) veya &#8220;cannot find library&#8221; (k\u00fct\u00fcphane bulunam\u0131yor) gibi hatalar al\u0131yorsunuz.<br \/>\n*   <strong>\u00c7\u00f6z\u00fcm:<\/strong> Bu genellikle gerekli geli\u015ftirme paketlerinin (<code>-dev<\/code> uzant\u0131l\u0131 olanlar) eksik oldu\u011fu anlam\u0131na gelir. &#8220;Sistem G\u00fcncellemesi ve Gerekli Ara\u00e7lar\u0131n Kurulumu&#8221; b\u00f6l\u00fcm\u00fcndeki t\u00fcm paketlerin do\u011fru bir \u015fekilde y\u00fcklendi\u011finden emin olun. \u00d6zellikle Ubuntu 14.04 gibi eski bir s\u00fcr\u00fcmde, baz\u0131 k\u00fct\u00fcphanelerin g\u00fcncel s\u00fcr\u00fcmleri depolarda olmayabilir veya manuel olarak y\u00fcklenmesi gerekebilir.<\/p>\n<h4>2. Bellek Yetersizli\u011fi (Out of Memory)<\/h4>\n<p>*   <strong>Sorun:<\/strong> <code>osrm-extract<\/code>, <code>osrm-partition<\/code> veya <code>osrm-customize<\/code> ad\u0131mlar\u0131 s\u0131ras\u0131nda &#8220;Out of memory&#8221; (bellek yetersizli\u011fi) hatalar\u0131 al\u0131yorsunuz veya i\u015flem tak\u0131l\u0131yor.<br \/>\n*   <strong>\u00c7\u00f6z\u00fcm:<\/strong> Bu, OSRM&#8217;in i\u015fledi\u011fi veri boyutu i\u00e7in yeterli RAM&#8217;e sahip olmad\u0131\u011f\u0131n\u0131z anlam\u0131na gelir.<br \/>\n    *   Daha k\u00fc\u00e7\u00fck bir OSM veri dosyas\u0131 (daha k\u00fc\u00e7\u00fck bir b\u00f6lge) ile deneyin.<br \/>\n    *   Sunucunuza daha fazla RAM ekleyin.<br \/>\n    *   Takas alan\u0131n\u0131 (swap space) art\u0131rmay\u0131 d\u00fc\u015f\u00fcnebilirsiniz, ancak bu performans\u0131 ciddi \u015fekilde etkileyecektir ve yaln\u0131zca ge\u00e7ici bir \u00e7\u00f6z\u00fcm olmal\u0131d\u0131r.<\/p>\n<h4>3. Disk Alan\u0131 Yetersizli\u011fi<\/h4>\n<p>*   <strong>Sorun:<\/strong> Veri i\u015fleme ad\u0131mlar\u0131 s\u0131ras\u0131nda &#8220;No space left on device&#8221; (cihazda bo\u015f alan kalmad\u0131) hatas\u0131 al\u0131yorsunuz.<br \/>\n*   <strong>\u00c7\u00f6z\u00fcm:<\/strong> \u0130ndirilen PBF dosyas\u0131 ve OSRM taraf\u0131ndan olu\u015fturulan \u00e7\u0131kt\u0131 dosyalar\u0131 \u00e7ok yer kaplayabilir.<br \/>\n    *   Diskinizde yeterli bo\u015f alan oldu\u011fundan emin olun (OSM PBF dosyas\u0131n\u0131n en az 3-5 kat\u0131).<br \/>\n    *   Gereksiz dosyalar\u0131 silerek yer a\u00e7\u0131n.<br \/>\n    *   Daha b\u00fcy\u00fck bir disk kullan\u0131n veya depolama alan\u0131n\u0131z\u0131 geni\u015fletin.<\/p>\n<h4>4. <code>osrm-routed<\/code> Ba\u015flam\u0131yor veya Hata Veriyor<\/h4>\n<p>*   <strong>Sorun:<\/strong> <code>osrm-routed<\/code> komutunu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda sunucu ba\u015flam\u0131yor veya hemen kapan\u0131yor, terminalde hata mesajlar\u0131 g\u00f6r\u00fcyorsunuz.<br \/>\n*   <strong>\u00c7\u00f6z\u00fcm:<\/strong><br \/>\n    *   <strong>Veri Dosyas\u0131 Yolu:<\/strong> <code>osrm-routed<\/code> komutuna verdi\u011finiz <code>.osrm<\/code> dosyas\u0131n\u0131n tam yolunun do\u011fru oldu\u011fundan ve dosyan\u0131n ger\u00e7ekten var oldu\u011fundan emin olun.<br \/>\n    *   <strong>Veri \u0130\u015fleme Ba\u015far\u0131s\u0131zl\u0131\u011f\u0131:<\/strong> <code>osrm-extract<\/code>, <code>osrm-partition<\/code> ve <code>osrm-customize<\/code> ad\u0131mlar\u0131n\u0131n her birinin ba\u015far\u0131yla tamamland\u0131\u011f\u0131ndan emin olun. Bu ad\u0131mlardan herhangi biri ba\u015far\u0131s\u0131z olursa, <code>.osrm<\/code> veri seti bozuk olabilir.<br \/>\n    *   <strong>Port \u00c7ak\u0131\u015fmas\u0131:<\/strong> Sunucunun dinlemeye \u00e7al\u0131\u015ft\u0131\u011f\u0131 5000 numaral\u0131 portun ba\u015fka bir uygulama taraf\u0131ndan kullan\u0131l\u0131p kullan\u0131lmad\u0131\u011f\u0131n\u0131 kontrol edin (<code>sudo netstat -tulpn | grep 5000<\/code>). E\u011fer kullan\u0131l\u0131yorsa, <code>osrm-routed --port YENI_PORT<\/code> ile farkl\u0131 bir port kullanmay\u0131 deneyin.<br \/>\n    *   <strong>Loglar\u0131 Kontrol Etme:<\/strong> E\u011fer Upstart ile \u00e7al\u0131\u015ft\u0131r\u0131yorsan\u0131z, <code>\/var\/log\/upstart\/osrm.log<\/code> dosyas\u0131n\u0131 kontrol edin. Do\u011frudan terminalden \u00e7al\u0131\u015ft\u0131rd\u0131ysan\u0131z, terminal \u00e7\u0131kt\u0131s\u0131n\u0131 dikkatlice inceleyin.<\/p>\n<h4>5. Rota Sorgular\u0131 Yan\u0131t Vermiyor<\/h4>\n<p>*   <strong>Sorun:<\/strong> <code>osrm-routed<\/code> \u00e7al\u0131\u015f\u0131yor gibi g\u00f6r\u00fcn\u00fcyor, ancak <code>curl<\/code> veya taray\u0131c\u0131 ile sorgu yapt\u0131\u011f\u0131n\u0131zda yan\u0131t alam\u0131yorsunuz (ba\u011flant\u0131 zaman a\u015f\u0131m\u0131na u\u011fruyor veya reddediliyor).<br \/>\n*   <strong>\u00c7\u00f6z\u00fcm:<\/strong><br \/>\n    *   <strong>Sunucu Durumu:<\/strong> <code>osrm-routed<\/code>&#8216;\u0131n ger\u00e7ekten \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olun. <code>sudo service osrm status<\/code> (Upstart i\u00e7in) veya <code>ps aux | grep osrm-routed<\/code> komutlar\u0131n\u0131 kullanabilirsiniz.<br \/>\n    *   <strong>G\u00fcvenlik Duvar\u0131:<\/strong> Sunucunuzda bir g\u00fcvenlik duvar\u0131 (ufw, iptables vb.) etkinse, 5000 numaral\u0131 porttan gelen ba\u011flant\u0131lara izin verdi\u011finizden emin olun. (<code>sudo ufw allow 5000\/tcp<\/code>).<br \/>\n    *   <strong>IP Adresi:<\/strong> <code>osrm-routed<\/code> komutunu <code>--ip 0.0.0.0<\/code> parametresiyle ba\u015flatt\u0131\u011f\u0131n\u0131zdan emin olun. Aksi takdirde, yaln\u0131zca <code>localhost<\/code> \u00fczerinden eri\u015filebilir olabilir.<br \/>\n    *   <strong>Koordinatlar:<\/strong> Sorgunuzdaki co\u011frafi koordinatlar\u0131n, y\u00fckledi\u011finiz harita verisinin i\u00e7inde yer ald\u0131\u011f\u0131ndan emin olun. Harita d\u0131\u015f\u0131ndaki koordinatlar i\u00e7in rota bulunamaz.<\/p>\n<h4>6. Derleme S\u0131ras\u0131nda Hatalar<\/h4>\n<p>*   <strong>Sorun:<\/strong> <code>make<\/code> komutu s\u0131ras\u0131nda derleme hatalar\u0131 al\u0131yorsunuz.<br \/>\n*   <strong>\u00c7\u00f6z\u00fcm:<\/strong><br \/>\n    *   <strong><code>--recursive<\/code>:<\/strong> <code>git clone<\/code> komutunu <code>--recursive<\/code> bayra\u011f\u0131 ile kulland\u0131\u011f\u0131n\u0131zdan ve t\u00fcm alt mod\u00fcllerin indirildi\u011finden emin olun.<br \/>\n    *   <strong>G\u00fcncel Kod:<\/strong> Bazen GitHub&#8217;daki <code>master<\/code> dal\u0131 anl\u0131k olarak karars\u0131z olabilir. Daha eski, bilinen kararl\u0131 bir s\u00fcr\u00fcm\u00fc (tag) kontrol edip derlemeyi deneyebilirsiniz. <code>git checkout v5.22.0<\/code> gibi.<br \/>\n    *   <strong>Derleme Ortam\u0131:<\/strong> <code>build-essential<\/code> ve di\u011fer derleme ara\u00e7lar\u0131n\u0131n d\u00fczg\u00fcn \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olun.<\/p>\n<p>Bu sorun giderme ipu\u00e7lar\u0131, OSRM kurulumunuzla ilgili \u00e7o\u011fu yayg\u0131n sorunu \u00e7\u00f6zmenize yard\u0131mc\u0131 olmal\u0131d\u0131r. Her zaman log dosyalar\u0131n\u0131 kontrol etmek ve hata mesajlar\u0131n\u0131 dikkatlice okumak, sorunun k\u00f6k nedenini bulmak i\u00e7in en iyi yakla\u015f\u0131md\u0131r.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Bu kapsaml\u0131 teknik makalede, Ubuntu 14.04 i\u015fletim sistemi \u00fczerinde bir Open Source Routing Machine (OSRM) sunucusunun ba\u015ftan sona nas\u0131l kurulaca\u011f\u0131n\u0131 detayl\u0131 bir \u015fekilde inceledik. Modern navigasyon ve konum tabanl\u0131 hizmetlerin temelini olu\u015fturan h\u0131zl\u0131 ve verimli rota hesaplamalar\u0131n\u0131n \u00f6nemine vurgu yaparak ba\u015flad\u0131k ve OSRM&#8217;in bu alandaki g\u00fc\u00e7l\u00fc ve esnek bir a\u00e7\u0131k kaynak \u00e7\u00f6z\u00fcm\u00fc oldu\u011funu belirttik.<\/p>\n<p>Kurulum s\u00fcrecini ad\u0131m ad\u0131m ele alarak, \u00f6ncelikle sunucunuzun donan\u0131m ve yaz\u0131l\u0131m gereksinimlerini belirledik. Yeterli RAM ve disk alan\u0131n\u0131n yan\u0131 s\u0131ra, Ubuntu 14.04 \u00fczerinde gerekli t\u00fcm derleme ara\u00e7lar\u0131n\u0131 ve k\u00fct\u00fcphane ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 <code>apt-get<\/code> kullanarak nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 g\u00f6sterdik. Bu ba\u011f\u0131ml\u0131l\u0131klar, OSRM&#8217;in C++ kaynak kodundan ba\u015far\u0131l\u0131 bir \u015fekilde derlenmesi i\u00e7in kritik \u00f6neme sahipti.<\/p>\n<p>Ard\u0131ndan, OSRM kaynak kodunu GitHub&#8217;dan <code>--recursive<\/code> bayra\u011f\u0131 ile klonlaman\u0131n, <code>cmake<\/code> ile derleme yap\u0131land\u0131rmas\u0131n\u0131 olu\u015fturman\u0131n ve <code>make -j$(nproc)<\/code> komutuyla OSRM&#8217;i sisteminize nas\u0131l derleyece\u011finizi detayland\u0131rd\u0131k. Bu ad\u0131mlar, <code>osrm-extract<\/code>, <code>osrm-partition<\/code>, <code>osrm-customize<\/code> ve <code>osrm-routed<\/code> gibi temel OSRM ara\u00e7lar\u0131n\u0131 kullan\u0131labilir hale getirdi.<\/p>\n<p>Makalenin \u00f6nemli bir b\u00f6l\u00fcm\u00fc, OpenStreetMap verilerinin haz\u0131rlanmas\u0131na ayr\u0131ld\u0131. Geofabrik gibi kaynaklardan <code>.osm.pbf<\/code> format\u0131nda veri indirmenin, <code>car.lua<\/code> gibi bir y\u00f6nlendirme profili se\u00e7menin ve bu ham veriyi OSRM&#8217;in dahili format\u0131na d\u00f6n\u00fc\u015ft\u00fcrmek i\u00e7in <code>osrm-extract<\/code>, <code>osrm-partition<\/code> ve <code>osrm-customize<\/code> ara\u00e7lar\u0131n\u0131 kullanman\u0131n inceliklerini a\u00e7\u0131klad\u0131k. Bu \u00fc\u00e7 a\u015famal\u0131 veri i\u015fleme s\u00fcreci, h\u0131zl\u0131 ve do\u011fru rota hesaplamalar\u0131 i\u00e7in vazge\u00e7ilmezdir.<\/p>\n<p>Son olarak, haz\u0131rlanan veri setiyle OSRM sunucusunu (<code>osrm-routed<\/code>) nas\u0131l ba\u015flataca\u011f\u0131n\u0131z\u0131 g\u00f6sterdik. Basit bir terminal komutundan ba\u015flayarak, Ubuntu 14.04&#8217;\u00fcn <code>Upstart<\/code> hizmet y\u00f6neticisiyle sunucuyu arka planda s\u00fcrekli \u00e7al\u0131\u015facak bir hizmet olarak yap\u0131land\u0131rman\u0131n ad\u0131mlar\u0131n\u0131 sunduk. Ayr\u0131ca, g\u00fcvenlik duvar\u0131 ayarlar\u0131n\u0131 ve Nginx gibi bir ters proxy kullanarak performans\u0131 ve g\u00fcvenli\u011fi art\u0131rma gibi geli\u015fmi\u015f yap\u0131land\u0131rma ve optimizasyon ipu\u00e7lar\u0131na da de\u011findik. Kar\u015f\u0131la\u015f\u0131labilecek olas\u0131 sorunlar i\u00e7in kapsaml\u0131 bir sorun giderme b\u00f6l\u00fcm\u00fc de ekleyerek, kullan\u0131c\u0131lar\u0131n yayg\u0131n hatalar\u0131 kendi ba\u015flar\u0131na \u00e7\u00f6zmelerine yard\u0131mc\u0131 olmay\u0131 ama\u00e7lad\u0131k.<\/p>\n<p>Bu rehberi takip ederek, art\u0131k kendi \u00f6zel OSRM y\u00f6nlendirme sunucunuzu Ubuntu 14.04 \u00fczerinde kurmu\u015f ve \u00e7al\u0131\u015f\u0131r hale getirmi\u015f olmal\u0131s\u0131n\u0131z. Kendi verilerinizle, kendi kurallar\u0131n\u0131zla ve kendi sunucunuzda \u00e7al\u0131\u015fan bir y\u00f6nlendirme motoruna sahip olmak, size b\u00fcy\u00fck bir esneklik ve kontrol sa\u011flar. Bu kurulum, web uygulamalar\u0131n\u0131z, mobil projeleriniz veya lojistik ihtiya\u00e7lar\u0131n\u0131z i\u00e7in g\u00fc\u00e7l\u00fc ve maliyet etkin bir temel olu\u015fturacakt\u0131r. OSRM&#8217;in sundu\u011fu olanaklar\u0131 ke\u015ffetmeye devam edin ve konum tabanl\u0131 hizmetlerinizi bir sonraki seviyeye ta\u015f\u0131y\u0131n!<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Ubuntu 14.04 \u00dczerinde Bir OSRM Sunucusu Kurulumu\nGiri\u015f\nG\u00fcn\u00fcm\u00fcz\u00fcn dijital d\u00fcnyas\u0131nda konum tabanl\u0131 hizmetler ve navigasyon uygulamalar\u0131 vaz","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-39514","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>Ubuntu 14.04 \u00dczerinde Bir OSRM Sunucusu Kurulumu - 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\/ubuntu-14-04-uzerinde-bir-osrm-sunucusu-kurulumu\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ubuntu 14.04 \u00dczerinde Bir OSRM Sunucusu Kurulumu\" \/>\n<meta property=\"og:description\" content=\"Ubuntu 14.04 \u00dczerinde Bir OSRM Sunucusu Kurulumu Giri\u015f G\u00fcn\u00fcm\u00fcz\u00fcn dijital d\u00fcnyas\u0131nda konum tabanl\u0131 hizmetler ve navigasyon uygulamalar\u0131 vaz\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-uzerinde-bir-osrm-sunucusu-kurulumu\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-02-23T02:41:02+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=\"28 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-uzerinde-bir-osrm-sunucusu-kurulumu\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-uzerinde-bir-osrm-sunucusu-kurulumu\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Ubuntu 14.04 \u00dczerinde Bir OSRM Sunucusu Kurulumu\",\"datePublished\":\"2026-02-23T02:41:02+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-uzerinde-bir-osrm-sunucusu-kurulumu\/\"},\"wordCount\":5061,\"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\/ubuntu-14-04-uzerinde-bir-osrm-sunucusu-kurulumu\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-uzerinde-bir-osrm-sunucusu-kurulumu\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-uzerinde-bir-osrm-sunucusu-kurulumu\/\",\"name\":\"Ubuntu 14.04 \u00dczerinde Bir OSRM Sunucusu Kurulumu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-02-23T02:41:02+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-uzerinde-bir-osrm-sunucusu-kurulumu\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-uzerinde-bir-osrm-sunucusu-kurulumu\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-uzerinde-bir-osrm-sunucusu-kurulumu\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Ubuntu 14.04 \u00dczerinde Bir OSRM Sunucusu Kurulumu\"}]},{\"@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":"Ubuntu 14.04 \u00dczerinde Bir OSRM Sunucusu Kurulumu - 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\/ubuntu-14-04-uzerinde-bir-osrm-sunucusu-kurulumu\/","og_locale":"tr_TR","og_type":"article","og_title":"Ubuntu 14.04 \u00dczerinde Bir OSRM Sunucusu Kurulumu","og_description":"Ubuntu 14.04 \u00dczerinde Bir OSRM Sunucusu Kurulumu Giri\u015f G\u00fcn\u00fcm\u00fcz\u00fcn dijital d\u00fcnyas\u0131nda konum tabanl\u0131 hizmetler ve navigasyon uygulamalar\u0131 vaz","og_url":"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-uzerinde-bir-osrm-sunucusu-kurulumu\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-02-23T02:41:02+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"28 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-uzerinde-bir-osrm-sunucusu-kurulumu\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-uzerinde-bir-osrm-sunucusu-kurulumu\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Ubuntu 14.04 \u00dczerinde Bir OSRM Sunucusu Kurulumu","datePublished":"2026-02-23T02:41:02+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-uzerinde-bir-osrm-sunucusu-kurulumu\/"},"wordCount":5061,"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\/ubuntu-14-04-uzerinde-bir-osrm-sunucusu-kurulumu\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-uzerinde-bir-osrm-sunucusu-kurulumu\/","url":"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-uzerinde-bir-osrm-sunucusu-kurulumu\/","name":"Ubuntu 14.04 \u00dczerinde Bir OSRM Sunucusu Kurulumu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-02-23T02:41:02+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-uzerinde-bir-osrm-sunucusu-kurulumu\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-uzerinde-bir-osrm-sunucusu-kurulumu\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-uzerinde-bir-osrm-sunucusu-kurulumu\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Ubuntu 14.04 \u00dczerinde Bir OSRM Sunucusu Kurulumu"}]},{"@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\/39514","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=39514"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/39514\/revisions"}],"predecessor-version":[{"id":39515,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/39514\/revisions\/39515"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=39514"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=39514"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=39514"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}