{"id":2812,"date":"2026-08-18T23:16:02","date_gmt":"2026-08-18T20:16:02","guid":{"rendered":"https:\/\/saviorhost.com\/blog\/next-js-projesi-yayinlama\/"},"modified":"2026-08-18T23:17:47","modified_gmt":"2026-08-18T20:17:47","slug":"next-js-projesi-yayinlama","status":"publish","type":"post","link":"https:\/\/saviorhost.com\/blog\/next-js-projesi-yayinlama\/","title":{"rendered":"next js projesi yay\u0131nlama: 2026 \u0130\u00e7in VDS \u00dczerinde 7 Kritik Ad\u0131m"},"content":{"rendered":"<p><p>Ge\u00e7en hafta bir m\u00fc\u015fterimizin <strong>next js projesi yay\u0131nlama<\/strong> s\u00fcrecinde ya\u015fad\u0131\u011f\u0131 bir sorunu \u00e7\u00f6zd\u00fck. React tabanl\u0131 y\u00f6netim panelini payla\u015f\u0131ml\u0131 <a href=\"https:\/\/saviorhost.com\/linux-web-hosting\" class=\"sm-affiliate-link\" rel=\"sponsored\" target=\"_blank\">hostinge<\/a> y\u00fcklemeye \u00e7al\u0131\u015f\u0131yordu ancak Node.js deste\u011fi olmad\u0131\u011f\u0131 i\u00e7in s\u00fcrekli 500 hatas\u0131 al\u0131yordu. Oysa proje VDS \u00fczerinde do\u011fru yap\u0131land\u0131r\u0131ld\u0131\u011f\u0131nda 2 saat i\u00e7inde yay\u0131na al\u0131nabiliyordu. Bu rehberde, 2026 y\u0131l\u0131nda bir Next.js uygulamas\u0131n\u0131 s\u0131f\u0131rdan canl\u0131 sunucuya nas\u0131l ta\u015f\u0131yaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m anlat\u0131yorum.<\/p>\n<\/p>\n<p><p>Next.js, React ekosisteminin en g\u00fc\u00e7l\u00fc frameworklerinden biri. Ancak \u00fcretim ortam\u0131na (production) almak, basit bir FTP y\u00fcklemesinden \u00e7ok daha fazlas\u0131n\u0131 gerektiriyor. Yanl\u0131\u015f yap\u0131land\u0131r\u0131lm\u0131\u015f bir sunucu, uygulaman\u0131z\u0131n \u00e7\u00f6kmesine veya g\u00fcvenlik a\u00e7\u0131klar\u0131na neden olabilir. Neyse ki do\u011fru ad\u0131mlar\u0131 izlerseniz s\u00fcre\u00e7 tahmin etti\u011finizden daha y\u00f6netilebilir. Biz de Saviorhost olarak y\u0131llard\u0131r Node.js tabanl\u0131 projeleri VDS altyap\u0131m\u0131zda bar\u0131nd\u0131r\u0131yoruz. Bu deneyimi sizinle payla\u015faca\u011f\u0131m.<\/p>\n<\/p>\n<div class=\"key-takeaways\" style=\"background:#f0f9ff;border-left:4px solid #0ea5e9;padding:20px;margin:20px 0;border-radius:8px;\">\n<p><h3 id=\"%f0%9f%93%8b-onemli-noktalar\">\ud83d\udccb \u00d6nemli Noktalar<\/h3>\n<\/p>\n<ul>\n<li>Next.js projeleri <strong>Node.js \u00e7al\u0131\u015fma ortam\u0131<\/strong> gerektirir; payla\u015f\u0131ml\u0131 <strong><a href=\"https:\/\/saviorhost.com\/linux-web-hosting\" class=\"sm-affiliate-link\" rel=\"sponsored\" target=\"_blank\">hosting<\/a><\/strong> \u00e7o\u011fu zaman yetersiz kal\u0131r.<\/li>\n<li>VDS \u00fczerinde <strong>PM2 + Nginx + SSL<\/strong> \u00fc\u00e7l\u00fcs\u00fc en stabil \u00fcretim mimarisini olu\u015fturur.<\/li>\n<li><code>next build<\/code> komutu ile ald\u0131\u011f\u0131n\u0131z \u00e7\u0131kt\u0131, sunucu kaynak kullan\u0131m\u0131n\u0131 do\u011frudan etkiler.<\/li>\n<li>Standalone mod kullanmak, gereksiz Node.js ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 azaltarak performans\u0131 art\u0131r\u0131r.<\/li>\n<li>Bu rehberdeki t\u00fcm komutlar Ubuntu 22.04\/24.04 \u00fczerinde test edilmi\u015ftir.<\/li>\n<\/ul>\n<\/div>\n<div class=\"wp-block-rank-math-toc-block table-of-contents\" role=\"navigation\" aria-label=\"\u0130\u00e7indekiler\">\n<p><figure class=\"wp-block-image size-large\"><img width=\"1024\" height=\"768\" src=\"https:\/\/saviorhost.com\/blog\/wp-content\/uploads\/2026\/08\/Icindekiler-18.jpg\" class=\"aligncenter sm-ai-image\" alt=\"\u0130\u00e7indekiler\" decoding=\"async\" loading=\"lazy\" srcset=\"https:\/\/saviorhost.com\/blog\/wp-content\/uploads\/2026\/08\/Icindekiler-18.jpg 1024w, https:\/\/saviorhost.com\/blog\/wp-content\/uploads\/2026\/08\/Icindekiler-18-300x225.jpg 300w, https:\/\/saviorhost.com\/blog\/wp-content\/uploads\/2026\/08\/Icindekiler-18-768x576.jpg 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<h2 id=\"icindekiler\">\u0130\u00e7indekiler<\/h2>\n<\/p>\n<ul>\n<li><a href=\"#nextjs-yayinlama-oncesi-gereksinimler\">Next.js Projesi Yay\u0131nlamadan \u00d6nce Bilmeniz Gerekenler<\/a><\/li>\n<li><a href=\"#vds-sunucu-hazirligi-nodejs-pm2\">VDS Sunucu Haz\u0131rl\u0131\u011f\u0131: Node.js ve PM2 Kurulumu<\/a><\/li>\n<li><a href=\"#nextjs-build-optimizasyon\">Next.js Projesini Build Etme ve Optimize Etme<\/a><\/li>\n<li><a href=\"#nginx-ters-proxy\">Nginx Ters Proxy Yap\u0131land\u0131rmas\u0131<\/a><\/li>\n<li><a href=\"#pm2-ile-yonetim\">PM2 ile Next.js Uygulamas\u0131n\u0131 Y\u00f6netme<\/a><\/li>\n<li><a href=\"#ssl-domain-baglama\">SSL Sertifikas\u0131 ve Domain Ba\u011flama<\/a><\/li>\n<li><a href=\"#yaygin-hatalar-cozumleri\">Yayg\u0131n Hatalar ve Kesin \u00c7\u00f6z\u00fcmleri<\/a><\/li>\n<\/ul>\n<\/div>\n<p><figure class=\"wp-block-image size-large\"><img width=\"1024\" height=\"768\" src=\"https:\/\/saviorhost.com\/blog\/wp-content\/uploads\/2026\/08\/Next.js-Projesi-Yayinlamadan-Once-Bilmeniz-Gerekenler.jpg\" class=\"aligncenter sm-ai-image\" alt=\"Next.js Projesi Yay\u0131nlamadan \u00d6nce Bilmeniz Gerekenler\" decoding=\"async\" loading=\"lazy\" srcset=\"https:\/\/saviorhost.com\/blog\/wp-content\/uploads\/2026\/08\/Next.js-Projesi-Yayinlamadan-Once-Bilmeniz-Gerekenler.jpg 1024w, https:\/\/saviorhost.com\/blog\/wp-content\/uploads\/2026\/08\/Next.js-Projesi-Yayinlamadan-Once-Bilmeniz-Gerekenler-300x225.jpg 300w, https:\/\/saviorhost.com\/blog\/wp-content\/uploads\/2026\/08\/Next.js-Projesi-Yayinlamadan-Once-Bilmeniz-Gerekenler-768x576.jpg 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<h2 id=\"nextjs-yayinlama-oncesi-gereksinimler\">Next.js Projesi Yay\u0131nlamadan \u00d6nce Bilmeniz Gerekenler<\/h2>\n<\/p>\n<p><p>Next.js uygulamas\u0131n\u0131 canl\u0131ya almadan \u00f6nce sunucunun teknik gereksinimlerini netle\u015ftirmek, ileride ya\u015fanacak sorunlar\u0131n %70&#8217;ini ortadan kald\u0131r\u0131r. 2026 y\u0131l\u0131 itibar\u0131yla \u00e7o\u011fu VDS sa\u011flay\u0131c\u0131s\u0131 varsay\u0131lan olarak Node.js deste\u011fi sunar ancak s\u00fcr\u00fcm uyumlulu\u011fu ve kaynak y\u00f6netimi kritik \u00f6neme sahiptir.<\/p>\n<\/p>\n<p><h3 id=\"node-js-surumu-ve-sistem-gereksinimleri\">Node.js S\u00fcr\u00fcm\u00fc ve Sistem Gereksinimleri<\/h3>\n<\/p>\n<p><p>Next.js 15 ve sonras\u0131, Node.js 18.18 veya \u00fczeri s\u00fcr\u00fcmleri zorunlu k\u0131lar. Ancak \u00fcretim ortam\u0131nda Node.js 20 LTS veya 22 LTS kullanman\u0131z\u0131 \u00f6neriyoruz. \u00c7\u00fcnk\u00fc LTS s\u00fcr\u00fcmleri uzun s\u00fcreli g\u00fcvenlik yamalar\u0131 al\u0131r ve paket uyumluluk sorunlar\u0131 minimuma iner. VDS kaynaklar\u0131 a\u00e7\u0131s\u0131ndan ise en az 2 GB RAM ve 2 vCPU ideal ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r. E\u011fer SSR (Server-Side Rendering) yo\u011fun bir uygulaman\u0131z varsa 4 GB RAM \u00f6neriyoruz.<\/p>\n<\/p>\n<p><p>\u00d6nemli Not: Payla\u015f\u0131ml\u0131 hosting paketleri genellikle Node.js \u00e7al\u0131\u015ft\u0131rmaz. Bu y\u00fczden <strong>blank&#8221; rel=&#8221;noopener&#8221;>n8n &#038; Node.js Hosting<\/strong> veya do\u011frudan bir VDS hizmeti gerekir. E\u011fer projeniz k\u00fc\u00e7\u00fck ve statik a\u011f\u0131rl\u0131kl\u0131ysa, <strong>blank&#8221; rel=&#8221;noopener&#8221;><a href=\"https:\/\/saviorhost.com\/linux-web-hosting\" class=\"sm-affiliate-link\" rel=\"sponsored\" target=\"_blank\">linux hosting<\/a><\/strong> paketleri de statik export i\u00e7in kullan\u0131labilir.<\/p>\n<\/p>\n<p><h3 id=\"uretim-modu-ile-gelistirme-modu-arasindaki-fark\">\u00dcretim Modu ile Geli\u015ftirme Modu Aras\u0131ndaki Fark<\/h3>\n<\/p>\n<p><p>Geli\u015ftirme s\u0131ras\u0131nda <code>next dev<\/code> komutu h\u0131zl\u0131 yeniden derleme i\u00e7in tasarlanm\u0131\u015ft\u0131r. Ancak bu mod, sunucu kaynaklar\u0131n\u0131 a\u015f\u0131r\u0131 t\u00fcketir. \u00dcretimde mutlaka <code>next build<\/code> ve <code>next start<\/code> komutlar\u0131n\u0131 kullanmal\u0131s\u0131n\u0131z. Build sonras\u0131 olu\u015fan <code>.next<\/code> klas\u00f6r\u00fc optimize edilmi\u015f dosyalar\u0131 i\u00e7erir. Bu sayede sayfa y\u00fckleme s\u00fcreleri belirgin \u015fekilde d\u00fc\u015fer.<\/p>\n<\/p>\n<p><p>\u0130\u015fin s\u0131rr\u0131 \u015furada: Build i\u015flemini geli\u015ftirme makinenizde de\u011fil, her zaman sunucu \u00fczerinde ger\u00e7ekle\u015ftirin. \u00c7\u00fcnk\u00fc farkl\u0131 i\u015fletim sistemlerinde derlenen native mod\u00fcller uyumsuzluk yaratabilir.<\/p>\n<\/p>\n<p><h3 id=\"statik-export-mu-ssr-mi\">Statik Export mu, SSR m\u0131?<\/h3>\n<\/p>\n<p><p>Next.js iki farkl\u0131 yay\u0131nlama modu sunar. <code>output: 'export'<\/code> ile statik HTML dosyalar\u0131 \u00fcretirsiniz. Bu dosyalar herhangi bir web sunucusunda (Nginx, Apache) \u00e7al\u0131\u015f\u0131r. Ancak dinamik route&#8217;lar, API route&#8217;lar ve middleware gibi \u00f6zellikler \u00e7al\u0131\u015fmaz. SSR modunda ise bir Node.js sunucusu s\u00fcrekli \u00e7al\u0131\u015f\u0131r ve istekleri dinamik olarak i\u015fler.<\/p>\n<\/p>\n<table style=\"width:100%;border-collapse:collapse;margin:20px 0;\">\n<thead>\n<tr style=\"background:#f8fafc;border-bottom:2px solid #e2e8f0;\">\n<p><th style=\"padding:12px;text-align:left;\">\u00d6zellik<\/th>\n<\/p>\n<p><th style=\"padding:12px;text-align:left;\">Statik Export<\/th>\n<\/p>\n<p><th style=\"padding:12px;text-align:left;\">SSR (Node.js Sunucu)<\/th>\n<\/p>\n<\/tr>\n<\/thead>\n<tbody>\n<tr style=\"border-bottom:1px solid #e2e8f0;\">\n<p><td style=\"padding:12px;\">Bar\u0131nd\u0131rma<\/td>\n<\/p>\n<p><td style=\"padding:12px;\">Herhangi bir web sunucusu<\/td>\n<\/p>\n<p><td style=\"padding:12px;\">VDS \/ Node.js destekli hosting<\/td>\n<\/p>\n<\/tr>\n<tr style=\"border-bottom:1px solid #e2e8f0;\">\n<p><td style=\"padding:12px;\">API Routes<\/td>\n<\/p>\n<p><td style=\"padding:12px;\">\u274c Desteklenmez<\/td>\n<\/p>\n<p><td style=\"padding:12px;\">\u2705 Tam destek<\/td>\n<\/p>\n<\/tr>\n<tr style=\"border-bottom:1px solid #e2e8f0;\">\n<p><td style=\"padding:12px;\">Dinamik Route<\/td>\n<\/p>\n<p><td style=\"padding:12px;\">\u274c S\u0131n\u0131rl\u0131<\/td>\n<\/p>\n<p><td style=\"padding:12px;\">\u2705 Tam destek<\/td>\n<\/p>\n<\/tr>\n<tr style=\"border-bottom:1px solid #e2e8f0;\">\n<p><td style=\"padding:12px;\">Sunucu Kaynak Kullan\u0131m\u0131<\/td>\n<\/p>\n<p><td style=\"padding:12px;\">D\u00fc\u015f\u00fck<\/td>\n<\/p>\n<p><td style=\"padding:12px;\">Orta-Y\u00fcksek<\/td>\n<\/p>\n<\/tr>\n<tr>\n<p><td style=\"padding:12px;\">G\u00fcncelleme Kolayl\u0131\u011f\u0131<\/td>\n<\/p>\n<p><td style=\"padding:12px;\">Yeniden build + upload<\/td>\n<\/p>\n<p><td style=\"padding:12px;\">PM2 reload<\/td>\n<\/p>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><p>Hangi modu se\u00e7ece\u011finiz projenizin ihtiyac\u0131na ba\u011fl\u0131. E\u011fer sadece blog veya tan\u0131t\u0131m sitesi yay\u0131nlayacaksan\u0131z statik export yeterli. Ancak kullan\u0131c\u0131 giri\u015fi, canl\u0131 veri veya API entegrasyonu varsa SSR \u015fart.<\/p>\n<\/p>\n<div style=\"background:#fffbeb;border-left:4px solid #f59e0b;padding:15px;margin:20px 0;border-radius:8px;\">\n<p><p><strong>\u00d6nemli Not:<\/strong> Bu rehberin devam\u0131nda SSR odakl\u0131 bir kurulum anlataca\u011f\u0131z. \u00c7\u00fcnk\u00fc ger\u00e7ek d\u00fcnyada <strong>next js projesi yay\u0131nlama<\/strong> ihtiyac\u0131 duyanlar\u0131n b\u00fcy\u00fck b\u00f6l\u00fcm\u00fc dinamik uygulamalar geli\u015ftiriyor.<\/p>\n<\/p>\n<\/div>\n<p><p>Peki sunucu taraf\u0131na ge\u00e7meden \u00f6nce nelere dikkat etmeliyiz? Bir sonraki b\u00f6l\u00fcmde VDS kurulumunu s\u0131f\u0131rdan yapaca\u011f\u0131z.<\/p>\n<\/p>\n<p><figure class=\"wp-block-image size-large\"><img width=\"1024\" height=\"768\" src=\"https:\/\/saviorhost.com\/blog\/wp-content\/uploads\/2026\/08\/VDS-Sunucu-Hazirligi-Node.js-ve-PM2-Kurulumu.jpg\" class=\"aligncenter sm-ai-image\" alt=\"VDS Sunucu Haz\u0131rl\u0131\u011f\u0131: Node.js ve PM2 Kurulumu\" decoding=\"async\" loading=\"lazy\" srcset=\"https:\/\/saviorhost.com\/blog\/wp-content\/uploads\/2026\/08\/VDS-Sunucu-Hazirligi-Node.js-ve-PM2-Kurulumu.jpg 1024w, https:\/\/saviorhost.com\/blog\/wp-content\/uploads\/2026\/08\/VDS-Sunucu-Hazirligi-Node.js-ve-PM2-Kurulumu-300x225.jpg 300w, https:\/\/saviorhost.com\/blog\/wp-content\/uploads\/2026\/08\/VDS-Sunucu-Hazirligi-Node.js-ve-PM2-Kurulumu-768x576.jpg 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<h2 id=\"vds-sunucu-hazirligi-nodejs-pm2\">VDS Sunucu Haz\u0131rl\u0131\u011f\u0131: Node.js ve PM2 Kurulumu<\/h2>\n<\/p>\n<p><p>VDS sunucunuza SSH ile ba\u011fland\u0131ktan sonra ilk i\u015f Node.js ortam\u0131n\u0131 kurmakt\u0131r. Ubuntu 22.04 veya 24.04 kulland\u0131\u011f\u0131n\u0131z\u0131 varsay\u0131yorum. Bu ad\u0131mlar\u0131 birebir uygulayarak temiz bir kurulum yapabilirsiniz.<\/p>\n<\/p>\n<p><h3 id=\"adim-1-node-js-kurulumu\">Ad\u0131m 1: Node.js Kurulumu<\/h3>\n<\/p>\n<p><p>NodeSource deposunu ekleyerek g\u00fcncel LTS s\u00fcr\u00fcm\u00fcn\u00fc y\u00fckleyelim. A\u015fa\u011f\u0131daki komutlar Node.js 20.x s\u00fcr\u00fcm\u00fcn\u00fc kurar:<\/p>\n<\/p>\n<p><pre><code class=\"language-bash\"># NodeSource deposunu ekle<\/p>\n<p>curl -fsSL https:\/\/deb.nodesource.com\/setup_20.x | sudo -E bash -<\/p>\n<h1 id=\"node-js-ve-npmi-yukle\">Node.js ve npm'i y\u00fckle<\/h1>\n<p>sudo apt install -y nodejs<\/p>\n<h1 id=\"kurulumu-dogrula\">Kurulumu do\u011frula<\/h1>\n<p>node -v<\/p>\n<p>npm -v<\/code><\/pre>\n<\/p>\n<p><p>Dikkat et: <code>curl<\/code> komutu \u00e7al\u0131\u015fmazsa \u00f6nce <code>sudo apt install curl -y<\/code> ile curl&#8217;\u0131 y\u00fckleyin.<\/p>\n<\/p>\n<p><h3 id=\"adim-2-pm2-kurulumu\">Ad\u0131m 2: PM2 Kurulumu<\/h3>\n<\/p>\n<p><p>PM2, Node.js uygulamalar\u0131n\u0131 arka planda \u00e7al\u0131\u015ft\u0131ran, otomatik yeniden ba\u015flatan ve log y\u00f6netimi sa\u011flayan bir s\u00fcre\u00e7 y\u00f6neticisidir. Sunucu yeniden ba\u015flad\u0131\u011f\u0131nda uygulaman\u0131z\u0131n otomatik aya\u011fa kalkmas\u0131n\u0131 istiyorsan\u0131z PM2 vazge\u00e7ilmezdir.<\/p>\n<\/p>\n<p><pre><code class=\"language-bash\"># PM2'yi global olarak y\u00fckle<\/p>\n<p>sudo npm install -g pm2<\/p>\n<h1 id=\"pm2nin-sistem-baslangicinda-otomatik-calismasini-sagla\">PM2'nin sistem ba\u015flang\u0131c\u0131nda otomatik \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011fla<\/h1>\n<p>pm2 startup systemd<\/p>\n<h1 id=\"cikan-komutu-kopyalayip-calistir-sudo-env-path-seklinde-olacak\">\u00c7\u0131kan komutu kopyalay\u0131p \u00e7al\u0131\u015ft\u0131r (sudo env PATH=... \u015feklinde olacak)<\/h1>\n<p>sudo env PATH=$PATH:\/usr\/bin \/usr\/lib\/node_modules\/pm2\/bin\/pm2 startup systemd -u ubuntu --hp \/home\/ubuntu<\/p>\n<h1 id=\"pm2yi-kaydet\">PM2'yi kaydet<\/h1>\n<p>pm2 save<\/code><\/pre>\n<\/p>\n<p><p>Bu ad\u0131m tamamland\u0131\u011f\u0131nda sunucunuz yeniden ba\u015flasa bile PM2 otomatik olarak devreye girecek ve kay\u0131tl\u0131 uygulamalar\u0131n\u0131z\u0131 ba\u015flatacakt\u0131r. Sunucu <a href=\"https:\/\/saviorhost.com\/blog\/sunucu-uptime-nedir-99-9-calisma-suresi-rehberi\/\" target=\"_blank\" rel=\"noopener\">uptime<\/a> de\u011ferleri a\u00e7\u0131s\u0131ndan bu kritik bir avantajd\u0131r.<\/p>\n<\/p>\n<p><h3 id=\"adim-3-git-ve-temel-araclar\">Ad\u0131m 3: Git ve Temel Ara\u00e7lar<\/h3>\n<\/p>\n<p><p>Projenizi sunucuya aktarmak i\u00e7in Git kullanabilirsiniz. Ayr\u0131ca build s\u00fcrecinde baz\u0131 sistem k\u00fct\u00fcphaneleri gerekebilir. A\u015fa\u011f\u0131daki paketleri kurun:<\/p>\n<\/p>\n<p><pre><code class=\"language-bash\">sudo apt install -y git build-essential<\/p>\n<h1 id=\"node-js-native-moduller-icin-python-ve-make-gerekebilir\">Node.js native mod\u00fcller i\u00e7in Python ve make gerekebilir<\/h1>\n<p>sudo apt install -y python3 make g++<\/code><\/pre>\n<\/p>\n<p><p>Alternatif olarak dosyalar\u0131 <a href=\"https:\/\/saviorhost.com\/blog\/filezilla-ftp-baglantisi-nasil-yapilir\/\" target=\"_blank\" rel=\"noopener\">FTP ile sunucuya y\u00fckleyebilirsiniz<\/a>. Ancak Git kullanmak hem h\u0131zl\u0131 hem de s\u00fcr\u00fcm kontrol\u00fc sa\u011flar.<\/p>\n<\/p>\n<div style=\"background:#f0fdf4;border-left:4px solid #22c55e;padding:15px;margin:20px 0;border-radius:8px;\">\n<p><p><strong>\u00d6zetle:<\/strong> Node.js 20 LTS, PM2 ve Git kurulumu tamamland\u0131. Art\u0131k projenizi sunucuya ta\u015f\u0131yabilir ve build edebilirsiniz. S\u0131radaki ad\u0131m, Next.js projesini \u00fcretim i\u00e7in haz\u0131rlamak.<\/p>\n<\/p>\n<\/div>\n<p><p>Ancak as\u0131l kritik nokta bir sonraki ad\u0131mda: Build optimizasyonu olmadan sunucu kaynaklar\u0131 bo\u015fa harcan\u0131r.<\/p>\n<\/p>\n<p><figure class=\"wp-block-image size-large\"><img width=\"1024\" height=\"768\" src=\"https:\/\/saviorhost.com\/blog\/wp-content\/uploads\/2026\/08\/Next.js-Projesini-Build-Etme-ve-Optimize-Etme.jpg\" class=\"aligncenter sm-ai-image\" alt=\"Next.js Projesini Build Etme ve Optimize Etme\" decoding=\"async\" loading=\"lazy\" srcset=\"https:\/\/saviorhost.com\/blog\/wp-content\/uploads\/2026\/08\/Next.js-Projesini-Build-Etme-ve-Optimize-Etme.jpg 1024w, https:\/\/saviorhost.com\/blog\/wp-content\/uploads\/2026\/08\/Next.js-Projesini-Build-Etme-ve-Optimize-Etme-300x225.jpg 300w, https:\/\/saviorhost.com\/blog\/wp-content\/uploads\/2026\/08\/Next.js-Projesini-Build-Etme-ve-Optimize-Etme-768x576.jpg 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<h2 id=\"nextjs-build-optimizasyon\">Next.js Projesini Build Etme ve Optimize Etme<\/h2>\n<\/p>\n<p><p>Build i\u015flemi, Next.js projesinin \u00fcretim ortam\u0131na haz\u0131r hale getirilmesidir. Bu a\u015famada yap\u0131lan hatalar, sunucuda bellek \u015fi\u015fmesi ve yava\u015f yan\u0131t s\u00fcreleri olarak geri d\u00f6ner. Do\u011fru yap\u0131land\u0131rma ile bu sorunlar\u0131 k\u00f6kten \u00e7\u00f6zebilirsiniz.<\/p>\n<\/p>\n<p><h3 id=\"standalone-mod-ile-build-almak\">Standalone Mod ile Build Almak<\/h3>\n<\/p>\n<p><p>Next.js 13.4 ve sonras\u0131nda gelen <code>output: 'standalone'<\/code> \u00f6zelli\u011fi, \u00fcretim da\u011f\u0131t\u0131m\u0131n\u0131 inan\u0131lmaz kolayla\u015ft\u0131rd\u0131. Bu mod, uygulaman\u0131z\u0131 \u00e7al\u0131\u015ft\u0131rmak i\u00e7in gereken minimum dosyalar\u0131 ayr\u0131 bir klas\u00f6re kopyalar. B\u00f6ylece sunucuya gereksiz node_modules dosyalar\u0131 ta\u015f\u0131nmaz.<\/p>\n<\/p>\n<p><p><code>next.config.js<\/code> dosyan\u0131z\u0131 \u015fu \u015fekilde g\u00fcncelleyin:<\/p>\n<\/p>\n<p><pre><code class=\"language-javascript\">\/** @type {import('next').NextConfig} *\/<\/p>\n<p>const nextConfig = {<\/p>\n<p>  output: 'standalone',<\/p>\n<p>  experimental: {<\/p>\n<p>    \/\/ Gerekirse buraya ek ayarlar<\/p>\n<p>  },<\/p>\n<p>  env: {<\/p>\n<p>    API<em>URL: process.env.API<\/em>URL,<\/p>\n<p>  },<\/p>\n<p>};<\/p>\n<p>module.exports = nextConfig;<\/code><\/pre>\n<\/p>\n<p><p>Bu yap\u0131land\u0131rma sonras\u0131 <code>npm run build<\/code> komutu, <code>.next\/standalone<\/code> klas\u00f6r\u00fcn\u00fc olu\u015fturur. Bu klas\u00f6r, <code>server.js<\/code> dosyas\u0131 ile birlikte ba\u011f\u0131ms\u0131z \u00e7al\u0131\u015fabilir.<\/p>\n<\/p>\n<p><h3 id=\"build-komutunu-calistirma\">Build Komutunu \u00c7al\u0131\u015ft\u0131rma<\/h3>\n<\/p>\n<p><p>Proje dizininize gidin ve a\u015fa\u011f\u0131daki komutlar\u0131 s\u0131ras\u0131yla \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<\/p>\n<p><pre><code class=\"language-bash\"># Proje dizinine git<\/p>\n<p>cd \/var\/www\/nextjs-uygulamaniz<\/p>\n<h1 id=\"bagimliliklari-yukle-eger-ilk-kez-kuruluyorsa\">Ba\u011f\u0131ml\u0131l\u0131klar\u0131 y\u00fckle (e\u011fer ilk kez kuruluyorsa)<\/h1>\n<p>npm install<\/p>\n<h1 id=\"build-al\">Build al<\/h1>\n<p>npm run build<\/code><\/pre>\n<\/p>\n<p><p>Build tamamland\u0131\u011f\u0131nda ekranda her route i\u00e7in boyut bilgilerini g\u00f6r\u00fcrs\u00fcn\u00fcz. Bu bilgiler, hangi sayfalar\u0131n optimize edilmesi gerekti\u011fini anlaman\u0131za yard\u0131mc\u0131 olur. \u00d6rne\u011fin, bir sayfan\u0131n First Load JS de\u011feri 200 kB \u00fczerindeyse, o sayfada code splitting yapman\u0131z gerekebilir.<\/p>\n<\/p>\n<p><h3 id=\"cevre-degiskenleri-environment-variables\">\u00c7evre De\u011fi\u015fkenleri (Environment Variables)<\/h3>\n<\/p>\n<p><p>API anahtarlar\u0131 ve veritaban\u0131 ba\u011flant\u0131 bilgileri asla kod i\u00e7ine g\u00f6m\u00fclmemelidir. Bunun yerine <code>.env.production<\/code> dosyas\u0131 kullan\u0131n. Bu dosyay\u0131 sunucuda olu\u015fturun ve de\u011ferleri ekleyin:<\/p>\n<\/p>\n<p><pre><code class=\"language-bash\"># .env.production dosyas\u0131 olu\u015ftur<\/p>\n<p>nano .env.production<\/code><\/pre>\n<\/p>\n<p><pre><code class=\"language-bash\"># Dosya i\u00e7eri\u011fi \u00f6rne\u011fi<\/p>\n<p>API_URL=https:\/\/api.siteniz.com<\/p>\n<p>DATABASE_URL=postgresql:\/\/user:password@localhost:5432\/veritabani<\/p>\n<p>NEXT<em>PUBLIC<\/em>ANALYTICS_ID=UA-12345678<\/code><\/pre>\n<\/p>\n<p><p>Dikkat et: <code>NEXT<em>PUBLIC<\/em><\/code> \u00f6neki ta\u015f\u0131yan de\u011fi\u015fkenler taray\u0131c\u0131ya a\u00e7\u0131l\u0131r. Hassas bilgileri bu \u00f6nekle tan\u0131mlamay\u0131n.<\/p>\n<\/p>\n<div style=\"background:#fffbeb;border-left:4px solid #f59e0b;padding:15px;margin:20px 0;border-radius:8px;\">\n<p><p><strong>\u00d6nemli Not:<\/strong> Standalone mod kullanm\u0131yorsan\u0131z, sunucuya node_modules klas\u00f6r\u00fcn\u00fcn tamam\u0131n\u0131 kopyalaman\u0131z gerekir. Bu hem disk alan\u0131 israf\u0131na hem de g\u00fcvenlik risklerine yol a\u00e7ar. Standalone modu mutlaka tercih edin.<\/p>\n<\/p>\n<\/div>\n<p><p>Build haz\u0131r. Peki bu uygulamay\u0131 d\u0131\u015f d\u00fcnyaya nas\u0131l a\u00e7aca\u011f\u0131z? \u0130\u015fte tam burada Nginx devreye giriyor.<\/p>\n<\/p>\n<p><h2 id=\"nginx-ters-proxy\">Nginx Ters Proxy Yap\u0131land\u0131rmas\u0131<\/h2>\n<\/p>\n<p><p>Next.js uygulaman\u0131z belirli bir port \u00fczerinde (\u00f6rne\u011fin 3000) \u00e7al\u0131\u015f\u0131r. Ancak kullan\u0131c\u0131lar\u0131n bu porta do\u011frudan eri\u015fmesini istemeyiz. Nginx, gelen HTTP\/HTTPS isteklerini 80 veya 443 portundan al\u0131p 3000 portuna y\u00f6nlendirir. Buna ters proxy (reverse proxy) denir.<\/p>\n<\/p>\n<p><h3 id=\"nginx-kurulumu\">Nginx Kurulumu<\/h3>\n<\/p>\n<p><p>Ubuntu \u00fczerinde Nginx kurmak olduk\u00e7a basittir:<\/p>\n<\/p>\n<p><pre><code class=\"language-bash\">sudo apt update<\/p>\n<p>sudo apt install -y nginx<\/p>\n<h1 id=\"nginx-durumunu-kontrol-et\">Nginx durumunu kontrol et<\/h1>\n<p>sudo systemctl status nginx<\/code><\/pre>\n<\/p>\n<p><h3 id=\"next-js-icin-nginx-yapilandirmasi\">Next.js \u0130\u00e7in Nginx Yap\u0131land\u0131rmas\u0131<\/h3>\n<\/p>\n<p><p>Yeni bir yap\u0131land\u0131rma dosyas\u0131 olu\u015fturun:<\/p>\n<\/p>\n<p><pre><code class=\"language-bash\">sudo nano \/etc\/nginx\/sites-available\/nextjs-uygulamaniz<\/code><\/pre>\n<\/p>\n<p><p>A\u015fa\u011f\u0131daki yap\u0131land\u0131rmay\u0131 yap\u0131\u015ft\u0131r\u0131n ve domain ad\u0131n\u0131z\u0131 kendinize g\u00f6re de\u011fi\u015ftirin:<\/p>\n<\/p>\n<p><pre><code class=\"language-nginx\">server {<\/p>\n<p>    listen 80;<\/p>\n<p>    server_name sizin-domain.com www.sizin-domain.com;<\/p>\n<p>    # Gelen istekleri Next.js uygulamas\u0131na y\u00f6nlendir<\/p>\n<p>    location \/ {<\/p>\n<p>        proxy_pass http:\/\/127.0.0.1:3000;<\/p>\n<p>        proxy<em>http<\/em>version 1.1;<\/p>\n<p>        proxy<em>set<\/em>header Upgrade $http_upgrade;<\/p>\n<p>        proxy<em>set<\/em>header Connection 'upgrade';<\/p>\n<p>        proxy<em>set<\/em>header Host $host;<\/p>\n<p>        proxy<em>cache<\/em>bypass $http_upgrade;<\/p>\n<p>        proxy<em>set<\/em>header X-Real-IP $remote_addr;<\/p>\n<p>        proxy<em>set<\/em>header X-Forwarded-For $proxy<em>add<\/em>x<em>forwarded<\/em>for;<\/p>\n<p>        proxy<em>set<\/em>header X-Forwarded-Proto $scheme;<\/p>\n<p>        # Zaman a\u015f\u0131m\u0131 s\u00fcreleri (uzun s\u00fcren istekler i\u00e7in)<\/p>\n<p>        proxy<em>connect<\/em>timeout 60s;<\/p>\n<p>        proxy<em>send<\/em>timeout 60s;<\/p>\n<p>        proxy<em>read<\/em>timeout 60s;<\/p>\n<p>    }<\/p>\n<p>    # Statik dosyalar i\u00e7in \u00f6zel yap\u0131land\u0131rma<\/p>\n<p>    location \/_next\/static\/ {<\/p>\n<p>        proxy_pass http:\/\/127.0.0.1:3000;<\/p>\n<p>        proxy<em>set<\/em>header Host $host;<\/p>\n<p>        expires 365d;<\/p>\n<p>        add_header Cache-Control \"public, immutable\";<\/p>\n<p>    }<\/p>\n<p>    # B\u00fcy\u00fck dosya y\u00fcklemeleri i\u00e7in limit<\/p>\n<p>    client<em>max<\/em>body_size 10M;<\/p>\n<p>    # Loglar<\/p>\n<p>    access_log \/var\/log\/nginx\/nextjs-access.log;<\/p>\n<p>    error_log \/var\/log\/nginx\/nextjs-error.log;<\/p>\n<p>}<\/code><\/pre>\n<\/p>\n<p><p>Bu yap\u0131land\u0131rmay\u0131 kaydettikten sonra siteyi etkinle\u015ftirin:<\/p>\n<\/p>\n<p><pre><code class=\"language-bash\"># Siteyi etkinle\u015ftir<\/p>\n<p>sudo ln -s \/etc\/nginx\/sites-available\/nextjs-uygulamaniz \/etc\/nginx\/sites-enabled\/<\/p>\n<h1 id=\"yapilandirmayi-test-et\">Yap\u0131land\u0131rmay\u0131 test et<\/h1>\n<p>sudo nginx -t<\/p>\n<h1 id=\"nginxi-yeniden-yukle\">Nginx'i yeniden y\u00fckle<\/h1>\n<p>sudo systemctl reload nginx<\/code><\/pre>\n<\/p>\n<p><p><code>nginx -t<\/code> komutu &#8220;syntax is ok&#8221; mesaj\u0131 verirse yap\u0131land\u0131rma hatas\u0131z demektir. E\u011fer hata al\u0131rsan\u0131z, hata mesaj\u0131n\u0131 dikkatlice okuyun. \u00c7o\u011fu zaman eksik noktal\u0131 virg\u00fcl veya dosya yolu hatas\u0131d\u0131r.<\/p>\n<\/p>\n<p><h3 id=\"neden-nginx-kullanmaliyiz\">Neden Nginx Kullanmal\u0131y\u0131z?<\/h3>\n<\/p>\n<p><p>Baz\u0131 geli\u015ftiriciler do\u011frudan 80 portuna Node.js uygulamas\u0131n\u0131 ba\u011flamay\u0131 deniyor. Bu yakla\u015f\u0131m hem \u00e7al\u0131\u015f\u0131r hem de yanl\u0131\u015ft\u0131r. Nginx, SSL terminasyonu, statik dosya \u00f6nbellekleme, istek s\u0131n\u0131rlama ve DDoS korumas\u0131 gibi kritik g\u00f6revleri \u00fcstlenir. Ayr\u0131ca <a href=\"https:\/\/saviorhost.com\/blog\/nvme-ssd-vs-sata-ssd-web-sitesi-hizi-karsilastirma\/\" target=\"_blank\" rel=\"noopener\">NVMe SSD disk performans\u0131<\/a> ile birle\u015fti\u011finde, statik dosyalar\u0131n sunucudan inan\u0131lmaz h\u0131zl\u0131 g\u00f6nderilmesini sa\u011flar.<\/p>\n<\/p>\n<div style=\"background:#f0fdf4;border-left:4px solid #22c55e;padding:15px;margin:20px 0;border-radius:8px;\">\n<p><p><strong>\u00d6zetle:<\/strong> Nginx, 80 portundan gelen istekleri Next.js uygulaman\u0131za y\u00f6nlendirir. Ayr\u0131ca statik dosyalar\u0131 \u00f6nbellekleyerek sunucu y\u00fck\u00fcn\u00fc azalt\u0131r. Art\u0131k uygulaman\u0131z Nginx \u00fczerinden eri\u015filebilir durumda.<\/p>\n<\/p>\n<\/div>\n<p><p>Ancak uygulaman\u0131n s\u00fcrekli \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flamak i\u00e7in PM2 yap\u0131land\u0131rmas\u0131na ihtiyac\u0131m\u0131z var. Bir sonraki b\u00f6l\u00fcmde bunu ele alaca\u011f\u0131z.<\/p>\n<\/p>\n<p><h2 id=\"pm2-ile-yonetim\">PM2 ile Next.js Uygulamas\u0131n\u0131 Y\u00f6netme<\/h2>\n<\/p>\n<p><p>Next.js uygulaman\u0131z\u0131 manuel olarak <code>node server.js<\/code> komutuyla ba\u015flatabilirsiniz. Ancak SSH oturumunu kapatt\u0131\u011f\u0131n\u0131zda uygulama kapan\u0131r. Ayr\u0131ca sunucu yeniden ba\u015flarsa uygulaman\u0131z otomatik aya\u011fa kalkmaz. PM2 bu sorunlar\u0131n tamam\u0131n\u0131 \u00e7\u00f6zer.<\/p>\n<\/p>\n<p><h3 id=\"pm2-ile-uygulamayi-baslatma\">PM2 ile Uygulamay\u0131 Ba\u015flatma<\/h3>\n<\/p>\n<p><p>Standalone build sonras\u0131 olu\u015fan <code>.next\/standalone<\/code> klas\u00f6r\u00fc i\u00e7indeki <code>server.js<\/code> dosyas\u0131n\u0131 PM2 ile ba\u015flat\u0131n:<\/p>\n<\/p>\n<p><pre><code class=\"language-bash\"># Proje dizinine git<\/p>\n<p>cd \/var\/www\/nextjs-uygulamaniz<\/p>\n<h1 id=\"pm2-ile-baslat\">PM2 ile ba\u015flat<\/h1>\n<p>pm2 start .next\/standalone\/server.js --name \"nextjs-uygulamaniz\" --node-args=\"--max-old-space-size=1024\"<\/p>\n<h1 id=\"durumu-kontrol-et\">Durumu kontrol et<\/h1>\n<p>pm2 status<\/p>\n<h1 id=\"loglari-goruntule\">Loglar\u0131 g\u00f6r\u00fcnt\u00fcle<\/h1>\n<p>pm2 logs nextjs-uygulamaniz<\/code><\/pre>\n<\/p>\n<p><p>Not: <code>--max-old-space-size=1024<\/code> de\u011feri, Node.js&#8217;in kullanabilece\u011fi maksimum heap belle\u011fini 1 GB ile s\u0131n\u0131rlar. Sunucunuzun RAM miktar\u0131na g\u00f6re bu de\u011feri ayarlay\u0131n. \u00d6rne\u011fin 4 GB RAM i\u00e7in 2048 veya 3072 kullanabilirsiniz.<\/p>\n<\/p>\n<p><h3 id=\"pm2-ekosistem-dosyasi-olusturma\">PM2 Ekosistem Dosyas\u0131 Olu\u015fturma<\/h3>\n<\/p>\n<p><p>Daha y\u00f6netilebilir bir yap\u0131 i\u00e7in <code>ecosystem.config.js<\/code> dosyas\u0131 olu\u015fturman\u0131z\u0131 \u00f6neriyorum. Bu dosya, t\u00fcm PM2 ayarlar\u0131n\u0131 tek bir yerde toplar:<\/p>\n<\/p>\n<p><pre><code class=\"language-javascript\">module.exports = {<\/p>\n<p>  apps: [<\/p>\n<p>    {<\/p>\n<p>      name: 'nextjs-uygulamaniz',<\/p>\n<p>      script: '.next\/standalone\/server.js',<\/p>\n<p>      instances: 1,<\/p>\n<p>      exec_mode: 'fork',<\/p>\n<p>      autorestart: true,<\/p>\n<p>      watch: false,<\/p>\n<p>      max<em>memory<\/em>restart: '1G',<\/p>\n<p>      env: {<\/p>\n<p>        NODE_ENV: 'production',<\/p>\n<p>        PORT: 3000,<\/p>\n<p>        HOSTNAME: '0.0.0.0',<\/p>\n<p>      },<\/p>\n<p>      error_file: '\/var\/log\/pm2\/nextjs-error.log',<\/p>\n<p>      out_file: '\/var\/log\/pm2\/nextjs-out.log',<\/p>\n<p>      merge_logs: true,<\/p>\n<p>      time: true,<\/p>\n<p>    },<\/p>\n<p>  ],<\/p>\n<p>};<\/code><\/pre>\n<\/p>\n<p><p>Bu dosyay\u0131 proje dizinine kaydedin ve uygulamay\u0131 \u015fu komutla ba\u015flat\u0131n:<\/p>\n<\/p>\n<p><pre><code class=\"language-bash\">pm2 start ecosystem.config.js<\/p>\n<p>pm2 save<\/code><\/pre>\n<\/p>\n<p><h3 id=\"pm2-alternatifleri-systemd-vs-nohup\">PM2 Alternatifleri: systemd vs nohup<\/h3>\n<\/p>\n<p><p>PM2 en pop\u00fcler se\u00e7enek olsa da, baz\u0131 ekipler systemd servislerini tercih eder. Hangi y\u00f6ntemin size uygun oldu\u011funu anlamak i\u00e7in a\u015fa\u011f\u0131daki tabloyu inceleyin:<\/p>\n<\/p>\n<table style=\"width:100%;border-collapse:collapse;margin:20px 0;\">\n<thead>\n<tr style=\"background:#f8fafc;border-bottom:2px solid #e2e8f0;\">\n<p><th style=\"padding:12px;text-align:left;\">\u00d6zellik<\/th>\n<\/p>\n<p><th style=\"padding:12px;text-align:left;\">PM2<\/th>\n<\/p>\n<p><th style=\"padding:12px;text-align:left;\">systemd<\/th>\n<\/p>\n<p><th style=\"padding:12px;text-align:left;\">nohup<\/th>\n<\/p>\n<\/tr>\n<\/thead>\n<tbody>\n<tr style=\"border-bottom:1px solid #e2e8f0;\">\n<p><td style=\"padding:12px;\">Otomatik yeniden ba\u015flatma<\/td>\n<\/p>\n<p><td style=\"padding:12px;\">\u2705 Var<\/td>\n<\/p>\n<p><td style=\"padding:12px;\">\u2705 Var<\/td>\n<\/p>\n<p><td style=\"padding:12px;\">\u274c Yok<\/td>\n<\/p>\n<\/tr>\n<tr style=\"border-bottom:1px solid #e2e8f0;\">\n<p><td style=\"padding:12px;\">Log y\u00f6netimi<\/td>\n<\/p>\n<p><td style=\"padding:12px;\">\u2705 G\u00fc\u00e7l\u00fc<\/td>\n<\/p>\n<p><td style=\"padding:12px;\">\u2705 journald<\/td>\n<\/p>\n<p><td style=\"padding:12px;\">\u274c Manuel<\/td>\n<\/p>\n<\/tr>\n<tr style=\"border-bottom:1px solid #e2e8f0;\">\n<p><td style=\"padding:12px;\">Kolay kurulum<\/td>\n<\/p>\n<p><td style=\"padding:12px;\">\u2705 \u00c7ok kolay<\/td>\n<\/p>\n<p><td style=\"padding:12px;\">\u26a0\ufe0f Orta<\/td>\n<\/p>\n<p><td style=\"padding:12px;\">\u2705 Basit<\/td>\n<\/p>\n<\/tr>\n<tr style=\"border-bottom:1px solid #e2e8f0;\">\n<p><td style=\"padding:12px;\">\u00c7oklu uygulama y\u00f6netimi<\/td>\n<\/p>\n<p><td style=\"padding:12px;\">\u2705 M\u00fckemmel<\/td>\n<\/p>\n<p><td style=\"padding:12px;\">\u274c Zay\u0131f<\/td>\n<\/p>\n<p><td style=\"padding:12px;\">\u274c Yok<\/td>\n<\/p>\n<\/tr>\n<tr>\n<p><td style=\"padding:12px;\">Kaynak t\u00fcketimi<\/td>\n<\/p>\n<p><td style=\"padding:12px;\">D\u00fc\u015f\u00fck<\/td>\n<\/p>\n<p><td style=\"padding:12px;\">D\u00fc\u015f\u00fck<\/td>\n<\/p>\n<p><td style=\"padding:12px;\">En d\u00fc\u015f\u00fck<\/td>\n<\/p>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><p>PM2, \u00f6zellikle birden fazla Node.js uygulamas\u0131 y\u00f6netenler i\u00e7in en pratik \u00e7\u00f6z\u00fcmd\u00fcr. Saviorhost olarak biz de t\u00fcm Node.js projelerimizde PM2 kullan\u0131yoruz. E\u011fer <strong>n8n &#038; Node.js Hosting<\/strong> hizmetimizde oldu\u011fu gibi birden fazla otomasyon \u00e7al\u0131\u015ft\u0131r\u0131yorsan\u0131z, PM2&#8217;nin \u00e7oklu uygulama deste\u011fi hayat kurtar\u0131c\u0131d\u0131r.<\/p>\n<\/p>\n<div style=\"background:#fffbeb;border-left:4px solid #f59e0b;padding:15px;margin:20px 0;border-radius:8px;\">\n<p><p><strong>\u00d6nemli Not:<\/strong> PM2&#8217;yi asla root kullan\u0131c\u0131s\u0131yla \u00e7al\u0131\u015ft\u0131rmay\u0131n. Ayr\u0131 bir sistem kullan\u0131c\u0131s\u0131 olu\u015fturun ve uygulaman\u0131z\u0131 o kullan\u0131c\u0131yla \u00e7al\u0131\u015ft\u0131r\u0131n. Bu, olas\u0131 bir g\u00fcvenlik ihlalinde sunucunun tamam\u0131n\u0131n ele ge\u00e7irilmesini \u00f6nler.<\/p>\n<\/p>\n<\/div>\n<p><p>Uygulaman\u0131z art\u0131k sa\u011flam bir \u015fekilde \u00e7al\u0131\u015f\u0131yor. Peki kullan\u0131c\u0131lar\u0131n g\u00fcvenli ba\u011flant\u0131 kurmas\u0131n\u0131 nas\u0131l sa\u011flayaca\u011f\u0131z? \u0130\u015fte s\u0131radaki ad\u0131m SSL.<\/p>\n<\/p>\n<p><h2 id=\"ssl-domain-baglama\">SSL Sertifikas\u0131 ve Domain Ba\u011flama<\/h2>\n<\/p>\n<p><p>2026 y\u0131l\u0131nda SSL sertifikas\u0131 olmayan bir site, hem Google s\u0131ralamas\u0131nda d\u00fc\u015fer hem de ziyaret\u00e7iler taraf\u0131ndan g\u00fcvenilmez bulunur. Neyse ki Let&#8217;s Encrypt ile \u00fccretsiz SSL sertifikas\u0131 almak art\u0131k dakikalar s\u00fcr\u00fcyor.<\/p>\n<\/p>\n<p><h3 id=\"certbot-ile-ssl-kurulumu\">Certbot ile SSL Kurulumu<\/h3>\n<\/p>\n<p><p>Certbot, Let&#8217;s Encrypt sertifikalar\u0131n\u0131 otomatik olarak al\u0131p yenileyen bir ara\u00e7t\u0131r. Kurulumu i\u00e7in:<\/p>\n<\/p>\n<p><pre><code class=\"language-bash\"># Certbot ve Nginx eklentisini y\u00fckle<\/p>\n<p>sudo apt install -y certbot python3-certbot-nginx<\/p>\n<h1 id=\"ssl-sertifikasi-al-ve-nginx-yapilandirmasini-otomatik-guncelle\">SSL sertifikas\u0131 al ve Nginx yap\u0131land\u0131rmas\u0131n\u0131 otomatik g\u00fcncelle<\/h1>\n<p>sudo certbot --nginx -d sizin-domain.com -d www.sizin-domain.com<\/p>\n<h1 id=\"yenileme-testini-calistir\">Yenileme testini \u00e7al\u0131\u015ft\u0131r<\/h1>\n<p>sudo certbot renew --dry-run<\/code><\/pre>\n<\/p>\n<p><p>Certbot kurulum s\u0131ras\u0131nda size e-posta adresi sorar ve y\u00f6nlendirme tercihini sunar. HTTP&#8217;den HTTPS&#8217;e otomatik y\u00f6nlendirme yapmas\u0131n\u0131 se\u00e7in. Bu, SEO a\u00e7\u0131s\u0131ndan da do\u011fru bir tercihtir.<\/p>\n<\/p>\n<p><h3 id=\"ssl-yapilandirmasi-sonrasi-nginx-kontrolu\">SSL Yap\u0131land\u0131rmas\u0131 Sonras\u0131 Nginx Kontrol\u00fc<\/h3>\n<\/p>\n<p><p>Certbot, Nginx yap\u0131land\u0131rma dosyan\u0131za otomatik olarak SSL sat\u0131rlar\u0131 ekler. Dosyan\u0131n son hali \u015funa benzer:<\/p>\n<\/p>\n<p><pre><code class=\"language-nginx\">server {<\/p>\n<p>    listen 443 ssl http2;<\/p>\n<p>    server_name sizin-domain.com www.sizin-domain.com;<\/p>\n<p>    ssl_certificate \/etc\/letsencrypt\/live\/sizin-domain.com\/fullchain.pem;<\/p>\n<p>    ssl<em>certificate<\/em>key \/etc\/letsencrypt\/live\/sizin-domain.com\/privkey.pem;<\/p>\n<p>    include \/etc\/letsencrypt\/options-ssl-nginx.conf;<\/p>\n<p>    ssl_dhparam \/etc\/letsencrypt\/ssl-dhparams.pem;<\/p>\n<p>    location \/ {<\/p>\n<p>        proxy_pass http:\/\/127.0.0.1:3000;<\/p>\n<p>        proxy<em>http<\/em>version 1.1;<\/p>\n<p>        proxy<em>set<\/em>header Upgrade $http_upgrade;<\/p>\n<p>        proxy<em>set<\/em>header Connection 'upgrade';<\/p>\n<p>        proxy<em>set<\/em>header Host $host;<\/p>\n<p>        proxy<em>cache<\/em>bypass $http_upgrade;<\/p>\n<p>        proxy<em>set<\/em>header X-Real-IP $remote_addr;<\/p>\n<p>        proxy<em>set<\/em>header X-Forwarded-For $proxy<em>add<\/em>x<em>forwarded<\/em>for;<\/p>\n<p>        proxy<em>set<\/em>header X-Forwarded-Proto $scheme;<\/p>\n<p>    }<\/p>\n<p>}<\/p>\n<p>server {<\/p>\n<p>    listen 80;<\/p>\n<p>    server_name sizin-domain.com www.sizin-domain.com;<\/p>\n<p>    return 301 https:\/\/$host$request_uri;<\/p>\n<p>}<\/code><\/pre>\n<\/p>\n<p><p>Yap\u0131land\u0131rmay\u0131 test edip Nginx&#8217;i yeniden y\u00fckleyin:<\/p>\n<\/p>\n<p><pre><code class=\"language-bash\">sudo nginx -t<\/p>\n<p>sudo systemctl reload nginx<\/code><\/pre>\n<\/p>\n<p><h3 id=\"statik-ip-ve-dns-ayarlari\">Statik IP ve DNS Ayarlar\u0131<\/h3>\n<\/p>\n<p><p>Domaininizin sunucunuza do\u011fru y\u00f6nlendi\u011finden emin olun. DNS y\u00f6netim panelinizden A kayd\u0131n\u0131z\u0131 sunucunuzun IP adresine y\u00f6nlendirin. E\u011fer <a href=\"https:\/\/saviorhost.com\/blog\/statik-ip-ne-ise-yarar-hosting-2026\/\" target=\"_blank\" rel=\"noopener\">statik IP<\/a> kullan\u0131yorsan\u0131z, bu adres de\u011fi\u015fmeyece\u011fi i\u00e7in SSL sertifikas\u0131 ve DNS yap\u0131land\u0131rmas\u0131 sorunsuz \u00e7al\u0131\u015f\u0131r.<\/p>\n<\/p>\n<div style=\"background:#f0fdf4;border-left:4px solid #22c55e;padding:15px;margin:20px 0;border-radius:8px;\">\n<p><p><strong>\u00d6zetle:<\/strong> SSL sertifikan\u0131z aktif ve HTTP&#8217;den HTTPS&#8217;e y\u00f6nlendirme \u00e7al\u0131\u015f\u0131yor. Art\u0131k uygulaman\u0131z g\u00fcvenli bir \u015fekilde eri\u015filebilir durumda. Ancak her \u015fey yolunda gitmeyebilir; bir sonraki b\u00f6l\u00fcmde olas\u0131 hatalar\u0131 ele alaca\u011f\u0131z.<\/p>\n<\/p>\n<\/div>\n<p><p>Ama hepsi bu kadar de\u011fil. Ger\u00e7ek d\u00fcnyada kar\u015f\u0131la\u015faca\u011f\u0131n\u0131z sorunlar, kurulumdan \u00e7ok daha fazlas\u0131n\u0131 i\u00e7erir.<\/p>\n<\/p>\n<p><h2 id=\"yaygin-hatalar-cozumleri\">Yayg\u0131n Hatalar ve Kesin \u00c7\u00f6z\u00fcmleri<\/h2>\n<\/p>\n<p><p><strong>Next js projesi yay\u0131nlama<\/strong> s\u00fcrecinde en \u00e7ok kar\u015f\u0131la\u015f\u0131lan hatalar\u0131 ve \u00e7\u00f6z\u00fcmlerini bu b\u00f6l\u00fcmde toplad\u0131m. Bu hatalar\u0131 y\u0131llar i\u00e7inde defalarca g\u00f6rd\u00fck ve her birinin kesin \u00e7\u00f6z\u00fcm\u00fcn\u00fc belgeledik.<\/p>\n<\/p>\n<p><h3 id=\"502-bad-gateway-hatasi\">502 Bad Gateway Hatas\u0131<\/h3>\n<\/p>\n<p><p>Bu hata, Nginx&#8217;in Next.js uygulamas\u0131na ba\u011flanamad\u0131\u011f\u0131 anlam\u0131na gelir. En yayg\u0131n nedenler:<\/p>\n<\/p>\n<ul>\n<li>Next.js uygulamas\u0131 \u00e7al\u0131\u015fm\u0131yor (PM2&#8217;de durdurulmu\u015f olabilir)<\/li>\n<li>Yanl\u0131\u015f port numaras\u0131 (\u00f6rne\u011fin uygulama 3001&#8217;de \u00e7al\u0131\u015f\u0131yor ama Nginx 3000&#8217;e y\u00f6nlendiriyor)<\/li>\n<li>Uygulama ba\u015flat\u0131l\u0131rken hata olu\u015ftu<\/li>\n<\/ul>\n<p><p>\u00c7\u00f6z\u00fcm i\u00e7in \u00f6nce PM2 durumunu kontrol edin:<\/p>\n<\/p>\n<p><pre><code class=\"language-bash\">pm2 status<\/p>\n<p>pm2 logs nextjs-uygulamaniz --lines 50<\/code><\/pre>\n<\/p>\n<p><p>E\u011fer uygulama &#8220;errored&#8221; durumundaysa, loglarda hatan\u0131n nedenini g\u00f6rebilirsiniz. \u00c7o\u011fu zaman eksik \u00e7evre de\u011fi\u015fkeni veya yanl\u0131\u015f dosya yolu sorunudur.<\/p>\n<\/p>\n<p><h3 id=\"504-gateway-timeout-hatasi\">504 Gateway Timeout Hatas\u0131<\/h3>\n<\/p>\n<p><p>Next.js uygulaman\u0131z iste\u011fe zaman\u0131nda yan\u0131t veremedi\u011finde bu hata olu\u015fur. \u00d6zellikle uzun s\u00fcren API istekleri veya veritaban\u0131 sorgular\u0131 buna neden olur. Nginx yap\u0131land\u0131rman\u0131zdaki <code>proxy<em>read<\/em>timeout<\/code> de\u011ferini art\u0131rarak \u00e7\u00f6zebilirsiniz:<\/p>\n<\/p>\n<p><pre><code class=\"language-nginx\">location \/ {<\/p>\n<p>    proxy_pass http:\/\/127.0.0.1:3000;<\/p>\n<p>    proxy<em>read<\/em>timeout 120s;<\/p>\n<p>    proxy<em>send<\/em>timeout 120s;<\/p>\n<p>    proxy<em>connect<\/em>timeout 60s;<\/p>\n<p>}<\/code><\/pre>\n<\/p>\n<p><h3 id=\"javascript-heap-out-of-memory\">JavaScript Heap Out of Memory<\/h3>\n<\/p>\n<p><p>Node.js uygulamalar\u0131nda en s\u0131k g\u00f6r\u00fclen hatalardan biridir. Varsay\u0131lan heap bellek s\u0131n\u0131r\u0131 512 MB&#8217;dir. B\u00fcy\u00fck JSON i\u015flemleri veya yo\u011fun hesaplamalar bu s\u0131n\u0131r\u0131 a\u015fabilir. \u00c7\u00f6z\u00fcm\u00fc <code>--max-old-space-size<\/code> parametresini art\u0131rmakt\u0131r:<\/p>\n<\/p>\n<p><pre><code class=\"language-bash\">pm2 start .next\/standalone\/server.js --name \"nextjs-uygulamaniz\" --node-args=\"--max-old-space-size=2048\"<\/code><\/pre>\n<\/p>\n<p><p>Ancak bu sadece ge\u00e7ici bir \u00e7\u00f6z\u00fcmd\u00fcr. As\u0131l sorun, uygulaman\u0131z\u0131n neden bu kadar bellek t\u00fcketti\u011fini anlamakt\u0131r. Kod i\u00e7inde bellek s\u0131z\u0131nt\u0131s\u0131 olabilir.<\/p>\n<\/p>\n<p><h3 id=\"statik-dosyalar-yuklenmiyor\">Statik Dosyalar Y\u00fcklenmiyor<\/h3>\n<\/p>\n<p><p>Sayfa a\u00e7\u0131l\u0131yor ancak CSS ve JavaScript dosyalar\u0131 y\u00fcklenmiyorsa, genellikle <code>_next\/static<\/code> yolu yanl\u0131\u015f yap\u0131land\u0131r\u0131lm\u0131\u015ft\u0131r. Standalone modda, statik dosyalar\u0131n bulundu\u011fu klas\u00f6r\u00fc uygulama dizinine kopyalaman\u0131z gerekir:<\/p>\n<\/p>\n<p><pre><code class=\"language-bash\"># .next\/static klas\u00f6r\u00fcn\u00fc standalone dizinine kopyala<\/p>\n<p>cp -r .next\/static .next\/standalone\/.next\/static<\/p>\n<h1 id=\"public-klasorunu-de-kopyala\">public klas\u00f6r\u00fcn\u00fc de kopyala<\/h1>\n<p>cp -r public .next\/standalone\/public<\/code><\/pre>\n<\/p>\n<p><p>Bu ad\u0131m\u0131 atlarsan\u0131z, sayfalar\u0131n\u0131z stilsiz g\u00f6r\u00fcn\u00fcr ve konsolda 404 hatalar\u0131 al\u0131rs\u0131n\u0131z.<\/p>\n<\/p>\n<p><h3 id=\"port-cakismasi\">Port \u00c7ak\u0131\u015fmas\u0131<\/h3>\n<\/p>\n<p><p>Sunucuda ba\u015fka bir uygulama ayn\u0131 portu kullan\u0131yorsa, Next.js ba\u015flat\u0131lamaz. Port de\u011fi\u015ftirmek i\u00e7in PM2 ekosistem dosyas\u0131nda <code>PORT<\/code> de\u011ferini de\u011fi\u015ftirin ve Nginx yap\u0131land\u0131rman\u0131z\u0131 buna g\u00f6re g\u00fcncelleyin.<\/p>\n<\/p>\n<div style=\"background:#fef2f2;border-left:4px solid #ef4444;padding:15px;margin:20px 0;border-radius:8px;\">\n<p><p><strong>Kritik Uyar\u0131:<\/strong> Hata loglar\u0131n\u0131 okumadan \u00e7\u00f6z\u00fcm aramay\u0131n. <code>\/var\/log\/nginx\/error.log<\/code> ve <code>pm2 logs<\/code> \u00e7\u0131kt\u0131lar\u0131, sorunun k\u00f6k nedenini %90 oran\u0131nda net \u015fekilde g\u00f6sterir.<\/p>\n<\/p>\n<\/div>\n<p><p>Bu hatalar\u0131n \u00e7o\u011funu \u00f6nlemek i\u00e7in <a href=\"https:\/\/saviorhost.com\/blog\/express-js-projelerini-yayinlama-2026-rehberi\/\" target=\"_blank\" rel=\"noopener\">Express.js projelerini yay\u0131nlama rehberimizde<\/a> anlatt\u0131\u011f\u0131m\u0131z sistemli yakla\u015f\u0131m\u0131 benimseyin. Ayr\u0131ca sunucu kaynaklar\u0131n\u0131z\u0131 d\u00fczenli izlemek, olas\u0131 sorunlar\u0131 erkenden fark etmenizi sa\u011flar.<\/p>\n<\/p>\n<p><h3 id=\"performans-optimizasyonu-ipuclari\">Performans Optimizasyonu \u0130pu\u00e7lar\u0131<\/h3>\n<\/p>\n<p><p>Yay\u0131nlama sonras\u0131 performans, kullan\u0131c\u0131 deneyimini do\u011frudan etkiler. \u0130\u015fte birka\u00e7 pratik \u00f6neri:<\/p>\n<\/p>\n<ul>\n<li><strong>Statik dosyalar\u0131 CDN&#8217;e ta\u015f\u0131y\u0131n:<\/strong> <code>_next\/static<\/code> dosyalar\u0131 Cloudflare gibi bir CDN \u00fczerinden sunulabilir.<\/li>\n<li><strong>Gzip\/Brotli s\u0131k\u0131\u015ft\u0131rma:<\/strong> Nginx&#8217;te <code>gzip on;<\/code> sat\u0131r\u0131n\u0131 ekleyerek yan\u0131t boyutlar\u0131n\u0131 k\u00fc\u00e7\u00fclt\u00fcn.<\/li>\n<li><strong>Redis cache:<\/strong> S\u0131k kullan\u0131lan veritaban\u0131 sorgular\u0131n\u0131 Redis ile \u00f6nbellekleyin.<\/li>\n<li><strong>PM2 cluster mode:<\/strong> \u00c7ok \u00e7ekirdekli sunucularda <code>instances: 'max'<\/code> ile uygulamay\u0131 \u00f6l\u00e7eklendirin.<\/li>\n<\/ul>\n<p><p>Peki t\u00fcm bu ad\u0131mlar\u0131 uygulad\u0131ktan sonra ne yapmal\u0131s\u0131n\u0131z? \u0130\u015fte \u015fimdi sonuca ba\u011fl\u0131yoruz.<\/p>\n<\/p>\n<p><h2 id=\"sonuc-eylem-cagrisi\">Sonu\u00e7: Next.js Projeniz Art\u0131k Canl\u0131da<\/h2>\n<\/p>\n<p><p>Bu rehberde <strong>next js projesi yay\u0131nlama<\/strong> s\u00fcrecini ad\u0131m ad\u0131m inceledik. VDS sunucu haz\u0131rl\u0131\u011f\u0131ndan SSL kurulumuna kadar t\u00fcm kritik a\u015famalar\u0131 ele ald\u0131k. Unutmay\u0131n, do\u011fru yap\u0131land\u0131r\u0131lm\u0131\u015f bir sunucu yaln\u0131zca uygulaman\u0131z\u0131 \u00e7al\u0131\u015ft\u0131rmaz; ayn\u0131 zamanda g\u00fcvenli\u011fi, performans\u0131 ve s\u00fcrd\u00fcr\u00fclebilirli\u011fi de garanti eder.<\/p>\n<\/p>\n<p><p>E\u011fer bu ad\u0131mlar\u0131 kendiniz uygulamak istemiyorsan\u0131z veya daha h\u0131zl\u0131 bir \u00e7\u00f6z\u00fcm ar\u0131yorsan\u0131z, <strong>n8n &#038; Node.js Hosting<\/strong> paketlerimiz tam size g\u00f6re. AMD Ryzen 9 i\u015flemciler ve NVMe SSD disklerle donat\u0131lm\u0131\u015f altyap\u0131m\u0131zda Next.js uygulamalar\u0131n\u0131z dakikalar i\u00e7inde yay\u0131na al\u0131nabilir. \u00dcstelik KeyHelp paneli sayesinde t\u00fcm s\u00fcre\u00e7leri g\u00f6rsel aray\u00fczden y\u00f6netebilirsiniz.<\/p>\n<\/p>\n<p><p>Projenizi canl\u0131ya ald\u0131ktan sonra kar\u015f\u0131la\u015ft\u0131\u011f\u0131n\u0131z sorunlar\u0131 yorumlarda payla\u015f\u0131n. Deneyimlerinizi birlikte de\u011ferlendirelim.<\/p>\n<\/p>\n<p><h2 id=\"faq\">S\u0131k\u00e7a Sorulan Sorular<\/h2>\n<\/p>\n<p><h3 id=\"next-js-projesi-paylasimli-hostingde-yayinlanir-mi\">Next.js projesi payla\u015f\u0131ml\u0131 hostingde yay\u0131nlan\u0131r m\u0131?<\/h3>\n<\/p>\n<p><p>\u00c7o\u011fu payla\u015f\u0131ml\u0131 hosting paketi Node.js \u00e7al\u0131\u015ft\u0131rmaz. Statik export kullan\u0131yorsan\u0131z herhangi bir hostinge y\u00fckleyebilirsiniz. Ancak SSR, API route veya middleware kullan\u0131yorsan\u0131z VDS veya Node.js destekli \u00f6zel hosting gerekir. <strong>n8n &#038; Node.js Hosting<\/strong> paketimiz bu ihtiyaca y\u00f6nelik haz\u0131rlanm\u0131\u015ft\u0131r.<\/p>\n<\/p>\n<p><h3 id=\"next-js-uygulamasi-hangi-portta-calisir\">Next.js uygulamas\u0131 hangi portta \u00e7al\u0131\u015f\u0131r?<\/h3>\n<\/p>\n<p><p>Varsay\u0131lan olarak 3000 portunda \u00e7al\u0131\u015f\u0131r. Ancak bu portu PM2 ekosistem dosyas\u0131nda <code>PORT<\/code> de\u011fi\u015fkeniyle de\u011fi\u015ftirebilirsiniz. Nginx yap\u0131land\u0131rman\u0131zdaki <code>proxy_pass<\/code> adresini de ayn\u0131 portla g\u00fcncellemeniz gerekir.<\/p>\n<\/p>\n<p><h3 id=\"next-js-build-sonrasi-next-klasoru-sunucuya-yuklenmeli-mi\">Next.js build sonras\u0131 .next klas\u00f6r\u00fc sunucuya y\u00fcklenmeli mi?<\/h3>\n<\/p>\n<p><p>Evet, build i\u015flemi sonucu olu\u015fan <code>.next<\/code> klas\u00f6r\u00fc \u00fcretim i\u00e7in gereklidir. Standalone mod kullan\u0131yorsan\u0131z yaln\u0131zca <code>.next\/standalone<\/code> klas\u00f6r\u00fcn\u00fc y\u00fcklemeniz yeterlidir. Ayr\u0131ca statik dosyalar i\u00e7in <code>.next\/static<\/code> ve <code>public<\/code> klas\u00f6rlerini de kopyalaman\u0131z gerekir.<\/p>\n<\/p>\n<p><h3 id=\"pm2-olmadan-next-js-uygulamasi-calisir-mi\">PM2 olmadan Next.js uygulamas\u0131 \u00e7al\u0131\u015f\u0131r m\u0131?<\/h3>\n<\/p>\n<p><p>\u00c7al\u0131\u015f\u0131r ancak SSH oturumunu kapatt\u0131\u011f\u0131n\u0131zda uygulama kapan\u0131r. Ayr\u0131ca sunucu yeniden ba\u015flad\u0131\u011f\u0131nda otomatik ba\u015flamaz. PM2, bu sorunlar\u0131 \u00e7\u00f6zen en pop\u00fcler ara\u00e7t\u0131r. Alternatif olarak systemd servisi de kullanabilirsiniz.<\/p>\n<\/p>\n<p><h3 id=\"next-js-projesi-icin-ne-kadar-ram-gerekir\">Next.js projesi i\u00e7in ne kadar RAM gerekir?<\/h3>\n<\/p>\n<p><p>Minimum 2 GB RAM \u00f6neriyoruz. SSR yo\u011fun uygulamalar i\u00e7in 4 GB veya \u00fczeri daha sa\u011fl\u0131kl\u0131d\u0131r. Node.js heap belle\u011fini <code>--max-old-space-size<\/code> parametresiyle s\u0131n\u0131rlayarak kaynak kullan\u0131m\u0131n\u0131 kontrol edebilirsiniz.<\/p>\n<\/p>\n<p><h3 id=\"ssl-sertifikasini-nasil-yenilerim\">SSL sertifikas\u0131n\u0131 nas\u0131l yenilerim?<\/h3>\n<\/p>\n<p><p>Certbot, sertifikalar\u0131 otomatik olarak yeniler. <code>sudo certbot renew --dry-run<\/code> komutuyla yenileme s\u00fcrecini test edebilirsiniz. \u00c7o\u011fu sistemde bu i\u015flem cron job ile g\u00fcnl\u00fck olarak \u00e7al\u0131\u015f\u0131r.<\/p>\n<\/p>\n<p><h3 id=\"next-js-uygulamasi-neden-502-hatasi-veriyor\">Next.js uygulamas\u0131 neden 502 hatas\u0131 veriyor?<\/h3>\n<\/p>\n<p><p>502 hatas\u0131, Nginx&#8217;in uygulamaya ba\u011flanamad\u0131\u011f\u0131 anlam\u0131na gelir. \u00d6nce <code>pm2 status<\/code> ile uygulaman\u0131n \u00e7al\u0131\u015f\u0131p \u00e7al\u0131\u015fmad\u0131\u011f\u0131n\u0131 kontrol edin. Ard\u0131ndan Nginx yap\u0131land\u0131rmas\u0131ndaki port numaras\u0131n\u0131n do\u011fru oldu\u011fundan emin olun. Loglar sorunun kayna\u011f\u0131n\u0131 g\u00f6sterecektir.<\/p<\/p>\n<div class=\"sm-related-posts\" style=\"background:#f8fafc; border:1px solid #e2e8f0; padding:20px; border-radius:8px; margin-top:30px; clear:both;\">\n<h3 style=\"margin-top:0; color:#1e293b; font-size:1.25em;\" id=\"%f0%9f%94%97-ilgili-icerikler\">\ud83d\udd17 \u0130lgili \u0130\u00e7erikler<\/h3>\n<ul style=\"margin-bottom:0; padding-left:20px;\">\n<li><a href=\"https:\/\/saviorhost.com\/blog\/nvme-ssd-vs-sata-ssd-web-sitesi-hizi-karsilastirma\/\">NVMe SSD ile SATA SSD Aras\u0131ndaki Farklar: Web Siteniz \u0130\u00e7in Hangisi Daha H\u0131zl\u0131?<\/a><\/li>\n<li><a href=\"https:\/\/saviorhost.com\/blog\/core-web-vitals-nedir-google-hiz-metrikleri-rehberi\/\">Core Web Vitals Nedir? Google H\u0131z Metrikleri Nas\u0131l \u0130yile\u015ftirilir?<\/a><\/li>\n<li><a href=\"https:\/\/saviorhost.com\/blog\/nvme-ssd-nedir-performans-rehberi\/\">NVMe SSD Nedir? Web Sitenizin Performans\u0131n\u0131 Neden U\u00e7urur?<\/a><\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Ge\u00e7en hafta bir m\u00fc\u015fterimizin next js projesi yay\u0131nlama s\u00fcrecinde ya\u015fad\u0131\u011f\u0131 bir sorunu \u00e7\u00f6zd\u00fck. React tabanl\u0131 y\u00f6netim panelini payla\u015f\u0131ml\u0131 hostinge y\u00fcklemeye&#8230;<\/p>\n","protected":false},"author":1,"featured_media":2813,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-2812","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bizden-haberler"],"_links":{"self":[{"href":"https:\/\/saviorhost.com\/blog\/wp-json\/wp\/v2\/posts\/2812","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/saviorhost.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/saviorhost.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/saviorhost.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/saviorhost.com\/blog\/wp-json\/wp\/v2\/comments?post=2812"}],"version-history":[{"count":1,"href":"https:\/\/saviorhost.com\/blog\/wp-json\/wp\/v2\/posts\/2812\/revisions"}],"predecessor-version":[{"id":2818,"href":"https:\/\/saviorhost.com\/blog\/wp-json\/wp\/v2\/posts\/2812\/revisions\/2818"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/saviorhost.com\/blog\/wp-json\/wp\/v2\/media\/2813"}],"wp:attachment":[{"href":"https:\/\/saviorhost.com\/blog\/wp-json\/wp\/v2\/media?parent=2812"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/saviorhost.com\/blog\/wp-json\/wp\/v2\/categories?post=2812"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/saviorhost.com\/blog\/wp-json\/wp\/v2\/tags?post=2812"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}