{"id":37115,"date":"2025-12-27T16:40:39","date_gmt":"2025-12-27T13:40:39","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=37115"},"modified":"2025-12-27T16:40:39","modified_gmt":"2025-12-27T13:40:39","slug":"docpad-uygulamasini-ubuntu-14-04-uzerine-dagitma-rehberi","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/docpad-uygulamasini-ubuntu-14-04-uzerine-dagitma-rehberi\/","title":{"rendered":"DocPad Uygulamas\u0131n\u0131 Ubuntu 14.04 \u00dczerine Da\u011f\u0131tma Rehberi"},"content":{"rendered":"<p><body><\/p>\n<h2>DocPad Uygulamas\u0131n\u0131 Ubuntu 14.04 \u00dczerine Da\u011f\u0131tma Rehberi<\/h2>\n<p>G\u00fcn\u00fcm\u00fczde web siteleri, dinamik ve karma\u015f\u0131k yap\u0131lar\u0131n\u0131n yan\u0131 s\u0131ra, h\u0131z, g\u00fcvenlik ve bak\u0131m kolayl\u0131\u011f\u0131 gibi avantajlar sunan statik sitelere do\u011fru bir e\u011filim g\u00f6stermektedir. Statik site olu\u015fturucular (Static Site Generators &#8211; SSG), bu ihtiyaca yan\u0131t veren pop\u00fcler ara\u00e7lard\u0131r. DocPad, Node.js tabanl\u0131 g\u00fc\u00e7l\u00fc ve esnek bir statik site olu\u015fturucudur. Bu makalede, bir DocPad uygulamas\u0131n\u0131 Ubuntu 14.04 sunucusu \u00fczerine nas\u0131l da\u011f\u0131taca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m detayl\u0131 bir \u015fekilde inceleyece\u011fiz. Ubuntu 14.04 her ne kadar eski bir s\u00fcr\u00fcm olsa da, belirli projeler veya eski altyap\u0131lar i\u00e7in hala kullan\u0131labilmektedir ve bu rehber o ba\u011flamda haz\u0131rlanm\u0131\u015ft\u0131r.<\/p>\n<h3>Giri\u015f: DocPad ve Statik Site Da\u011f\u0131t\u0131m\u0131n\u0131n \u00d6nemi<\/h3>\n<p>DocPad, i\u00e7erik y\u00f6netimi i\u00e7in esneklik, \u015fablon motorlar\u0131 i\u00e7in geni\u015f destek (Jade, EJS, Handlebars vb.) ve g\u00fc\u00e7l\u00fc eklenti mimarisi sunan bir Node.js tabanl\u0131 statik site olu\u015fturucudur. Geli\u015ftiricilerin Markdown, CoffeeScript gibi \u00f6n i\u015flemcileri kullanarak i\u00e7erik olu\u015fturmas\u0131na olanak tan\u0131rken, nihayetinde saf HTML, CSS ve JavaScript dosyalar\u0131 \u00fcretir. Bu statik dosyalar, geleneksel dinamik web sitelerine g\u00f6re \u00e7ok daha h\u0131zl\u0131 y\u00fcklenir, daha g\u00fcvenlidir ve daha az sunucu kayna\u011f\u0131 t\u00fcketir.<\/p>\n<p>Bir DocPad uygulamas\u0131n\u0131 bir sunucuya da\u011f\u0131tmak, genellikle \u00fc\u00e7 ana a\u015famadan olu\u015fur: sunucu ortam\u0131n\u0131n haz\u0131rlanmas\u0131, DocPad uygulamas\u0131n\u0131n sunucuya aktar\u0131lmas\u0131 ve statik \u00e7\u0131kt\u0131lar\u0131n bir web sunucusu (\u00f6rne\u011fin Nginx) arac\u0131l\u0131\u011f\u0131yla servis edilmesi. Bu makale, bu s\u00fcre\u00e7leri Ubuntu 14.04 \u00f6zelinde ele alacak ve uygulaman\u0131z\u0131n sorunsuz bir \u015fekilde yay\u0131na al\u0131nmas\u0131n\u0131 sa\u011flayacakt\u0131r.<\/p>\n<h3>Sunucu Ortam\u0131n\u0131n Haz\u0131rlanmas\u0131 (Ubuntu 14.04)<\/h3>\n<p>DocPad, Node.js \u00fczerinde \u00e7al\u0131\u015ft\u0131\u011f\u0131 i\u00e7in, Ubuntu 14.04 sunucunuzda Node.js ve npm (Node Package Manager) kurulu olmas\u0131 gerekmektedir. Ayr\u0131ca, uygulaman\u0131z\u0131 versiyon kontrol sisteminden (Git) \u00e7ekmek ve statik dosyalar\u0131 sunmak i\u00e7in Nginx gibi bir web sunucusuna ihtiyac\u0131m\u0131z olacak.<\/p>\n<h4>Sistem G\u00fcncellemesi ve Temel Ba\u011f\u0131ml\u0131l\u0131klar\u0131n Kurulumu<\/h4>\n<p>Sunucunuzun g\u00fcncel oldu\u011fundan emin olmak, olas\u0131 g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 kapatmak ve en son paketlere eri\u015fmek i\u00e7in \u00f6nemlidir.<\/p>\n<pre><code class=\"language-bash\">sudo apt-get update\nsudo apt-get upgrade -y<\/code><\/pre>\n<p>Node.js ve di\u011fer baz\u0131 ara\u00e7lar\u0131n derlenmesi i\u00e7in gerekli olan &#8220;build-essential&#8221; paketini kural\u0131m:<\/p>\n<pre><code class=\"language-bash\">sudo apt-get install -y build-essential<\/code><\/pre>\n<h4>Node.js ve npm Kurulumu (nvm ile \u00d6nerilir)<\/h4>\n<p>Node.js&#8217;in farkl\u0131 versiyonlar\u0131n\u0131 y\u00f6netmek i\u00e7in <code>nvm<\/code> (Node Version Manager) kullanmak en iyi y\u00f6ntemdir. Bu, gelecekte farkl\u0131 Node.js versiyonlar\u0131na ge\u00e7i\u015f yapman\u0131z gerekti\u011finde b\u00fcy\u00fck kolayl\u0131k sa\u011flar.<\/p>\n<p>1.  <strong>nvm Kurulumu:<\/strong><br \/>\n    <code>nvm<\/code>&#8216;i kurmak i\u00e7in a\u015fa\u011f\u0131daki komutu kullanabilirsiniz. Bu komut, <code>nvm<\/code>&#8216;in en son s\u00fcr\u00fcm\u00fcn\u00fc indirip kuracakt\u0131r.<\/p>\n<pre><code class=\"language-bash\">curl -o- https:\/\/raw.githubusercontent.com\/nvm-sh\/nvm\/v0.39.1\/install.sh | bash<\/code><\/pre>\n<p>    <em>Not: Yukar\u0131daki s\u00fcr\u00fcm numaras\u0131 (v0.39.1) g\u00fcncel olmayabilir, en g\u00fcncel s\u00fcr\u00fcm i\u00e7in nvm GitHub sayfas\u0131n\u0131 kontrol etmeniz \u00f6nerilir.<\/em><\/p>\n<p>    Kurulumdan sonra, terminalinizi kapat\u0131p tekrar a\u00e7man\u0131z veya a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131rman\u0131z gerekebilir:<\/p>\n<pre><code class=\"language-bash\">source ~\/.bashrc\n    # veya\n    source ~\/.profile<\/code><\/pre>\n<p>2.  <strong>Node.js Kurulumu:<\/strong><br \/>\n    <code>nvm<\/code> kurulduktan sonra, DocPad i\u00e7in uygun bir Node.js LTS (Uzun S\u00fcreli Destek) s\u00fcr\u00fcm\u00fcn\u00fc kurabiliriz. \u00d6rne\u011fin, Node.js 12.x veya 14.x DocPad ile uyumludur.<\/p>\n<pre><code class=\"language-bash\">nvm install 14 # Node.js 14.x LTS s\u00fcr\u00fcm\u00fcn\u00fc kurar\n    nvm use 14     # Kurulan s\u00fcr\u00fcm\u00fc varsay\u0131lan yapar\n    nvm alias default 14 # Her terminal a\u00e7\u0131ld\u0131\u011f\u0131nda bu s\u00fcr\u00fcm\u00fcn kullan\u0131lmas\u0131n\u0131 sa\u011flar<\/code><\/pre>\n<p>    Kurulumun ba\u015far\u0131l\u0131 oldu\u011funu do\u011frulamak i\u00e7in Node.js ve npm versiyonlar\u0131n\u0131 kontrol edin:<\/p>\n<pre><code class=\"language-bash\">node -v\n    npm -v<\/code><\/pre>\n<h4>Git Kurulumu<\/h4>\n<p>Uygulaman\u0131z\u0131n kaynak kodunu bir Git deposundan \u00e7ekmek i\u00e7in Git&#8217;e ihtiyac\u0131m\u0131z var:<\/p>\n<pre><code class=\"language-bash\">sudo apt-get install -y git<\/code><\/pre>\n<h3>DocPad Uygulamas\u0131n\u0131n Da\u011f\u0131t\u0131m\u0131<\/h3>\n<p>\u015eimdi s\u0131ra, DocPad uygulaman\u0131z\u0131 sunucuya aktarmaya ve statik \u00e7\u0131kt\u0131s\u0131n\u0131 olu\u015fturmaya geldi.<\/p>\n<h4>Uygulama Kaynak Kodunun \u00c7ekilmesi<\/h4>\n<p>Genellikle <code>\/var\/www<\/code> dizini, web uygulamalar\u0131 i\u00e7in standart bir konumdur. Uygulaman\u0131z i\u00e7in bu dizin alt\u0131nda bir klas\u00f6r olu\u015ftural\u0131m ve Git deposundan projenizi bu klas\u00f6re klonlayal\u0131m.<\/p>\n<pre><code class=\"language-bash\">sudo mkdir -p \/var\/www\/my-docpad-app\nsudo chown -R $USER:$USER \/var\/www\/my-docpad-app # Kullan\u0131c\u0131n\u0131za yazma izni verin\ncd \/var\/www\/my-docpad-app\ngit clone <your-repository-url> . # Projenizi klonlay\u0131n, '.' mevcut dizine klonlar<\/code><\/pre>\n<p><em><code><your-repository-url><\/code> k\u0131sm\u0131n\u0131 kendi Git deponuzun URL&#8217;si ile de\u011fi\u015ftirin.<\/em><\/p>\n<h4>DocPad Ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131n Kurulumu<\/h4>\n<p>Proje dizinine girdikten sonra, DocPad&#8217;in ve projenizin di\u011fer ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 kurmal\u0131s\u0131n\u0131z:<\/p>\n<pre><code class=\"language-bash\">cd \/var\/www\/my-docpad-app\nnpm install<\/code><\/pre>\n<p>Bu ad\u0131m, <code>package.json<\/code> dosyas\u0131nda tan\u0131mlanan t\u00fcm ba\u011f\u0131ml\u0131l\u0131klar\u0131 y\u00fckleyecektir.<\/p>\n<h4>DocPad Statik \u00c7\u0131kt\u0131s\u0131n\u0131n Olu\u015fturulmas\u0131<\/h4>\n<p>DocPad&#8217;in en g\u00fc\u00e7l\u00fc y\u00f6nlerinden biri, projenizi saf HTML, CSS ve JavaScript dosyalar\u0131na derleyebilmesidir. Bu dosyalar, <code>\/out<\/code> dizininde olu\u015fturulur ve herhangi bir statik web sunucusu taraf\u0131ndan kolayca servis edilebilir.<\/p>\n<pre><code class=\"language-bash\">npm install -g docpad # DocPad CLI'yi global olarak kurun, e\u011fer kurulu de\u011filse\ndocpad generate --env production<\/code><\/pre>\n<p><code>--env production<\/code> parametresi, DocPad&#8217;e \u00fcretim ortam\u0131 i\u00e7in en iyi duruma getirilmi\u015f (minified, s\u0131k\u0131\u015ft\u0131r\u0131lm\u0131\u015f vb.) dosyalar olu\u015fturmas\u0131n\u0131 s\u00f6yler. Bu komut, projenizin statik versiyonunu <code>\/var\/www\/my-docpad-app\/out<\/code> dizinine \u00e7\u0131karacakt\u0131r.<\/p>\n<h3>Nginx ile Statik Siteyi Servis Etme<\/h3>\n<p>Statik DocPad \u00e7\u0131kt\u0131lar\u0131n\u0131 servis etmek i\u00e7in Nginx&#8217;i kullanaca\u011f\u0131z. Nginx, y\u00fcksek performansl\u0131, hafif ve yayg\u0131n olarak kullan\u0131lan bir web sunucusudur.<\/p>\n<h4>Nginx Kurulumu<\/h4>\n<pre><code class=\"language-bash\">sudo apt-get install -y nginx<\/code><\/pre>\n<h4>Nginx Konfig\u00fcrasyonu<\/h4>\n<p>1.  <strong>Yeni Bir Nginx Yap\u0131land\u0131rma Dosyas\u0131 Olu\u015fturma:<\/strong><br \/>\n    Uygulaman\u0131z i\u00e7in yeni bir Nginx sunucu blo\u011fu olu\u015fturaca\u011f\u0131z.<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/nginx\/sites-available\/my-docpad-app<\/code><\/pre>\n<p>2.  <strong>Yap\u0131land\u0131rma \u0130\u00e7eri\u011fi:<\/strong><br \/>\n    A\u015fa\u011f\u0131daki yap\u0131land\u0131rmay\u0131 dosyaya yap\u0131\u015ft\u0131r\u0131n ve <code><your-domain.com><\/code> k\u0131sm\u0131n\u0131 kendi alan ad\u0131n\u0131zla de\u011fi\u015ftirin.<\/p>\n<pre><code class=\"language-nginx\">server {\n        listen 80;\n        listen [::]:80;\n\n        server_name <your-domain.com> www.<your-domain.com>;\n\n        root \/var\/www\/my-docpad-app\/out;\n        index index.html index.htm;\n\n        location \/ {\n            try_files $uri $uri\/ =404;\n        }\n\n        # Opsiyonel: Hata sayfalar\u0131\n        error_page 404 \/404.html;\n        location = \/404.html {\n            internal;\n        }\n\n        # Opsiyonel: Gzip s\u0131k\u0131\u015ft\u0131rma\n        gzip on;\n        gzip_vary on;\n        gzip_proxied any;\n        gzip_types text\/plain text\/css application\/json application\/javascript text\/xml application\/xml application\/xml+rss text\/javascript;\n        gzip_comp_level 5;\n        gzip_min_length 256;\n    }<\/code><\/pre>\n<p>    *   <code>listen 80<\/code>: Nginx&#8217;in 80 numaral\u0131 porttan gelen HTTP isteklerini dinlemesini sa\u011flar.<br \/>\n    *   <code>server_name<\/code>: Alan ad\u0131n\u0131z\u0131 veya IP adresinizi belirtir.<br \/>\n    *   <code>root<\/code>: DocPad&#8217;in statik \u00e7\u0131kt\u0131lar\u0131n\u0131n bulundu\u011fu dizini g\u00f6sterir (<code>\/var\/www\/my-docpad-app\/out<\/code>).<br \/>\n    *   <code>index<\/code>: Dizine eri\u015fildi\u011finde varsay\u0131lan olarak hangi dosyalar\u0131n aranaca\u011f\u0131n\u0131 belirtir.<br \/>\n    *   <code>location \/<\/code>: Gelen t\u00fcm istekleri y\u00f6netir. <code>try_files<\/code> y\u00f6nergesi, istenen dosyan\u0131n veya dizinin var olup olmad\u0131\u011f\u0131n\u0131 kontrol eder. Yoksa 404 hatas\u0131 d\u00f6nd\u00fcr\u00fcr.<br \/>\n    *   <code>gzip<\/code>: Performans i\u00e7in gzip s\u0131k\u0131\u015ft\u0131rmay\u0131 etkinle\u015ftirir.<\/p>\n<p>3.  <strong>Yap\u0131land\u0131rmay\u0131 Etkinle\u015ftirme:<\/strong><br \/>\n    Olu\u015fturdu\u011fumuz yap\u0131land\u0131rma dosyas\u0131n\u0131 <code>sites-enabled<\/code> dizinine sembolik bir ba\u011flant\u0131 olu\u015fturarak etkinle\u015ftirin.<\/p>\n<pre><code class=\"language-bash\">sudo ln -s \/etc\/nginx\/sites-available\/my-docpad-app \/etc\/nginx\/sites-enabled\/<\/code><\/pre>\n<p>    Varsay\u0131lan Nginx yap\u0131land\u0131rmas\u0131n\u0131 devre d\u0131\u015f\u0131 b\u0131rakmak iyi bir uygulamad\u0131r:<\/p>\n<pre><code class=\"language-bash\">sudo rm \/etc\/nginx\/sites-enabled\/default<\/code><\/pre>\n<p>4.  <strong>Nginx Yap\u0131land\u0131rmas\u0131n\u0131 Test Etme ve Yeniden Ba\u015flatma:<\/strong><br \/>\n    Yap\u0131land\u0131rma dosyan\u0131zda herhangi bir hata olup olmad\u0131\u011f\u0131n\u0131 kontrol edin:<\/p>\n<pre><code class=\"language-bash\">sudo nginx -t<\/code><\/pre>\n<p>    E\u011fer test ba\u015far\u0131l\u0131 olursa, Nginx servisini yeniden ba\u015flat\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo service nginx restart<\/code><\/pre>\n<p>Art\u0131k DocPad uygulaman\u0131z\u0131n statik \u00e7\u0131kt\u0131lar\u0131, belirtti\u011finiz alan ad\u0131 \u00fczerinden yay\u0131nda olmal\u0131d\u0131r.<\/p>\n<h3>Geli\u015fmi\u015f Da\u011f\u0131t\u0131m: DocPad&#8217;i Sunucu Modunda \u00c7al\u0131\u015ft\u0131rma (\u0130ste\u011fe Ba\u011fl\u0131)<\/h3>\n<p>\u00c7o\u011fu DocPad da\u011f\u0131t\u0131m\u0131 i\u00e7in statik \u00e7\u0131kt\u0131lar\u0131 Nginx ile servis etmek yeterlidir. Ancak, baz\u0131 \u00f6zel durumlarda (\u00f6rne\u011fin, DocPad&#8217;in baz\u0131 dinamik \u00f6zelliklerini kullanmak veya canl\u0131 \u00f6nizleme sunmak) DocPad&#8217;i sunucu modunda \u00e7al\u0131\u015ft\u0131rmak isteyebilirsiniz. Bu durumda, Nginx&#8217;i bir proxy olarak kullan\u0131r\u0131z.<\/p>\n<h4>PM2 ile DocPad&#8217;i Y\u00f6netme<\/h4>\n<p>PM2, Node.js uygulamalar\u0131n\u0131 \u00fcretim ortam\u0131nda y\u00f6netmek i\u00e7in pop\u00fcler bir s\u00fcre\u00e7 y\u00f6neticisidir. Uygulaman\u0131z\u0131n arka planda \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flar, \u00e7\u00f6kt\u00fc\u011f\u00fcnde otomatik olarak yeniden ba\u015flat\u0131r ve sistem ba\u015flat\u0131ld\u0131\u011f\u0131nda otomatik olarak ba\u015flar.<\/p>\n<p>1.  <strong>PM2 Kurulumu:<\/strong><\/p>\n<pre><code class=\"language-bash\">npm install -g pm2<\/code><\/pre>\n<p>2.  <strong>DocPad&#8217;i PM2 ile Ba\u015flatma:<\/strong><br \/>\n    DocPad&#8217;i sunucu modunda ba\u015flatmak i\u00e7in <code>docpad run<\/code> komutunu kullan\u0131r\u0131z. Bu komut, DocPad&#8217;i varsay\u0131lan olarak 1337 portunda \u00e7al\u0131\u015ft\u0131r\u0131r.<\/p>\n<pre><code class=\"language-bash\">cd \/var\/www\/my-docpad-app\n    pm2 start docpad --name \"my-docpad-server\" -- run<\/code><\/pre>\n<p>    *   <code>--name \"my-docpad-server\"<\/code>: PM2&#8217;de uygulaman\u0131za bir isim verir.<br \/>\n    *   <code>-- run<\/code>: DocPad&#8217;in <code>run<\/code> komutunu \u00e7al\u0131\u015ft\u0131r\u0131r.<\/p>\n<p>    PM2 ile \u00e7al\u0131\u015fan uygulamalar\u0131n\u0131z\u0131 g\u00f6rmek i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">pm2 list<\/code><\/pre>\n<p>    Uygulaman\u0131z\u0131n sistem ba\u015flang\u0131c\u0131nda otomatik olarak ba\u015flamas\u0131n\u0131 sa\u011flamak i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">pm2 startup systemd\n    pm2 save<\/code><\/pre>\n<h4>Nginx&#8217;i Proxy Olarak Yap\u0131land\u0131rma<\/h4>\n<p>DocPad sunucusu \u00e7al\u0131\u015f\u0131rken, Nginx&#8217;i gelen istekleri DocPad&#8217;in \u00e7al\u0131\u015ft\u0131\u011f\u0131 porta y\u00f6nlendirecek \u015fekilde yap\u0131land\u0131rmam\u0131z gerekir.<\/p>\n<p>1.  <strong>Nginx Yap\u0131land\u0131rma Dosyas\u0131n\u0131 D\u00fczenleme:<\/strong><\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/nginx\/sites-available\/my-docpad-app<\/code><\/pre>\n<p>2.  <strong>Yeni Yap\u0131land\u0131rma \u0130\u00e7eri\u011fi (Proxy Pass):<\/strong><br \/>\n    <code>root<\/code> ve <code>index<\/code> y\u00f6nergelerini kald\u0131r\u0131p, <code>location \/<\/code> blo\u011funu a\u015fa\u011f\u0131daki gibi de\u011fi\u015ftirin:<\/p>\n<pre><code class=\"language-nginx\">server {\n        listen 80;\n        listen [::]:80;\n\n        server_name <your-domain.com> www.<your-domain.com>;\n\n        location \/ {\n            proxy_pass http:\/\/localhost:1337; # DocPad'in \u00e7al\u0131\u015ft\u0131\u011f\u0131 port\n            proxy_http_version 1.1;\n            proxy_set_header Upgrade $http_upgrade;\n            proxy_set_header Connection 'upgrade';\n            proxy_set_header Host $host;\n            proxy_cache_bypass $http_upgrade;\n        }\n\n        # Opsiyonel: Gzip s\u0131k\u0131\u015ft\u0131rma (proxy_pass ile birlikte de kullan\u0131labilir)\n        gzip on;\n        gzip_vary on;\n        gzip_proxied any;\n        gzip_types text\/plain text\/css application\/json application\/javascript text\/xml application\/xml application\/xml+rss text\/javascript;\n        gzip_comp_level 5;\n        gzip_min_length 256;\n    }<\/code><\/pre>\n<p>    *   <code>proxy_pass http:\/\/localhost:1337<\/code>: Gelen t\u00fcm istekleri yerel 1337 portunda \u00e7al\u0131\u015fan DocPad sunucusuna y\u00f6nlendirir.<br \/>\n    *   <code>proxy_set_header<\/code>: Orijinal iste\u011fin ba\u015fl\u0131klar\u0131n\u0131 DocPad sunucusuna iletmek i\u00e7in kullan\u0131l\u0131r.<\/p>\n<p>3.  <strong>Nginx&#8217;i Yeniden Ba\u015flatma:<\/strong><\/p>\n<pre><code class=\"language-bash\">sudo nginx -t\n    sudo service nginx restart<\/code><\/pre>\n<p>Bu yap\u0131land\u0131rma ile Nginx, DocPad sunucusunun \u00f6n\u00fcnde bir vekil sunucu (reverse proxy) g\u00f6revi g\u00f6recek ve uygulaman\u0131za gelen istekleri DocPad&#8217;e iletecektir.<\/p>\n<h3>G\u00fcvenlik ve Performans \u0130yile\u015ftirmeleri<\/h3>\n<p>Da\u011f\u0131t\u0131m tamamland\u0131ktan sonra, sunucunuzun g\u00fcvenli\u011fini ve uygulaman\u0131z\u0131n performans\u0131n\u0131 art\u0131rmak i\u00e7in baz\u0131 ek ad\u0131mlar atman\u0131z \u00f6nemlidir.<\/p>\n<h4>G\u00fcvenlik Duvar\u0131 (UFW) Yap\u0131land\u0131rmas\u0131<\/h4>\n<p>Ubuntu&#8217;da varsay\u0131lan g\u00fcvenlik duvar\u0131 olan UFW&#8217;yi (Uncomplicated Firewall) etkinle\u015ftirerek sunucunuzu yetkisiz eri\u015fimden koruyun.<\/p>\n<pre><code class=\"language-bash\">sudo ufw allow OpenSSH # SSH ba\u011flant\u0131lar\u0131na izin ver\nsudo ufw allow 'Nginx HTTP' # Nginx'in 80 portuna gelen HTTP isteklerine izin ver\n<h2>E\u011fer HTTPS kullanacaksan\u0131z: sudo ufw allow 'Nginx HTTPS'<\/h2>\nsudo ufw enable\nsudo ufw status<\/code><\/pre>\n<h4>HTTPS Kurulumu (Certbot ile Let&#8217;s Encrypt)<\/h4>\n<p>Web siteniz i\u00e7in HTTPS kullanmak, g\u00fcvenlik ve kullan\u0131c\u0131 g\u00fcveni a\u00e7\u0131s\u0131ndan kritik \u00f6neme sahiptir. Let&#8217;s Encrypt ve Certbot ile \u00fccretsiz SSL sertifikalar\u0131 alabilirsiniz.<\/p>\n<pre><code class=\"language-bash\">sudo apt-get install -y software-properties-common\nsudo add-apt-repository ppa:certbot\/certbot\nsudo apt-get update\nsudo apt-get install -y python-certbot-nginx<\/code><\/pre>\n<p>Sertifika almak ve Nginx yap\u0131land\u0131rmas\u0131n\u0131 otomatik olarak g\u00fcncellemek i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">sudo certbot --nginx -d <your-domain.com> -d www.<your-domain.com><\/code><\/pre>\n<p><em>Certbot, Nginx yap\u0131land\u0131rman\u0131z\u0131 otomatik olarak d\u00fczenleyecek ve HTTPS&#8217;yi etkinle\u015ftirecektir.<\/em><\/p>\n<h4>Otomatik Da\u011f\u0131t\u0131m (Continuous Deployment)<\/h4>\n<p>Manuel da\u011f\u0131t\u0131m ad\u0131mlar\u0131, k\u00fc\u00e7\u00fck projeler i\u00e7in yeterli olsa da, b\u00fcy\u00fck veya s\u0131k g\u00fcncellenen projeler i\u00e7in otomatik da\u011f\u0131t\u0131m sistemleri kullanmak i\u015f ak\u0131\u015f\u0131n\u0131 h\u0131zland\u0131r\u0131r ve hatalar\u0131 azalt\u0131r. Git tabanl\u0131 CI\/CD (S\u00fcrekli Entegrasyon\/S\u00fcrekli Da\u011f\u0131t\u0131m) ara\u00e7lar\u0131 (\u00f6rne\u011fin GitLab CI\/CD, GitHub Actions, Jenkins, Travis CI) kullanarak, her <code>git push<\/code> i\u015fleminde uygulaman\u0131z\u0131n otomatik olarak derlenip da\u011f\u0131t\u0131lmas\u0131n\u0131 sa\u011flayabilirsiniz.<\/p>\n<p>Tipik bir otomatik da\u011f\u0131t\u0131m ak\u0131\u015f\u0131 \u015fu ad\u0131mlar\u0131 i\u00e7erebilir:<br \/>\n1.  Git deposuna yeni kod g\u00f6nderildi\u011finde tetiklenir.<br \/>\n2.  Sunucuya SSH ile ba\u011flan\u0131l\u0131r.<br \/>\n3.  Proje dizinine gidilir (<code>cd \/var\/www\/my-docpad-app<\/code>).<br \/>\n4.  <code>git pull<\/code> ile en son kod \u00e7ekilir.<br \/>\n5.  <code>npm install<\/code> ile ba\u011f\u0131ml\u0131l\u0131klar g\u00fcncellenir.<br \/>\n6.  <code>docpad generate --env production<\/code> ile statik site yeniden olu\u015fturulur.<br \/>\n7.  <code>sudo service nginx reload<\/code> ile Nginx yap\u0131land\u0131rmas\u0131 yeniden y\u00fcklenir (e\u011fer Nginx yap\u0131land\u0131rmas\u0131 de\u011fi\u015ftiyse).<br \/>\n8.  E\u011fer PM2 kullan\u0131l\u0131yorsa, <code>pm2 reload my-docpad-server<\/code> ile uygulama yeniden ba\u015flat\u0131l\u0131r.<\/p>\n<h3>Sorun Giderme (Troubleshooting)<\/h3>\n<p>Da\u011f\u0131t\u0131m s\u0131ras\u0131nda kar\u015f\u0131la\u015fabilece\u011finiz baz\u0131 yayg\u0131n sorunlar ve \u00e7\u00f6z\u00fcmleri:<\/p>\n<p>*   <strong>Nginx Hatalar\u0131:<\/strong><br \/>\n    *   <code>sudo nginx -t<\/code> komutu ile yap\u0131land\u0131rma dosyas\u0131ndaki s\u00f6zdizimi hatalar\u0131n\u0131 kontrol edin.<br \/>\n    *   Nginx hata g\u00fcnl\u00fcklerini (<code>\/var\/log\/nginx\/error.log<\/code>) inceleyerek detayl\u0131 bilgi edinin.<br \/>\n    *   Port \u00e7ak\u0131\u015fmalar\u0131 (ba\u015fka bir servis 80 veya 443 portunu kullan\u0131yor olabilir).<br \/>\n*   <strong>DocPad Derleme Hatalar\u0131:<\/strong><br \/>\n    *   <code>docpad generate<\/code> komutunu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda konsolda \u00e7\u0131kan hatalar\u0131 dikkatlice okuyun.<br \/>\n    *   <code>npm install<\/code> komutunun t\u00fcm ba\u011f\u0131ml\u0131l\u0131klar\u0131 do\u011fru bir \u015fekilde kurdu\u011fundan emin olun.<br \/>\n    *   Node.js versiyonunuzun DocPad ile uyumlu oldu\u011fundan emin olun.<br \/>\n*   <strong>\u0130zin Hatalar\u0131:<\/strong><br \/>\n    *   <code>\/var\/www\/my-docpad-app<\/code> ve <code>\/var\/www\/my-docpad-app\/out<\/code> dizinlerinin Nginx kullan\u0131c\u0131s\u0131 (genellikle <code>www-data<\/code>) taraf\u0131ndan okunabilir oldu\u011fundan emin olun. Gerekirse <code>sudo chown -R www-data:www-data \/var\/www\/my-docpad-app<\/code> veya <code>sudo chmod -R 755 \/var\/www\/my-docpad-app<\/code> komutlar\u0131n\u0131 kullan\u0131n. Ancak, genellikle <code>out<\/code> dizini i\u00e7in bu yeterlidir ve di\u011fer dosyalar\u0131n <code>www-data<\/code> taraf\u0131ndan yaz\u0131labilir olmas\u0131 g\u00fcvenlik riski olu\u015fturabilir.<br \/>\n*   <strong>PM2 Sorunlar\u0131:<\/strong><br \/>\n    *   <code>pm2 list<\/code> ile uygulaman\u0131z\u0131n durumunu kontrol edin.<br \/>\n    *   <code>pm2 logs my-docpad-server<\/code> ile uygulaman\u0131z\u0131n g\u00fcnl\u00fcklerini g\u00f6r\u00fcnt\u00fcleyin.<br \/>\n    *   <code>pm2 restart my-docpad-server<\/code> ile uygulamay\u0131 yeniden ba\u015flatmay\u0131 deneyin.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Bu kapsaml\u0131 rehberde, bir DocPad uygulamas\u0131n\u0131 Ubuntu 14.04 sunucusu \u00fczerine ba\u015far\u0131yla da\u011f\u0131tmak i\u00e7in gerekli t\u00fcm ad\u0131mlar\u0131 detayl\u0131 bir \u015fekilde ele ald\u0131k. Node.js ve npm kurulumundan ba\u015flayarak, DocPad uygulaman\u0131z\u0131n statik \u00e7\u0131kt\u0131lar\u0131n\u0131 olu\u015fturmaya, Nginx ile bu \u00e7\u0131kt\u0131lar\u0131 servis etmeye ve hatta DocPad&#8217;i sunucu modunda \u00e7al\u0131\u015ft\u0131rmaya kadar t\u00fcm s\u00fcre\u00e7leri inceledik. Ayr\u0131ca, g\u00fcvenlik duvar\u0131 yap\u0131land\u0131rmas\u0131, HTTPS entegrasyonu ve otomatik da\u011f\u0131t\u0131m gibi \u00f6nemli iyile\u015ftirmelere de de\u011findik.<\/p>\n<p>DocPad&#8217;in statik site olu\u015fturma yetene\u011fi sayesinde, uygulaman\u0131z y\u00fcksek performans, art\u0131r\u0131lm\u0131\u015f g\u00fcvenlik ve d\u00fc\u015f\u00fck sunucu maliyetleri ile \u00e7al\u0131\u015facakt\u0131r. Bu ad\u0131mlar\u0131 takip ederek, DocPad projenizi \u00fcretim ortam\u0131nda g\u00fcvenle yay\u0131na alabilir ve modern web geli\u015ftirmenin avantajlar\u0131ndan tam olarak faydalanabilirsiniz. Unutmay\u0131n ki, Ubuntu 14.04 eski bir i\u015fletim sistemi oldu\u011fu i\u00e7in, m\u00fcmk\u00fcnse daha g\u00fcncel ve desteklenen bir Ubuntu s\u00fcr\u00fcm\u00fcne (\u00f6rne\u011fin 20.04 veya 22.04 LTS) ge\u00e7i\u015f yapman\u0131z g\u00fcvenlik ve uyumluluk a\u00e7\u0131s\u0131ndan \u015fiddetle tavsiye edilir. Ancak bu rehber, belirtilen ortam i\u00e7in eksiksiz bir \u00e7\u00f6z\u00fcm sunmaktad\u0131r.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"DocPad Uygulamas\u0131n\u0131 Ubuntu 14.04 \u00dczerine Da\u011f\u0131tma Rehberi\nG\u00fcn\u00fcm\u00fczde web siteleri, dinamik ve karma\u015f\u0131k yap\u0131lar\u0131n\u0131n yan\u0131 s\u0131ra, h\u0131z, g\u00fcv","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-37115","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>DocPad Uygulamas\u0131n\u0131 Ubuntu 14.04 \u00dczerine Da\u011f\u0131tma Rehberi - 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\/docpad-uygulamasini-ubuntu-14-04-uzerine-dagitma-rehberi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"DocPad Uygulamas\u0131n\u0131 Ubuntu 14.04 \u00dczerine Da\u011f\u0131tma Rehberi\" \/>\n<meta property=\"og:description\" content=\"DocPad Uygulamas\u0131n\u0131 Ubuntu 14.04 \u00dczerine Da\u011f\u0131tma Rehberi G\u00fcn\u00fcm\u00fczde web siteleri, dinamik ve karma\u015f\u0131k yap\u0131lar\u0131n\u0131n yan\u0131 s\u0131ra, h\u0131z, g\u00fcv\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/docpad-uygulamasini-ubuntu-14-04-uzerine-dagitma-rehberi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-27T13:40:39+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=\"12 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/docpad-uygulamasini-ubuntu-14-04-uzerine-dagitma-rehberi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/docpad-uygulamasini-ubuntu-14-04-uzerine-dagitma-rehberi\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"DocPad Uygulamas\u0131n\u0131 Ubuntu 14.04 \u00dczerine Da\u011f\u0131tma Rehberi\",\"datePublished\":\"2025-12-27T13:40:39+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/docpad-uygulamasini-ubuntu-14-04-uzerine-dagitma-rehberi\/\"},\"wordCount\":1971,\"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\/docpad-uygulamasini-ubuntu-14-04-uzerine-dagitma-rehberi\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/docpad-uygulamasini-ubuntu-14-04-uzerine-dagitma-rehberi\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/docpad-uygulamasini-ubuntu-14-04-uzerine-dagitma-rehberi\/\",\"name\":\"DocPad Uygulamas\u0131n\u0131 Ubuntu 14.04 \u00dczerine Da\u011f\u0131tma Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-12-27T13:40:39+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/docpad-uygulamasini-ubuntu-14-04-uzerine-dagitma-rehberi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/docpad-uygulamasini-ubuntu-14-04-uzerine-dagitma-rehberi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/docpad-uygulamasini-ubuntu-14-04-uzerine-dagitma-rehberi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"DocPad Uygulamas\u0131n\u0131 Ubuntu 14.04 \u00dczerine Da\u011f\u0131tma Rehberi\"}]},{\"@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":"DocPad Uygulamas\u0131n\u0131 Ubuntu 14.04 \u00dczerine Da\u011f\u0131tma Rehberi - 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\/docpad-uygulamasini-ubuntu-14-04-uzerine-dagitma-rehberi\/","og_locale":"tr_TR","og_type":"article","og_title":"DocPad Uygulamas\u0131n\u0131 Ubuntu 14.04 \u00dczerine Da\u011f\u0131tma Rehberi","og_description":"DocPad Uygulamas\u0131n\u0131 Ubuntu 14.04 \u00dczerine Da\u011f\u0131tma Rehberi G\u00fcn\u00fcm\u00fczde web siteleri, dinamik ve karma\u015f\u0131k yap\u0131lar\u0131n\u0131n yan\u0131 s\u0131ra, h\u0131z, g\u00fcv","og_url":"https:\/\/fatihsoysal.com\/blog\/docpad-uygulamasini-ubuntu-14-04-uzerine-dagitma-rehberi\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-12-27T13:40:39+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"12 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/docpad-uygulamasini-ubuntu-14-04-uzerine-dagitma-rehberi\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/docpad-uygulamasini-ubuntu-14-04-uzerine-dagitma-rehberi\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"DocPad Uygulamas\u0131n\u0131 Ubuntu 14.04 \u00dczerine Da\u011f\u0131tma Rehberi","datePublished":"2025-12-27T13:40:39+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/docpad-uygulamasini-ubuntu-14-04-uzerine-dagitma-rehberi\/"},"wordCount":1971,"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\/docpad-uygulamasini-ubuntu-14-04-uzerine-dagitma-rehberi\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/docpad-uygulamasini-ubuntu-14-04-uzerine-dagitma-rehberi\/","url":"https:\/\/fatihsoysal.com\/blog\/docpad-uygulamasini-ubuntu-14-04-uzerine-dagitma-rehberi\/","name":"DocPad Uygulamas\u0131n\u0131 Ubuntu 14.04 \u00dczerine Da\u011f\u0131tma Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-12-27T13:40:39+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/docpad-uygulamasini-ubuntu-14-04-uzerine-dagitma-rehberi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/docpad-uygulamasini-ubuntu-14-04-uzerine-dagitma-rehberi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/docpad-uygulamasini-ubuntu-14-04-uzerine-dagitma-rehberi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"DocPad Uygulamas\u0131n\u0131 Ubuntu 14.04 \u00dczerine Da\u011f\u0131tma Rehberi"}]},{"@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\/37115","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=37115"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37115\/revisions"}],"predecessor-version":[{"id":37116,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37115\/revisions\/37116"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=37115"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=37115"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=37115"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}