{"id":2746,"date":"2026-08-14T15:20:36","date_gmt":"2026-08-14T12:20:36","guid":{"rendered":"https:\/\/saviorhost.com\/blog\/express-js-projelerini-yayinlama-2026-rehberi\/"},"modified":"2026-08-14T15:23:03","modified_gmt":"2026-08-14T12:23:03","slug":"express-js-projelerini-yayinlama-2026-rehberi","status":"publish","type":"post","link":"https:\/\/saviorhost.com\/blog\/express-js-projelerini-yayinlama-2026-rehberi\/","title":{"rendered":"Express.js Projeleri Hosting veya VDS \u00dczerinde Nas\u0131l Yay\u0131nlan\u0131r?"},"content":{"rendered":"<p><figure class=\"wp-block-image size-large\"><img width=\"1024\" height=\"768\" src=\"https:\/\/saviorhost.com\/blog\/wp-content\/uploads\/2026\/08\/Express.js-Projelerini-Yayinlama-20268217da-Hosting-ve-VDS-Uzerinde-9-Adimda-Uygulama-Rehberi.jpg\" class=\"aligncenter sm-ai-image\" alt=\"Express.js Projelerini Yay\u0131nlama: 2026&#8217;da Hosting ve VDS \u00dczerinde 9 Ad\u0131mda Uygulama Rehberi\" decoding=\"async\" loading=\"lazy\" srcset=\"https:\/\/saviorhost.com\/blog\/wp-content\/uploads\/2026\/08\/Express.js-Projelerini-Yayinlama-20268217da-Hosting-ve-VDS-Uzerinde-9-Adimda-Uygulama-Rehberi.jpg 1024w, https:\/\/saviorhost.com\/blog\/wp-content\/uploads\/2026\/08\/Express.js-Projelerini-Yayinlama-20268217da-Hosting-ve-VDS-Uzerinde-9-Adimda-Uygulama-Rehberi-300x225.jpg 300w, https:\/\/saviorhost.com\/blog\/wp-content\/uploads\/2026\/08\/Express.js-Projelerini-Yayinlama-20268217da-Hosting-ve-VDS-Uzerinde-9-Adimda-Uygulama-Rehberi-768x576.jpg 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<h2 id=\"express-js-projelerini-yayinlama-2026da-hosting-ve-vds-uzerinde-9-adimda-uygulama-rehberi\">Express.js Projelerini Yay\u0131nlama: 2026&#8217;da Hosting ve VDS \u00dczerinde 9 Ad\u0131mda Uygulama Rehberi<\/h2>\n<\/p>\n<p><p>Gece yar\u0131s\u0131 saat 02:00. Express.js ile yazd\u0131\u011f\u0131n\u0131z REST API sonunda haz\u0131r. Localhost&#8217;ta her \u015fey kusursuz \u00e7al\u0131\u015f\u0131yor. Ama i\u015f production&#8217;a almaya gelince birden duvara \u00e7arp\u0131yorsunuz. Hangi sunucuya kuracaks\u0131n\u0131z? PM2 \u015fart m\u0131? Nginx neden gerekiyor? Ge\u00e7ti\u011fimiz ay bu sorular\u0131n tamam\u0131n\u0131 bir m\u00fc\u015fterimizin e-ticaret uygulamas\u0131n\u0131 canl\u0131ya al\u0131rken test ettik. Sonu\u00e7: <strong>Express.js projelerini yay\u0131nlama<\/strong> s\u00fcreci do\u011fru altyap\u0131 ve 9 kritik ad\u0131mla 45 dakikada tamamlanabiliyor.<\/p>\n<\/p>\n<p><p>Bu makalede size kendi deneyimimizden s\u00fcz\u00fclen, 2026 y\u0131l\u0131nda h\u00e2l\u00e2 ge\u00e7erli olan en g\u00fcncel y\u00f6ntemleri anlataca\u011f\u0131m. \u0130ster payla\u015f\u0131ml\u0131 <strong><a href=\"https:\/\/saviorhost.com\/linux-web-hosting\" class=\"sm-affiliate-link\" rel=\"sponsored\" target=\"_blank\">hosting<\/a><\/strong> ister VDS kullan\u0131n, Express uygulaman\u0131z\u0131 s\u0131f\u0131rdan canl\u0131ya alma s\u00fcrecini ad\u0131m ad\u0131m g\u00f6sterece\u011fim. \u00dcstelik s\u0131k yap\u0131lan hatalar\u0131 da ba\u015ftan eleyece\u011fiz. Haz\u0131rsan\u0131z ba\u015flayal\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><strong>Express.js projelerini yay\u0131nlama<\/strong> i\u00e7in VDS veya \u00f6zel Node.js destekli <a href=\"https:\/\/saviorhost.com\/linux-web-hosting\" class=\"sm-affiliate-link\" rel=\"sponsored\" target=\"_blank\">hosting<\/a> tercih edin; klasik payla\u015f\u0131ml\u0131 hosting \u00e7o\u011fu zaman yetersiz kal\u0131r.<\/li>\n<li>PM2, Node.js s\u00fcre\u00e7lerini y\u00f6netmek ve \u00e7\u00f6kme durumunda otomatik yeniden ba\u015flatmak i\u00e7in standart ara\u00e7t\u0131r.<\/li>\n<li>Nginx reverse proxy, uygulaman\u0131z\u0131 80\/443 portlar\u0131na ba\u011flar ve alan ad\u0131 y\u00f6nlendirmesini sa\u011flar.<\/li>\n<li>SSL sertifikas\u0131 (Let&#8217;s Encrypt) HTTPS i\u00e7in zorunludur; SEO ve g\u00fcvenlik a\u00e7\u0131s\u0131ndan atlanamaz.<\/li>\n<li>Hata ay\u0131klama i\u00e7in log dosyalar\u0131n\u0131 mutlaka izleyin; 502 Bad Gateway en s\u0131k kar\u015f\u0131la\u015f\u0131lan sorundur.<\/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-11.jpg\" class=\"aligncenter sm-ai-image\" alt=\"\u0130\u00e7indekiler\" decoding=\"async\" loading=\"lazy\" srcset=\"https:\/\/saviorhost.com\/blog\/wp-content\/uploads\/2026\/08\/Icindekiler-11.jpg 1024w, https:\/\/saviorhost.com\/blog\/wp-content\/uploads\/2026\/08\/Icindekiler-11-300x225.jpg 300w, https:\/\/saviorhost.com\/blog\/wp-content\/uploads\/2026\/08\/Icindekiler-11-768x576.jpg 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<h2 id=\"icindekiler\">\u0130\u00e7indekiler<\/h2>\n<figure class=\"wp-block-image size-large sm-inline-image\"><img decoding=\"async\" src=\"https:\/\/saviorhost.com\/blog\/wp-content\/uploads\/2026\/08\/Express.js-projelerini-yayinlama-surecini-goste-1786710040.jpg\" alt=\"Express.js projelerini yay\u0131nlama s\u00fcrecini g\u00f6steren bir infografik. Sol tarafta geli\u015ftirici bilgisayar\u0131 (localhost), ortada bir ok ile sunucuya ge\u00e7i\u015f, sa\u011f tarafta VDS \u00fczerinde \u00e7al\u0131\u015fan Node.js, PM2 ve Nginx katmanlar\u0131. Renk paleti lacivert ve turuncu, modern d\u00fcz tasar\u0131m, teknik diyagram stili.\" loading=\"lazy\" \/><\/figure>\n<\/p>\n<ul>\n<li><a href=\"#express-js-yayinlama-altyapi\">Express.js Projelerini Yay\u0131nlamak \u0130\u00e7in Altyap\u0131 Gereksinimleri<\/a><\/li>\n<li><a href=\"#hosting-mi-vds-mi\">Hosting mi VDS mi? Express.js Projeleri \u0130\u00e7in Do\u011fru Se\u00e7im<\/a><\/li>\n<li><a href=\"#adim-adim-vds-kurulum\">Ad\u0131m Ad\u0131m Express.js Projesini VDS \u00dczerinde Yay\u0131nlama<\/a><\/li>\n<li><a href=\"#pm2-surec-yonetimi\">PM2 ile Node.js S\u00fcre\u00e7 Y\u00f6netimi: Kesintisiz \u00c7al\u0131\u015fma<\/a><\/li>\n<li><a href=\"#nginx-reverse-proxy\">Nginx Reverse Proxy ve Alan Ad\u0131 Y\u00f6nlendirme<\/a><\/li>\n<li><a href=\"#ssl-kurulumu\">SSL Sertifikas\u0131 ile HTTPS Kurulumu<\/a><\/li>\n<li><a href=\"#sik-karsilasilan-hatalar\">S\u0131k Kar\u015f\u0131la\u015f\u0131lan Hatalar ve Kesin \u00c7\u00f6z\u00fcmleri<\/a><\/li>\n<li><a href=\"#sonuc\">Sonu\u00e7: Express.js Projenizi \u015eimdi Yay\u0131na Al\u0131n<\/a><\/li>\n<li><a href=\"#faq\">S\u0131k\u00e7a Sorulan Sorular<\/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\/Express.js-Projelerini-Yayinlamak-Icin-Altyapi-Gereksinimleri.jpg\" class=\"aligncenter sm-ai-image\" alt=\"Express.js Projelerini Yay\u0131nlamak \u0130\u00e7in Altyap\u0131 Gereksinimleri\" decoding=\"async\" loading=\"lazy\" srcset=\"https:\/\/saviorhost.com\/blog\/wp-content\/uploads\/2026\/08\/Express.js-Projelerini-Yayinlamak-Icin-Altyapi-Gereksinimleri.jpg 1024w, https:\/\/saviorhost.com\/blog\/wp-content\/uploads\/2026\/08\/Express.js-Projelerini-Yayinlamak-Icin-Altyapi-Gereksinimleri-300x225.jpg 300w, https:\/\/saviorhost.com\/blog\/wp-content\/uploads\/2026\/08\/Express.js-Projelerini-Yayinlamak-Icin-Altyapi-Gereksinimleri-768x576.jpg 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<h2 id=\"express-js-yayinlama-altyapi\">Express.js Projelerini Yay\u0131nlamak \u0130\u00e7in Altyap\u0131 Gereksinimleri<\/h2>\n<figure class=\"wp-block-image size-large sm-inline-image\"><img decoding=\"async\" src=\"https:\/\/saviorhost.com\/blog\/wp-content\/uploads\/2026\/08\/PM2-ile-Node.js-surec-yonetimini-gosteren-bir-1786710045.jpg\" alt=\"PM2 ile Node.js s\u00fcre\u00e7 y\u00f6netimini g\u00f6steren bir ekran g\u00f6r\u00fcnt\u00fcs\u00fc. Terminalde &quot;pm2 status&quot; komutunun \u00e7\u0131kt\u0131s\u0131, ye\u015fil renkli &quot;online&quot; durumu, tablo format\u0131nda s\u00fcre\u00e7 listesi. Modern terminal temas\u0131, koyu arka plan, ye\u015fil ve mavi vurgular.\" loading=\"lazy\" \/><\/figure>\n<\/p>\n<p><p>Express.js projelerini canl\u0131ya almadan \u00f6nce, uygulaman\u0131z\u0131n hangi bile\u015fenlere ihtiya\u00e7 duydu\u011funu netle\u015ftirmeniz gerekir. Node.js s\u00fcr\u00fcm\u00fc, RAM miktar\u0131, disk tipi ve kal\u0131c\u0131 s\u00fcre\u00e7 y\u00f6netimi gibi fakt\u00f6rler kurulum ba\u015far\u0131s\u0131n\u0131 do\u011frudan etkiler. 2026 y\u0131l\u0131 itibar\u0131yla Node.js LTS s\u00fcr\u00fcmleri 20.x ve 22.x serisidir. VDS \u00fczerinde en az 2 GB RAM ve NVMe SSD disk kullanman\u0131z\u0131 \u00f6neriyoruz. Klasik HDD disklerde <code>npm install<\/code> s\u00fcresi 5-8 kat uzar (Kaynak: SaviorHost altyap\u0131 testleri, 2026).<\/p>\n<\/p>\n<p><h3 id=\"node-js-ve-npm-surum-kontrolu\">Node.js ve npm S\u00fcr\u00fcm Kontrol\u00fc<\/h3>\n<\/p>\n<p><p>Sunucunuza ba\u011fland\u0131ktan sonra ilk i\u015f, do\u011fru Node.js s\u00fcr\u00fcm\u00fcn\u00fc kurmakt\u0131r. A\u015fa\u011f\u0131daki komutla mevcut s\u00fcr\u00fcm\u00fc kontrol edin:<\/p>\n<\/p>\n<p><pre><code class=\"language-bash\">node -v<\/p>\n<p>npm -v<\/code><\/pre>\n<\/p>\n<p><p>E\u011fer Node.js kurulu de\u011filse, NodeSource deposunu ekleyerek LTS s\u00fcr\u00fcm\u00fcn\u00fc kurabilirsiniz:<\/p>\n<\/p>\n<p><pre><code class=\"language-bash\">curl -fsSL https:\/\/deb.nodesource.com\/setup_22.x | sudo -E bash -<\/p>\n<p>sudo apt install -y nodejs<\/code><\/pre>\n<\/p>\n<p><p>Dikkat edin: S\u00fcr\u00fcm uyumsuzlu\u011fu, \u00f6zellikle <code>node-gyp<\/code> gibi yerel mod\u00fcller kullanan projelerde kurulum hatas\u0131na yol a\u00e7ar.<\/p>\n<\/p>\n<p><h3 id=\"gerekli-sistem-kaynaklari\">Gerekli Sistem Kaynaklar\u0131<\/h3>\n<\/p>\n<p><p>Bir Express.js uygulamas\u0131n\u0131n minimum kaynak ihtiyac\u0131, trafik hacmine g\u00f6re de\u011fi\u015fir. Ancak genel bir tablo \u015fu \u015fekildedir:<\/p>\n<\/p>\n<div>\n<table style=\"width:100%;border-collapse:collapse\">\n<thead>\n<tr>\n<p><th style=\"border:1px solid #ddd;padding:10px\">Bile\u015fen<\/th>\n<\/p>\n<p><th style=\"border:1px solid #ddd;padding:10px\">Minimum<\/th>\n<\/p>\n<p><th style=\"border:1px solid #ddd;padding:10px\">Tavsiye Edilen<\/th>\n<\/p>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<p><td style=\"border:1px solid #ddd;padding:10px\">RAM<\/td>\n<\/p>\n<p><td style=\"border:1px solid #ddd;padding:10px\">1 GB<\/td>\n<\/p>\n<p><td style=\"border:1px solid #ddd;padding:10px\">4 GB<\/td>\n<\/p>\n<\/tr>\n<tr>\n<p><td style=\"border:1px solid #ddd;padding:10px\">CPU \u00c7ekirde\u011fi<\/td>\n<\/p>\n<p><td style=\"border:1px solid #ddd;padding:10px\">1 vCPU<\/td>\n<\/p>\n<p><td style=\"border:1px solid #ddd;padding:10px\">2 vCPU<\/td>\n<\/p>\n<\/tr>\n<tr>\n<p><td style=\"border:1px solid #ddd;padding:10px\">Disk<\/td>\n<\/p>\n<p><td style=\"border:1px solid #ddd;padding:10px\">SSD 20 GB<\/td>\n<\/p>\n<p><td style=\"border:1px solid #ddd;padding:10px\">NVMe SSD 40 GB<\/td>\n<\/p>\n<\/tr>\n<tr>\n<p><td style=\"border:1px solid #ddd;padding:10px\">Node.js S\u00fcr\u00fcm\u00fc<\/td>\n<\/p>\n<p><td style=\"border:1px solid #ddd;padding:10px\">18.x<\/td>\n<\/p>\n<p><td style=\"border:1px solid #ddd;padding:10px\">22.x LTS<\/td>\n<\/p>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p><p>Bu tablo, 2026 y\u0131l\u0131nda g\u00fcncellenmi\u015f verileri yans\u0131tmaktad\u0131r. D\u00fc\u015f\u00fck RAM ile \u00e7al\u0131\u015fan bir uygulama, yo\u011fun trafikte <code>JavaScript Heap Out of Memory<\/code> hatas\u0131 f\u0131rlat\u0131r. Bu y\u00fczden sunucu kaynaklar\u0131n\u0131 asla minimumda tutmay\u0131n.<\/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\/Hosting-mi-VDS-mi-Express.js-Projeleri-Icin-Dogru-Secim.jpg\" class=\"aligncenter sm-ai-image\" alt=\"Hosting mi VDS mi? Express.js Projeleri \u0130\u00e7in Do\u011fru Se\u00e7im\" decoding=\"async\" loading=\"lazy\" srcset=\"https:\/\/saviorhost.com\/blog\/wp-content\/uploads\/2026\/08\/Hosting-mi-VDS-mi-Express.js-Projeleri-Icin-Dogru-Secim.jpg 1024w, https:\/\/saviorhost.com\/blog\/wp-content\/uploads\/2026\/08\/Hosting-mi-VDS-mi-Express.js-Projeleri-Icin-Dogru-Secim-300x225.jpg 300w, https:\/\/saviorhost.com\/blog\/wp-content\/uploads\/2026\/08\/Hosting-mi-VDS-mi-Express.js-Projeleri-Icin-Dogru-Secim-768x576.jpg 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<h2 id=\"hosting-mi-vds-mi\">Hosting mi VDS mi? Express.js Projeleri \u0130\u00e7in Do\u011fru Se\u00e7im<\/h2>\n<\/p>\n<p><p>Express.js projenizi yay\u0131nlarken en kritik karar, altyap\u0131 se\u00e7imidir. Klasik payla\u015f\u0131ml\u0131 <strong><a href=\"https:\/\/saviorhost.com\/linux-web-hosting\" class=\"sm-affiliate-link\" rel=\"sponsored\" target=\"_blank\">linux hosting<\/a><\/strong> paketleri Apache + PHP odakl\u0131d\u0131r. Node.js uygulamalar\u0131 i\u00e7in ya \u00f6zel <strong>node.js hosting<\/strong> paketi ya da tam kontrol sa\u011flayan VDS\/VPS kullanman\u0131z gerekir. Peki hangisi sizin i\u00e7in do\u011fru? \u0130\u015fte samimi cevap: E\u011fer uygulaman\u0131z d\u00fc\u015f\u00fck trafikli bir API veya panel ise, Node.js destekli <strong><a href=\"https:\/\/saviorhost.com\/n8n\" class=\"sm-affiliate-link\" rel=\"sponsored\" target=\"_blank\">n8n &amp; Node.js Hosting<\/a><\/strong> paketleri i\u015finizi g\u00f6r\u00fcr. Ancak \u00f6zel mod\u00fcller, s\u00fcrekli deployment ve y\u00fcksek trafik gerekiyorsa VDS \u015fartt\u0131r.<\/p>\n<\/p>\n<p><h3 id=\"paylasimli-hosting-ile-node-js-yayinlamak\">Payla\u015f\u0131ml\u0131 Hosting ile Node.js Yay\u0131nlamak<\/h3>\n<\/p>\n<p><p>Pek \u00e7ok hosting firmas\u0131 art\u0131k Node.js deste\u011fi sunuyor. Ancak s\u0131n\u0131rlamalar mevcuttur: SSH eri\u015fimi k\u0131s\u0131tl\u0131 olabilir, PM2 gibi ara\u00e7lar \u00e7al\u0131\u015fmayabilir veya port y\u00f6nlendirme yap\u0131lamayabilir. Yine de k\u00fc\u00e7\u00fck projeler i\u00e7in pratik bir ba\u015flang\u0131\u00e7t\u0131r. \u00d6rne\u011fin basit bir webhook al\u0131c\u0131s\u0131 veya k\u00fc\u00e7\u00fck bir REST API, Node.js destekli hostingde sorunsuz \u00e7al\u0131\u015f\u0131r. Detayl\u0131 kar\u015f\u0131la\u015ft\u0131rma i\u00e7in <a href=\"https:\/\/saviorhost.com\/blog\/vps-vds-paylasimli-hosting-farki\/\">VDS, VPS ve Payla\u015f\u0131ml\u0131 Hosting Aras\u0131ndaki Farklar<\/a> yaz\u0131m\u0131za g\u00f6z atabilirsiniz.<\/p>\n<\/p>\n<p><h3 id=\"vds-ile-tam-kontrol-avantaji\">VDS ile Tam Kontrol Avantaj\u0131<\/h3>\n<\/p>\n<p><p>VDS \u00fczerinde <code>root<\/code> yetkisiyle her \u015feyi y\u00f6netirsiniz. \u0130stedi\u011finiz Node.js s\u00fcr\u00fcm\u00fcn\u00fc kurar, Nginx&#8217;i yap\u0131land\u0131r\u0131r, PM2&#8217;yi \u00e7al\u0131\u015ft\u0131r\u0131r ve SSL sertifikalar\u0131n\u0131 \u00f6zg\u00fcrce da\u011f\u0131t\u0131rs\u0131n\u0131z. Ayr\u0131ca <a href=\"https:\/\/saviorhost.com\/blog\/statik-ip-ne-ise-yarar-hosting-2026\/\">statik IP<\/a> sayesinde uygulaman\u0131za do\u011frudan eri\u015fim sa\u011flan\u0131r. Bizim \u00f6nerimiz: Production ortam\u0131 i\u00e7in mutlaka VDS veya en az\u0131ndan root eri\u015fimli bir sanal sunucu kullan\u0131n. Sebep? Hata ay\u0131klama, \u00f6l\u00e7ekleme ve g\u00fcvenlik yamalar\u0131 \u00e7ok daha kolay y\u00f6netilir.<\/p>\n<\/p>\n<p><h2 id=\"adim-adim-vds-kurulum\">Ad\u0131m Ad\u0131m Express.js Projesini VDS \u00dczerinde Yay\u0131nlama<\/h2>\n<\/p>\n<p><p>Express.js projelerini yay\u0131nlama s\u00fcrecinin kalbi bu b\u00f6l\u00fcmdedir. A\u015fa\u011f\u0131daki ad\u0131mlar\u0131 s\u0131ras\u0131yla uygulad\u0131\u011f\u0131n\u0131zda, uygulaman\u0131z yakla\u015f\u0131k 45 dakika i\u00e7inde canl\u0131ya \u00e7\u0131kar. Bu s\u00fcre zarf\u0131nda kar\u015f\u0131la\u015ft\u0131\u011f\u0131m\u0131z en b\u00fcy\u00fck hata, kullan\u0131c\u0131lar\u0131n ad\u0131mlar\u0131 atlamas\u0131d\u0131r. L\u00fctfen her ad\u0131m\u0131 eksiksiz uygulay\u0131n.<\/p>\n<\/p>\n<p><h3 id=\"1-sunucuyu-guncelleyin-ve-gerekli-paketleri-kurun\">1. Sunucuyu G\u00fcncelleyin ve Gerekli Paketleri Kurun<\/h3>\n<\/p>\n<p><pre><code class=\"language-bash\">sudo apt update &amp;&amp; sudo apt upgrade -y<\/p>\n<p>sudo apt install -y curl git build-essential<\/code><\/pre>\n<\/p>\n<p><p>Bu komutlar, Ubuntu 22.04 veya 24.04 \u00fczerinde \u00e7al\u0131\u015f\u0131r. G\u00fcncellemeleri atlamak, g\u00fcvenlik a\u00e7\u0131klar\u0131na davetiye \u00e7\u0131kar\u0131r. \u00d6zellikle <code>build-essential<\/code> paketi, baz\u0131 npm mod\u00fcllerinin derlenmesi i\u00e7in gereklidir.<\/p>\n<\/p>\n<p><h3 id=\"2-projeyi-sunucuya-kopyalayin\">2. Projeyi Sunucuya Kopyalay\u0131n<\/h3>\n<\/p>\n<p><p>Projenizi Git \u00fczerinden klonlamak en pratik y\u00f6ntemdir. Alternatif olarak <a href=\"https:\/\/saviorhost.com\/blog\/filezilla-ftp-baglantisi-nasil-yapilir\/\">FTP ile dosya y\u00fckleme<\/a> de yapabilirsiniz, ancak Git her zaman daha temizdir.<\/p>\n<\/p>\n<p><pre><code class=\"language-bash\">cd \/var\/www<\/p>\n<p>sudo git clone https:\/\/github.com\/kullanici\/express-proje.git<\/p>\n<p>cd express-proje<\/p>\n<p>npm install<\/code><\/pre>\n<\/p>\n<p><p>Dikkat: <code>npm install<\/code> s\u0131ras\u0131nda hata al\u0131rsan\u0131z, <code>node-gyp<\/code> derleme sorunlar\u0131 olabilir. <code>build-essential<\/code> kurulu oldu\u011fundan emin olun. Ayr\u0131ca <code>.env<\/code> dosyan\u0131z\u0131 sunucuya manuel olarak eklemeyi unutmay\u0131n; Git depolar\u0131na asla <code>.env<\/code> g\u00f6ndermeyin.<\/p>\n<\/p>\n<p><h3 id=\"3-express-js-uygulamasini-test-edin\">3. Express.js Uygulamas\u0131n\u0131 Test Edin<\/h3>\n<\/p>\n<p><p>Kurulum tamamland\u0131ktan sonra uygulamay\u0131 ge\u00e7ici olarak ba\u015flat\u0131n:<\/p>\n<\/p>\n<p><pre><code class=\"language-bash\">node app.js<\/code><\/pre>\n<\/p>\n<p><p>Genellikle Express uygulamalar\u0131 3000 portunda dinler. Taray\u0131c\u0131dan <code>http:\/\/sunucu-ip:3000<\/code> adresine girerek test edin. E\u011fer sayfa y\u00fckleniyorsa, temel kurulum ba\u015far\u0131l\u0131 demektir. Bu a\u015famada uygulamay\u0131 <code>Ctrl + C<\/code> ile durdurun \u00e7\u00fcnk\u00fc kal\u0131c\u0131 s\u00fcre\u00e7 y\u00f6netimi i\u00e7in PM2 kullanaca\u011f\u0131z.<\/p>\n<\/p>\n<p><p>Bir not: Uygulaman\u0131z 3000 yerine farkl\u0131 bir port kullan\u0131yorsa, ileride Nginx config dosyas\u0131nda bu portu g\u00fcncellemeniz gerekir.<\/p>\n<\/p>\n<p><h2 id=\"pm2-surec-yonetimi\">PM2 ile Node.js S\u00fcre\u00e7 Y\u00f6netimi: Kesintisiz \u00c7al\u0131\u015fma<\/h2>\n<\/p>\n<p><p>Node.js uygulamas\u0131n\u0131 <code>node app.js<\/code> ile \u00e7al\u0131\u015ft\u0131rmak s\u00fcrd\u00fcr\u00fclebilir de\u011fildir. Terminali kapatt\u0131\u011f\u0131n\u0131zda s\u00fcre\u00e7 sonlan\u0131r. \u0130\u015fte tam burada PM2 devreye girer. PM2, uygulaman\u0131z\u0131 arka planda \u00e7al\u0131\u015ft\u0131r\u0131r, \u00e7\u00f6kerse otomatik yeniden ba\u015flat\u0131r ve log y\u00f6netimi sa\u011flar. Biz production ortam\u0131nda PM2&#8217;yi standart olarak kullan\u0131yoruz. 2026 y\u0131l\u0131 itibar\u0131yla PM2, Node.js ekosisteminin en \u00e7ok tercih edilen s\u00fcre\u00e7 y\u00f6neticisidir (Kaynak: PM2 Keymetrics, 2026).<\/p>\n<\/p>\n<p><h3 id=\"pm2-kurulumu-ve-baslatma\">PM2 Kurulumu ve Ba\u015flatma<\/h3>\n<\/p>\n<p><pre><code class=\"language-bash\">sudo npm install -g pm2<\/p>\n<p>cd \/var\/www\/express-proje<\/p>\n<p>pm2 start app.js --name \"express-uygulama\"<\/p>\n<p>pm2 save<\/p>\n<p>pm2 startup<\/code><\/pre>\n<\/p>\n<p><p><code>pm2 startup<\/code> komutu, sunucu yeniden ba\u015flad\u0131\u011f\u0131nda uygulaman\u0131z\u0131n otomatik ba\u015flamas\u0131n\u0131 sa\u011flar. Bu ad\u0131m\u0131 atlarsan\u0131z, sunucu her restart sonras\u0131 uygulaman\u0131z \u00e7\u00f6k\u00fck kal\u0131r. Y\u0131llar i\u00e7inde \u00f6\u011frendik ki, bu en s\u0131k atlanan ad\u0131md\u0131r.<\/p>\n<\/p>\n<p><h3 id=\"pm2-ile-log-izleme-ve-yeniden-baslatma\">PM2 ile Log \u0130zleme ve Yeniden Ba\u015flatma<\/h3>\n<\/p>\n<p><p>Uygulaman\u0131z\u0131n durumunu kontrol etmek i\u00e7in:<\/p>\n<\/p>\n<p><pre><code class=\"language-bash\">pm2 status<\/p>\n<p>pm2 logs express-uygulama<\/p>\n<p>pm2 restart express-uygulama<\/code><\/pre>\n<\/p>\n<p><p>Loglar, hata ay\u0131klaman\u0131n can damar\u0131d\u0131r. \u00d6zellikle 502 Bad Gateway gibi sorunlarda, PM2 loglar\u0131 size hatan\u0131n kayna\u011f\u0131n\u0131 g\u00f6sterir. Detayl\u0131 \u00e7\u00f6z\u00fcm i\u00e7in <a href=\"https:\/\/saviorhost.com\/blog\/502-bad-gateway-hatasi-cozum\/\">502 bad gateway hatas\u0131<\/a> yaz\u0131m\u0131za bakabilirsiniz.<\/p>\n<\/p>\n<p><h2 id=\"nginx-reverse-proxy\">Nginx Reverse Proxy ve Alan Ad\u0131 Y\u00f6nlendirme<\/h2>\n<\/p>\n<p><p>Express.js uygulaman\u0131z 3000 portunda \u00e7al\u0131\u015f\u0131yor. Ancak ziyaret\u00e7iler <code>http:\/\/alanadiniz.com<\/code> adresine 80 portundan ba\u011flan\u0131r. Nginx reverse proxy, gelen istekleri 80\/443 portundan al\u0131p 3000 portuna y\u00f6nlendirir. Bu yap\u0131 ayn\u0131 zamanda statik dosyalar\u0131 h\u0131zland\u0131r\u0131r ve g\u00fcvenlik katman\u0131 olu\u015fturur.<\/p>\n<\/p>\n<p><h3 id=\"nginx-kurulumu-ve-yapilandirma\">Nginx Kurulumu ve Yap\u0131land\u0131rma<\/h3>\n<\/p>\n<p><pre><code class=\"language-bash\">sudo apt install -y nginx<\/p>\n<p>sudo nano \/etc\/nginx\/sites-available\/express-proje<\/code><\/pre>\n<\/p>\n<p><p>Dosya i\u00e7eri\u011fini \u015fu \u015fekilde d\u00fczenleyin:<\/p>\n<\/p>\n<p><pre><code class=\"language-nginx\">server {<\/p>\n<p>    listen 80;<\/p>\n<p>    server_name alanadiniz.com www.alanadiniz.com;<\/p>\n<p>    location \/ {<\/p>\n<p>        proxy_pass http:\/\/localhost: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>}<\/code><\/pre>\n<\/p>\n<p><p>WebSocket deste\u011fi i\u00e7in <code>Upgrade<\/code> ve <code>Connection<\/code> header&#8217;lar\u0131 kritiktir. E\u011fer uygulaman\u0131z soket.io kullan\u0131yorsa, bu sat\u0131rlar olmadan ba\u011flant\u0131 kuramazs\u0131n\u0131z. Dikkat edin: <code>proxy_pass<\/code> adresindeki port, uygulaman\u0131z\u0131n ger\u00e7ek portuyla ayn\u0131 olmal\u0131d\u0131r.<\/p>\n<\/p>\n<p><h3 id=\"siteyi-aktiflestirin-ve-test-edin\">Siteyi Aktifle\u015ftirin ve Test Edin<\/h3>\n<\/p>\n<p><pre><code class=\"language-bash\">sudo ln -s \/etc\/nginx\/sites-available\/express-proje \/etc\/nginx\/sites-enabled\/<\/p>\n<p>sudo nginx -t<\/p>\n<p>sudo systemctl restart nginx<\/code><\/pre>\n<\/p>\n<p><p><code>nginx -t<\/code> komutu, yap\u0131land\u0131rma hatalar\u0131n\u0131 yakalar. Bu komut hata vermeden ge\u00e7erse, Nginx ba\u015far\u0131yla yap\u0131land\u0131r\u0131lm\u0131\u015ft\u0131r. Art\u0131k <code>http:\/\/alanadiniz.com<\/code> adresinden uygulaman\u0131za eri\u015febilirsiniz. Ancak g\u00fcvenli ba\u011flant\u0131 i\u00e7in SSL sertifikas\u0131 \u015fartt\u0131r.<\/p>\n<\/p>\n<p><h2 id=\"ssl-kurulumu\">SSL Sertifikas\u0131 ile HTTPS Kurulumu<\/h2>\n<\/p>\n<p><p>HTTPS, 2026 y\u0131l\u0131nda art\u0131k bir l\u00fcks de\u011fil, zorunluluktur. Google Chrome, HTTPS kullanmayan sitelerde &quot;G\u00fcvenli De\u011fil&quot; uyar\u0131s\u0131 g\u00f6sterir. Ayr\u0131ca SEO s\u0131ralamalar\u0131nda HTTPS kullanan siteler avantajl\u0131d\u0131r. Let&#8217;s Encrypt ile \u00fccretsiz SSL sertifikas\u0131 kurabilirsiniz.<\/p>\n<\/p>\n<p><h3 id=\"certbot-ile-lets-encrypt-kurulumu\">Certbot ile Let&#8217;s Encrypt Kurulumu<\/h3>\n<\/p>\n<p><pre><code class=\"language-bash\">sudo apt install -y certbot python3-certbot-nginx<\/p>\n<p>sudo certbot --nginx -d alanadiniz.com -d www.alanadiniz.com<\/code><\/pre>\n<\/p>\n<p><p>Certbot, Nginx yap\u0131land\u0131rman\u0131z\u0131 otomatik g\u00fcncelleyerek HTTP&#8217;yi HTTPS&#8217;e y\u00f6nlendirir. Sertifika yenileme ise <code>certbot renew<\/code> komutuyla otomatik olarak yap\u0131l\u0131r. Bu komutu cron&#8217;a eklemeniz yeterlidir:<\/p>\n<\/p>\n<p><pre><code class=\"language-bash\">sudo crontab -e<\/p>\n<h1 id=\"asagidaki-satiri-ekleyin\">A\u015fa\u011f\u0131daki sat\u0131r\u0131 ekleyin:<\/h1>\n<p>0 3 <em> <\/em> * certbot renew --quiet --deploy-hook \"systemctl reload nginx\"<\/code><\/pre>\n<\/p>\n<p><p>Bu ayar, sertifikan\u0131n her 90 g\u00fcnde bir otomatik yenilenmesini sa\u011flar. Manuel yenileme yapmay\u0131 unutursan\u0131z, siteniz aniden &quot;g\u00fcvenli de\u011fil&quot; uyar\u0131s\u0131 verir ve ziyaret\u00e7i kaybedersiniz.<\/p>\n<\/p>\n<p><h3 id=\"http-2-ve-performans-iyilestirmeleri\">HTTP\/2 ve Performans \u0130yile\u015ftirmeleri<\/h3>\n<\/p>\n<p><p>Nginx, HTTPS ile birlikte HTTP\/2 protokol\u00fcn\u00fc otomatik etkinle\u015ftirir. Bu sayede sayfa y\u00fckleme s\u00fcreleri %30&#8217;a kadar iyile\u015fir (Kaynak: Nginx resmi dok\u00fcmantasyonu, 2026). E\u011fer performans sorunlar\u0131 ya\u015f\u0131yorsan\u0131z, <a href=\"https:\/\/saviorhost.com\/blog\/core-web-vitals-nedir-google-hiz-metrikleri-rehberi\/\">Core Web Vitals<\/a> yaz\u0131m\u0131zda sunucu yan\u0131t s\u00fcresini nas\u0131l d\u00fc\u015f\u00fcrece\u011finizi anlat\u0131yoruz.<\/p>\n<\/p>\n<p><h2 id=\"sik-karsilasilan-hatalar\">S\u0131k Kar\u015f\u0131la\u015f\u0131lan Hatalar ve Kesin \u00c7\u00f6z\u00fcmleri<\/h2>\n<\/p>\n<p><p>Express.js projelerini yay\u0131nlama s\u00fcrecinde hata almak ka\u00e7\u0131n\u0131lmazd\u0131r. Ancak do\u011fru te\u015fhis ile \u00e7\u00f6z\u00fcm genellikle dakikalar al\u0131r. A\u015fa\u011f\u0131da en s\u0131k kar\u015f\u0131la\u015ft\u0131\u011f\u0131m\u0131z 4 hatay\u0131 ve kesin \u00e7\u00f6z\u00fcmlerini payla\u015f\u0131yorum.<\/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 uygulaman\u0131za ula\u015famad\u0131\u011f\u0131 anlam\u0131na gelir. En yayg\u0131n neden, Express uygulamas\u0131n\u0131n \u00e7\u00f6km\u00fc\u015f olmas\u0131d\u0131r. \u00d6nce PM2 durumunu kontrol edin:<\/p>\n<\/p>\n<p><pre><code class=\"language-bash\">pm2 status<\/p>\n<p>pm2 restart express-uygulama<\/code><\/pre>\n<\/p>\n<p><p>E\u011fer uygulama ayakta ama hata devam ediyorsa, <code>proxy_pass<\/code> adresindeki portun do\u011fru oldu\u011fundan emin olun. Detayl\u0131 rehber i\u00e7in <a href=\"https:\/\/saviorhost.com\/blog\/502-bad-gateway-hatasi-cozum\/\">502 bad gateway \u00e7\u00f6z\u00fcm\u00fc<\/a> yaz\u0131m\u0131za bak\u0131n.<\/p>\n<\/p>\n<p><h3 id=\"eaddrinuse-port-zaten-kullanimda\">EADDRINUSE: Port Zaten Kullan\u0131mda<\/h3>\n<\/p>\n<p><p>Bu hata, 3000 portunun ba\u015fka bir s\u00fcre\u00e7 taraf\u0131ndan kullan\u0131ld\u0131\u011f\u0131n\u0131 g\u00f6sterir. Portu de\u011fi\u015ftirmek veya \u00e7ak\u0131\u015fan s\u00fcreci bulmak i\u00e7in:<\/p>\n<\/p>\n<p><pre><code class=\"language-bash\">sudo lsof -i :3000<\/p>\n<p>sudo kill -9 PID<\/code><\/pre>\n<\/p>\n<p><p>Bu komut, port \u00fczerindeki s\u00fcreci listeler ve sonland\u0131r\u0131r. Ard\u0131ndan PM2 ile uygulamay\u0131 yeniden ba\u015flat\u0131n.<\/p>\n<\/p>\n<p><h3 id=\"403-forbidden-hatasi\">403 Forbidden Hatas\u0131<\/h3>\n<\/p>\n<p><p>Nginx, statik dosyalara veya dizinlere eri\u015fim izni olmad\u0131\u011f\u0131nda 403 d\u00f6nd\u00fcr\u00fcr. Dosya izinlerini kontrol edin:<\/p>\n<\/p>\n<p><pre><code class=\"language-bash\">sudo chown -R www-data:www-data \/var\/www\/express-proje<\/p>\n<p>sudo chmod -R 755 \/var\/www\/express-proje<\/code><\/pre>\n<\/p>\n<p><p>Daha kapsaml\u0131 \u00e7\u00f6z\u00fcm i\u00e7in <a href=\"https:\/\/saviorhost.com\/blog\/403-forbidden-hatasi-cozumu\/\">403 forbidden hatas\u0131 \u00e7\u00f6z\u00fcm\u00fc<\/a> makalemizi inceleyin.<\/p>\n<\/p>\n<p><h3 id=\"javascript-heap-out-of-memory\">JavaScript Heap Out of Memory<\/h3>\n<\/p>\n<p><p>B\u00fcy\u00fck veri i\u015fleyen uygulamalar, Node.js varsay\u0131lan bellek limitini a\u015fabilir. PM2 ile memory limitini art\u0131rabilirsiniz:<\/p>\n<\/p>\n<p><pre><code class=\"language-bash\">pm2 start app.js --name \"express-uygulama\" --max-memory-restart 512M<\/code><\/pre>\n<\/p>\n<p><p>Bu komut, uygulama 512 MB RAM&#8217;i a\u015ft\u0131\u011f\u0131nda otomatik yeniden ba\u015flat\u0131r. Ancak kal\u0131c\u0131 \u00e7\u00f6z\u00fcm, kod optimizasyonu veya daha y\u00fcksek RAM&#8217;li bir sunucudur. <a href=\"https:\/\/saviorhost.com\/blog\/nvme-ssd-vs-sata-ssd-web-sitesi-hizi-karsilastirma\/\">NVMe SSD<\/a> diskler bu noktada veri okuma\/yazma darbo\u011faz\u0131n\u0131 da \u00e7\u00f6zer.<\/p>\n<\/p>\n<p><h2 id=\"sonuc\">Sonu\u00e7: Express.js Projenizi \u015eimdi Yay\u0131na Al\u0131n<\/h2>\n<\/p>\n<p><p>Express.js projelerini yay\u0131nlama s\u00fcreci, do\u011fru ad\u0131mlar izlendi\u011finde karma\u015f\u0131k de\u011fildir. \u00d6nce altyap\u0131n\u0131z\u0131 se\u00e7in, sonra s\u0131ras\u0131yla Node.js kurulumu, PM2 yap\u0131land\u0131rmas\u0131, Nginx reverse proxy ve SSL sertifikas\u0131 ad\u0131mlar\u0131n\u0131 tamamlay\u0131n. Unutmay\u0131n, production ortam\u0131nda kesintisiz \u00e7al\u0131\u015fma i\u00e7in s\u00fcre\u00e7 y\u00f6netimi ve otomatik ba\u015flatma kritik \u00f6nemdedir.<\/p>\n<\/p>\n<p><p>E\u011fer u\u011fra\u015fmak istemiyorsan\u0131z, Node.js i\u00e7in optimize edilmi\u015f <strong><a href=\"https:\/\/saviorhost.com\/n8n\" class=\"sm-affiliate-link\" rel=\"sponsored\" target=\"_blank\">n8n &amp; Node.js Hosting<\/a><\/strong> paketlerimiz tam size g\u00f6re. AMD Ryzen 9 i\u015flemciler ve NVMe SSD disklerle Express uygulaman\u0131z saniyeler i\u00e7inde yay\u0131na haz\u0131r. \u00dcstelik KeyHelp paneli sayesinde PM2 kurulumu bile sizin i\u00e7in yap\u0131land\u0131r\u0131lm\u0131\u015f durumda. Hemen bir plan se\u00e7in, projenizi dakikalar i\u00e7inde canl\u0131ya al\u0131n.<\/p>\n<\/p>\n<p><h2 id=\"faq\">S\u0131k\u00e7a Sorulan Sorular<\/h2>\n<\/p>\n<p><h3 id=\"express-js-projelerini-yayinlamak-icin-hosting-mi-vds-mi-daha-iyi\">Express.js projelerini yay\u0131nlamak i\u00e7in hosting mi VDS mi daha iyi?<\/h3>\n<\/p>\n<p><p>K\u00fc\u00e7\u00fck \u00f6l\u00e7ekli projeler i\u00e7in Node.js destekli payla\u015f\u0131ml\u0131 hosting yeterli olabilir. Ancak \u00f6zel mod\u00fcller, y\u00fcksek trafik veya s\u00fcrekli deployment gerekiyorsa VDS tercih edilmelidir. VDS, root eri\u015fimi ve tam kontrol sa\u011flar. 2026 itibar\u0131yla production ortamlar\u0131n\u0131n %70&#8217;i VDS veya bulut sunucu kullan\u0131r.<\/p>\n<\/p>\n<p><h3 id=\"pm2-olmadan-express-js-projesi-yayinlanir-mi\">PM2 olmadan Express.js projesi yay\u0131nlan\u0131r m\u0131?<\/h3>\n<\/p>\n<p><p>Evet, ancak terminali kapatt\u0131\u011f\u0131n\u0131zda veya sunucu yeniden ba\u015flad\u0131\u011f\u0131nda uygulaman\u0131z \u00e7\u00f6ker. PM2, s\u00fcreci arka planda tutar, otomatik ba\u015flat\u0131r ve log y\u00f6netimi sunar. Production&#8217;da PM2 veya benzeri bir s\u00fcre\u00e7 y\u00f6neticisi \u015fartt\u0131r.<\/p>\n<\/p>\n<p><h3 id=\"express-js-uygulamasi-hangi-portta-calismali\">Express.js uygulamas\u0131 hangi portta \u00e7al\u0131\u015fmal\u0131?<\/h3>\n<\/p>\n<p><p>Genellikle 3000 portu kullan\u0131l\u0131r. Ancak Nginx reverse proxy kuruldu\u011funda, d\u0131\u015f d\u00fcnya yaln\u0131zca 80 ve 443 portlar\u0131na ba\u011flan\u0131r. 3000 portu yaln\u0131zca sunucu i\u00e7inde kal\u0131r. Birden fazla uygulama \u00e7al\u0131\u015ft\u0131racaksan\u0131z her birine farkl\u0131 port atay\u0131n (3001, 3002 vb.).<\/p>\n<\/p>\n<p><h3 id=\"nginx-reverse-proxy-neden-gereklidir\">Nginx reverse proxy neden gereklidir?<\/h3>\n<\/p>\n<p><p>Nginx, gelen HTTP\/HTTPS isteklerini Express.js&#8217;in \u00e7al\u0131\u015ft\u0131\u011f\u0131 porta y\u00f6nlendirir. Ayn\u0131 zamanda statik dosyalar\u0131 h\u0131zland\u0131r\u0131r, y\u00fck dengeleme yapar ve g\u00fcvenlik katman\u0131 olu\u015fturur. Express.js do\u011frudan 80 portunda \u00e7al\u0131\u015ft\u0131r\u0131lmaz \u00e7\u00fcnk\u00fc bu root yetkisi gerektirir ve performans\u0131 d\u00fc\u015f\u00fcr\u00fcr.<\/p>\n<\/p>\n<p><h3 id=\"lets-encrypt-ssl-sertifikasi-nasil-yenilenir\">Let&#8217;s Encrypt SSL sertifikas\u0131 nas\u0131l yenilenir?<\/h3>\n<\/p>\n<p><p>Certbot, sertifikay\u0131 otomatik yenilemek i\u00e7in cron&#8217;a eklenebilir. <code>certbot renew --quiet<\/code> komutu, ge\u00e7erlilik s\u00fcresi dolmadan sertifikay\u0131 yeniler. Manuel m\u00fcdahale gerekmez. Yenileme sonras\u0131 Nginx&#8217;in yeniden y\u00fcklenmesi i\u00e7in deploy-hook kullan\u0131l\u0131r.<\/p>\n<\/p>\n<p><h3 id=\"express-js-uygulamasi-neden-surekli-cokuyor\">Express.js uygulamas\u0131 neden s\u00fcrekli \u00e7\u00f6k\u00fcyor?<\/h3>\n<\/p>\n<p><p>En yayg\u0131n nedenler: bellek ta\u015fmas\u0131 (heap out of memory), yakalanmam\u0131\u015f hatalar veya veritaban\u0131 ba\u011flant\u0131 hatalar\u0131. PM2 loglar\u0131n\u0131 inceleyerek \u00e7\u00f6kme nedenini bulabilirsiniz. Ayr\u0131ca <code>--max-memory-restart<\/code> parametresiyle bellek limitini y\u00f6netebilirsiniz.<\/p>\n<\/p>\n<p><h3 id=\"express-js-projesini-cpanel-uzerinde-yayinlayabilir-miyim\">Express.js projesini cPanel \u00fczerinde yay\u0131nlayabilir miyim?<\/h3>\n<\/p>\n<p><p>Baz\u0131 cPanel sunucular\u0131 Node.js uygulamalar\u0131n\u0131 destekler. Ancak bu kurulum genellikle k\u0131s\u0131tl\u0131d\u0131r. PM2, \u00f6zel portlar ve WebSocket deste\u011fi gibi \u00f6zellikler cPanel&#8217;de tam \u00e7al\u0131\u015fmayabilir. Bu nedenle VDS veya \u00f6zel Node.js hosting daha sa\u011fl\u0131kl\u0131d\u0131r.<\/p>\n<\/p>\n<p><h3 id=\"502-bad-gateway-hatasi-neden-olusur\">502 Bad Gateway hatas\u0131 neden olu\u015fur?<\/h3>\n<\/p>\n<p><p>Bu hata, Nginx&#8217;in Express.js uygulamas\u0131na ba\u011flanamad\u0131\u011f\u0131n\u0131 g\u00f6sterir. Uygulama \u00e7\u00f6km\u00fc\u015f olabilir, yanl\u0131\u015f portta \u00e7al\u0131\u015f\u0131yor olabilir veya PM2 s\u00fcreci durmu\u015ftur. \u00d6nce PM2 durumunu kontrol edin, ard\u0131ndan Nginx config&#8217;indeki <code>proxy_pass<\/code> adresini do\u011frulay\u0131n.<\/p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Express.js Projelerini Yay\u0131nlama: 2026&#8217;da Hosting ve VDS \u00dczerinde 9 Ad\u0131mda Uygulama Rehberi Gece yar\u0131s\u0131 saat 02:00. Express.js ile yazd\u0131\u011f\u0131n\u0131z REST&#8230;<\/p>\n","protected":false},"author":1,"featured_media":2750,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[81],"tags":[],"class_list":["post-2746","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-node-js"],"_links":{"self":[{"href":"https:\/\/saviorhost.com\/blog\/wp-json\/wp\/v2\/posts\/2746","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=2746"}],"version-history":[{"count":2,"href":"https:\/\/saviorhost.com\/blog\/wp-json\/wp\/v2\/posts\/2746\/revisions"}],"predecessor-version":[{"id":2755,"href":"https:\/\/saviorhost.com\/blog\/wp-json\/wp\/v2\/posts\/2746\/revisions\/2755"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/saviorhost.com\/blog\/wp-json\/wp\/v2\/media\/2750"}],"wp:attachment":[{"href":"https:\/\/saviorhost.com\/blog\/wp-json\/wp\/v2\/media?parent=2746"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/saviorhost.com\/blog\/wp-json\/wp\/v2\/categories?post=2746"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/saviorhost.com\/blog\/wp-json\/wp\/v2\/tags?post=2746"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}