{"id":39000,"date":"2026-02-12T12:41:36","date_gmt":"2026-02-12T09:41:36","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=39000"},"modified":"2026-02-12T12:41:36","modified_gmt":"2026-02-12T09:41:36","slug":"node-js-uygulamasini-ubuntu-22-04-uzerinde-uretim-ortami-icin-kurulum-rehberi","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/node-js-uygulamasini-ubuntu-22-04-uzerinde-uretim-ortami-icin-kurulum-rehberi\/","title":{"rendered":"Node.js Uygulamas\u0131n\u0131 Ubuntu 22.04 \u00dczerinde \u00dcretim Ortam\u0131 \u0130\u00e7in Kurulum Rehberi"},"content":{"rendered":"<p><body><\/p>\n<h2>Node.js Uygulamas\u0131n\u0131 Ubuntu 22.04 \u00dczerinde \u00dcretim Ortam\u0131 \u0130\u00e7in Kurulum Rehberi<\/h2>\n<p>Node.js, modern web uygulamalar\u0131 geli\u015ftirmek i\u00e7in pop\u00fcler bir sunucu taraf\u0131 JavaScript \u00e7al\u0131\u015fma zaman\u0131d\u0131r. Bir Node.js uygulamas\u0131n\u0131 geli\u015ftirme ortam\u0131ndan \u00fcretim ortam\u0131na ta\u015f\u0131mak, uygulaman\u0131n kararl\u0131l\u0131\u011f\u0131n\u0131, g\u00fcvenli\u011fini ve performans\u0131n\u0131 sa\u011flamak i\u00e7in belirli ad\u0131mlar gerektirir. Bu rehberde, bir Node.js uygulamas\u0131n\u0131 Ubuntu 22.04 sunucusu \u00fczerinde \u00fcretim ortam\u0131na uygun \u015fekilde nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m anlataca\u011f\u0131z.<\/p>\n<p>Bu s\u00fcre\u00e7, Node.js ve ba\u011f\u0131ml\u0131l\u0131klar\u0131n kurulumundan, uygulaman\u0131n s\u00fcrekli \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flayacak bir proses y\u00f6neticisi (PM2) kullanmaya, web trafi\u011fini y\u00f6netmek ve SSL \u015fifrelemesi sa\u011flamak i\u00e7in bir ters proxy (Nginx) yap\u0131land\u0131rmaya kadar uzanacakt\u0131r.<\/p>\n<h3>1. \u00d6n Haz\u0131rl\u0131klar ve Temel Kurulumlar<\/h3>\n<p>\u00dcretim ortam\u0131 kurulumuna ba\u015flamadan \u00f6nce, Ubuntu sunucunuzun g\u00fcncel oldu\u011fundan ve gerekli temel ara\u00e7lar\u0131n y\u00fckl\u00fc oldu\u011fundan emin olmal\u0131y\u0131z. Ayr\u0131ca, g\u00fcvenlik nedeniyle uygulaman\u0131z\u0131 y\u00f6netmek i\u00e7in ayr\u0131 bir kullan\u0131c\u0131 olu\u015fturmak iyi bir pratiktir.<\/p>\n<h4>Sistem G\u00fcncelleme<\/h4>\n<p>\u0130lk ad\u0131m, sunucunuzdaki paket listelerini g\u00fcncellemek ve mevcut paketleri y\u00fckseltmektir. Bu, hem g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 kapat\u0131r hem de en yeni yaz\u0131l\u0131m s\u00fcr\u00fcmlerine eri\u015fmenizi sa\u011flar.<\/p>\n<pre><code class=\"language-bash\">sudo apt update\nsudo apt upgrade -y<\/code><\/pre>\n<h4>Node.js ve npm Kurulumu<\/h4>\n<p>Ubuntu&#8217;nun varsay\u0131lan depolar\u0131ndaki Node.js s\u00fcr\u00fcm\u00fc genellikle g\u00fcncel olmayabilir. Bu nedenle, NodeSource&#8217;un resmi deposunu kullanarak en son LTS (Uzun S\u00fcreli Destek) s\u00fcr\u00fcm\u00fcn\u00fc kurman\u0131z \u00f6nerilir.<\/p>\n<pre><code class=\"language-bash\"># NodeSource deposunu eklemek i\u00e7in curl'\u0131 kurun (e\u011fer y\u00fckl\u00fc de\u011filse)\nsudo apt install curl -y\n\n<h2>NodeSource LTS deposunu ekleyin<\/h2>\ncurl -fsSL https:\/\/deb.nodesource.com\/setup_lts.x | sudo -E bash -\n\n<h2>Node.js ve npm'i kurun<\/h2>\nsudo apt install nodejs -y<\/code><\/pre>\n<p>Kurulumun ba\u015far\u0131l\u0131 oldu\u011funu do\u011frulamak i\u00e7in Node.js ve npm s\u00fcr\u00fcmlerini kontrol edin:<\/p>\n<pre><code class=\"language-bash\">node -v\nnpm -v<\/code><\/pre>\n<h4>Git Kurulumu<\/h4>\n<p>Uygulama kodunuzu sunucuya ta\u015f\u0131mak i\u00e7in Git kullanman\u0131z en yayg\u0131n ve etkili y\u00f6ntemdir. Git&#8217;i a\u015fa\u011f\u0131daki komutla kurabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo apt install git -y<\/code><\/pre>\n<h4>Uygulama \u0130\u00e7in Yeni Bir Kullan\u0131c\u0131 Olu\u015fturma (G\u00fcvenlik)<\/h4>\n<p>Root kullan\u0131c\u0131s\u0131 yerine uygulaman\u0131z\u0131 y\u00f6netmek i\u00e7in ayr\u0131 bir kullan\u0131c\u0131 olu\u015fturmak, g\u00fcvenlik a\u00e7\u0131s\u0131ndan kritik \u00f6neme sahiptir. Bu, potansiyel g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131n sistem genelinde yay\u0131lmas\u0131n\u0131 engeller.<\/p>\n<pre><code class=\"language-bash\"># Yeni bir kullan\u0131c\u0131 olu\u015fturun (\u00f6rne\u011fin 'nodejsuser')\nsudo adduser nodejsuser\n\n<h2>Yeni kullan\u0131c\u0131ya sudo ayr\u0131cal\u0131klar\u0131 verin (gerekirse)<\/h2>\nsudo usermod -aG sudo nodejsuser<\/code><\/pre>\n<p>\u015eimdi bu yeni kullan\u0131c\u0131ya ge\u00e7i\u015f yap\u0131n ve geri kalan i\u015flemleri bu kullan\u0131c\u0131 \u00fczerinden yap\u0131n:<\/p>\n<pre><code class=\"language-bash\">su - nodejsuser<\/code><\/pre>\n<h3>2. Uygulaman\u0131n Sunucuya Aktar\u0131lmas\u0131 ve Ba\u011f\u0131ml\u0131l\u0131klar\u0131n Kurulumu<\/h3>\n<p>Art\u0131k temel kurulumlar tamamland\u0131\u011f\u0131na g\u00f6re, Node.js uygulaman\u0131z\u0131 sunucuya aktarabilir ve gerekli ba\u011f\u0131ml\u0131l\u0131klar\u0131 kurabilirsiniz.<\/p>\n<h4>Uygulama Dizini Olu\u015fturma<\/h4>\n<p>Uygulaman\u0131z i\u00e7in uygun bir dizin olu\u015fturun. Genellikle <code>\/var\/www<\/code> alt\u0131nda veya kullan\u0131c\u0131 dizini i\u00e7inde bir konum tercih edilir. Biz \u00f6rnek olarak kullan\u0131c\u0131m\u0131z\u0131n ana dizininde bir dizin olu\u015ftural\u0131m:<\/p>\n<pre><code class=\"language-bash\">mkdir my_node_app\ncd my_node_app<\/code><\/pre>\n<h4>Uygulamay\u0131 Klonlama<\/h4>\n<p>Git depounuzdan uygulaman\u0131z\u0131 bu dizine klonlay\u0131n. E\u011fer depoyu mevcut dizine klonlamak istiyorsan\u0131z, komutun sonuna bir nokta (<code>.<\/code>) ekleyin.<\/p>\n<pre><code class=\"language-bash\">git clone <your_repository_url> .<\/code><\/pre>\n<p>E\u011fer uygulaman\u0131z\u0131 bir Git deposundan klonlam\u0131yorsan\u0131z, SFTP gibi bir ara\u00e7 kullanarak dosyalar\u0131 sunucuya manuel olarak y\u00fckleyebilirsiniz.<\/p>\n<h4>Ba\u011f\u0131ml\u0131l\u0131klar\u0131n Kurulumu<\/h4>\n<p>Uygulaman\u0131z\u0131n <code>package.json<\/code> dosyas\u0131nda belirtilen t\u00fcm ba\u011f\u0131ml\u0131l\u0131klar\u0131 y\u00fcklemek i\u00e7in <code>npm install<\/code> komutunu \u00e7al\u0131\u015ft\u0131r\u0131n.<\/p>\n<pre><code class=\"language-bash\">npm install<\/code><\/pre>\n<h4>Ortam De\u011fi\u015fkenlerinin Y\u00f6netimi<\/h4>\n<p>\u00dcretim ortam\u0131nda hassas bilgiler (veritaban\u0131 kimlik bilgileri, API anahtarlar\u0131 vb.) do\u011frudan kod i\u00e7inde yer almamal\u0131d\u0131r. Bunlar\u0131 ortam de\u011fi\u015fkenleri olarak y\u00f6netmek en iyi yakla\u015f\u0131md\u0131r.<br \/>\n*   <code>.env<\/code> dosyas\u0131 kullan\u0131yorsan\u0131z, bu dosyay\u0131 sunucuda manuel olarak olu\u015fturun ve <code>.gitignore<\/code> dosyan\u0131zda oldu\u011fundan emin olun.<br \/>\n*   Alternatif olarak, PM2 veya Nginx yap\u0131land\u0131rmas\u0131 arac\u0131l\u0131\u011f\u0131yla ortam de\u011fi\u015fkenlerini ayarlayabilirsiniz.<br \/>\n*   <code>NODE_ENV<\/code> de\u011fi\u015fkenini <code>production<\/code> olarak ayarlamak, Node.js uygulamalar\u0131n\u0131n performans\u0131 ve hata y\u00f6netimi i\u00e7in \u00f6nemlidir.<\/p>\n<pre><code class=\"language-bash\"># .env dosyas\u0131 \u00f6rne\u011fi\n<h2>my_node_app\/.env<\/h2>\nPORT=3000\nDB_HOST=localhost\nDB_USER=myuser\nDB_PASS=mypassword\nNODE_ENV=production<\/code><\/pre>\n<p>E\u011fer uygulaman\u0131z <code>dotenv<\/code> paketini kullan\u0131yorsa, bu dosyadaki de\u011fi\u015fkenler otomatik olarak y\u00fcklenecektir.<\/p>\n<h3>3. Uygulamay\u0131 Arka Planda \u00c7al\u0131\u015ft\u0131rma ve Y\u00f6netme (PM2)<\/h3>\n<p>Bir Node.js uygulamas\u0131n\u0131 \u00fcretimde do\u011frudan <code>node app.js<\/code> ile \u00e7al\u0131\u015ft\u0131rmak tavsiye edilmez. Uygulaman\u0131z \u00e7\u00f6kerse veya sunucu yeniden ba\u015flat\u0131l\u0131rsa, manuel m\u00fcdahale olmadan tekrar \u00e7al\u0131\u015fmaz. PM2 (Process Manager 2), Node.js uygulamalar\u0131n\u0131 arka planda s\u00fcrekli olarak \u00e7al\u0131\u015ft\u0131ran, yeniden ba\u015flatan ve y\u00f6neten bir proses y\u00f6neticisidir.<\/p>\n<h4>PM2 Kurulumu<\/h4>\n<p>PM2&#8217;yi global olarak kurun:<\/p>\n<pre><code class=\"language-bash\">npm install pm2 -g<\/code><\/pre>\n<h4>Uygulamay\u0131 PM2 ile Ba\u015flatma<\/h4>\n<p>Uygulaman\u0131z\u0131 PM2 ile ba\u015flatmak i\u00e7in ana dosyan\u0131z\u0131n ad\u0131n\u0131 kullan\u0131n (genellikle <code>app.js<\/code> veya <code>index.js<\/code>). <code>--name<\/code> parametresi ile uygulaman\u0131za bir isim verebilirsiniz.<\/p>\n<pre><code class=\"language-bash\">pm2 start app.js --name \"my-node-app\"<\/code><\/pre>\n<p>E\u011fer ortam de\u011fi\u015fkenlerini manuel olarak ayarlamak isterseniz:<\/p>\n<pre><code class=\"language-bash\">PORT=3000 pm2 start app.js --name \"my-node-app\"<\/code><\/pre>\n<p>Daha karma\u015f\u0131k uygulamalar i\u00e7in bir <code>ecosystem.config.js<\/code> dosyas\u0131 olu\u015fturabilirsiniz. Bu dosya, birden fazla uygulama, ortam de\u011fi\u015fkenleri ve di\u011fer PM2 se\u00e7eneklerini tan\u0131mlaman\u0131za olanak tan\u0131r.<\/p>\n<pre><code class=\"language-javascript\">\/\/ ecosystem.config.js\nmodule.exports = {\n  apps: [\n    {\n      name: \"my-node-app\",\n      script: \"app.js\",\n      instances: \"max\", \/\/ CPU \u00e7ekirde\u011fi say\u0131s\u0131na g\u00f6re uygulama klonlar\u0131 olu\u015fturur\n      exec_mode: \"cluster\", \/\/ K\u00fcme modunda \u00e7al\u0131\u015f\u0131r\n      env: {\n        NODE_ENV: \"development\",\n        PORT: 3001\n      },\n      env_production: {\n        NODE_ENV: \"production\",\n        PORT: 3000\n      }\n    }\n  ]\n};<\/code><\/pre>\n<p>Bu dosyay\u0131 olu\u015fturduktan sonra uygulamay\u0131 \u015fu \u015fekilde ba\u015flatabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">pm2 start ecosystem.config.js --env production<\/code><\/pre>\n<h4>PM2 Komutlar\u0131<\/h4>\n<p>*   <strong>\u00c7al\u0131\u015fan uygulamalar\u0131 listeleme:<\/strong><\/p>\n<pre><code class=\"language-bash\">pm2 list<\/code><\/pre>\n<p>*   <strong>Uygulamay\u0131 durdurma:<\/strong><\/p>\n<pre><code class=\"language-bash\">pm2 stop my-node-app<\/code><\/pre>\n<p>*   <strong>Uygulamay\u0131 yeniden ba\u015flatma:<\/strong><\/p>\n<pre><code class=\"language-bash\">pm2 restart my-node-app<\/code><\/pre>\n<p>*   <strong>Uygulamay\u0131 silme (PM2 y\u00f6netiminden kald\u0131rma):<\/strong><\/p>\n<pre><code class=\"language-bash\">pm2 delete my-node-app<\/code><\/pre>\n<p>*   <strong>Uygulama g\u00fcnl\u00fcklerini g\u00f6r\u00fcnt\u00fcleme:<\/strong><\/p>\n<pre><code class=\"language-bash\">pm2 logs my-node-app<\/code><\/pre>\n<p>*   <strong>Sistem kaynaklar\u0131n\u0131 izleme:<\/strong><\/p>\n<pre><code class=\"language-bash\">pm2 monit<\/code><\/pre>\n<h4>Sistem Ba\u015flang\u0131c\u0131nda Otomatik \u00c7al\u0131\u015ft\u0131rma<\/h4>\n<p>Sunucu yeniden ba\u015flat\u0131ld\u0131\u011f\u0131nda PM2&#8217;nin uygulamalar\u0131n\u0131z\u0131 otomatik olarak ba\u015flatmas\u0131n\u0131 sa\u011flamak i\u00e7in <code>startup<\/code> komutunu kullan\u0131n.<\/p>\n<pre><code class=\"language-bash\">pm2 startup systemd<\/code><\/pre>\n<p>Bu komut, sistemin ba\u015flang\u0131\u00e7ta PM2&#8217;yi ve onun y\u00f6nete\u011fi uygulamalar\u0131 \u00e7al\u0131\u015ft\u0131rmas\u0131 i\u00e7in gerekli bir servis dosyas\u0131 olu\u015fturacakt\u0131r. \u00c7\u0131kt\u0131da size verilecek komutu \u00e7al\u0131\u015ft\u0131rmay\u0131 unutmay\u0131n (genellikle <code>sudo env PATH=$PATH:\/usr\/bin \/usr\/lib\/node_modules\/pm2\/bin\/pm2 startup systemd -u nodejsuser --hp \/home\/nodejsuser<\/code> gibi bir \u015fey olacakt\u0131r).<\/p>\n<p>Ard\u0131ndan, PM2&#8217;nin \u015fu anki uygulama listesini kaydetmesini sa\u011flay\u0131n:<\/p>\n<pre><code class=\"language-bash\">pm2 save<\/code><\/pre>\n<h3>4. Ters Proxy ve SSL Kurulumu (Nginx)<\/h3>\n<p>Node.js uygulaman\u0131z\u0131 do\u011frudan internete a\u00e7mak yerine, bir ters proxy (Nginx gibi) kullanmak daha g\u00fcvenli ve performansl\u0131d\u0131r. Nginx, gelen web isteklerini Node.js uygulaman\u0131za iletecek, statik dosyalar\u0131 sunacak, y\u00fck dengelemesi yapacak ve SSL sonland\u0131rmas\u0131 sa\u011flayacakt\u0131r.<\/p>\n<h4>Nginx Kurulumu<\/h4>\n<p>Nginx&#8217;i a\u015fa\u011f\u0131daki komutla kurun:<\/p>\n<pre><code class=\"language-bash\">sudo apt install nginx -y<\/code><\/pre>\n<p>Kurulumdan sonra Nginx servisinin \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olun:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl status nginx<\/code><\/pre>\n<h4>G\u00fcvenlik Duvar\u0131 Ayarlar\u0131 (UFW)<\/h4>\n<p>Ubuntu&#8217;nun varsay\u0131lan g\u00fcvenlik duvar\u0131 UFW&#8217;yi yap\u0131land\u0131rarak sadece gerekli portlar\u0131n a\u00e7\u0131k kalmas\u0131n\u0131 sa\u011flay\u0131n.<\/p>\n<pre><code class=\"language-bash\">sudo ufw allow 'Nginx HTTP' # Sadece HTTP (80)\nsudo ufw allow 'Nginx HTTPS' # Sadece HTTPS (443)\nsudo ufw allow 'Nginx Full' # Hem HTTP hem HTTPS\nsudo ufw allow 'OpenSSH' # SSH eri\u015fimi i\u00e7in\nsudo ufw enable # G\u00fcvenlik duvar\u0131n\u0131 etkinle\u015ftirin\nsudo ufw status # G\u00fcvenlik duvar\u0131 durumunu kontrol edin<\/code><\/pre>\n<h4>Nginx Yap\u0131land\u0131rmas\u0131<\/h4>\n<p>Uygulaman\u0131z i\u00e7in yeni bir Nginx yap\u0131land\u0131rma dosyas\u0131 olu\u015fturun.<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/nginx\/sites-available\/my_node_app.conf<\/code><\/pre>\n<p>A\u015fa\u011f\u0131daki yap\u0131land\u0131rmay\u0131 dosyaya ekleyin. <code>your_domain.com<\/code> yerine kendi alan ad\u0131n\u0131z\u0131, <code>3000<\/code> yerine Node.js uygulaman\u0131z\u0131n dinledi\u011fi portu yaz\u0131n.<\/p>\n<pre><code class=\"language-nginx\">server {\n    listen 80;\n    server_name your_domain.com www.your_domain.com;\n\n    location \/ {\n        proxy_pass http:\/\/localhost:3000; # Node.js uygulaman\u0131z\u0131n \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        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n    }\n}<\/code><\/pre>\n<p>Yap\u0131land\u0131rma dosyas\u0131n\u0131 kaydedip kapat\u0131n (CTRL+X, Y, Enter).<br \/>\n\u015eimdi bu yap\u0131land\u0131rmay\u0131 etkinle\u015ftirmek i\u00e7in bir sembolik ba\u011flant\u0131 olu\u015fturun ve Nginx&#8217;in varsay\u0131lan yap\u0131land\u0131rmas\u0131n\u0131 devre d\u0131\u015f\u0131 b\u0131rak\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo ln -s \/etc\/nginx\/sites-available\/my_node_app.conf \/etc\/nginx\/sites-enabled\/\nsudo unlink \/etc\/nginx\/sites-enabled\/default # Varsay\u0131lan yap\u0131land\u0131rmay\u0131 kald\u0131r\u0131n<\/code><\/pre>\n<p>Nginx yap\u0131land\u0131rman\u0131z\u0131n do\u011fru oldu\u011funu 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 systemctl restart nginx<\/code><\/pre>\n<p>Art\u0131k alan ad\u0131n\u0131z \u00fczerinden HTTP (port 80) \u00fczerinden uygulaman\u0131za eri\u015febiliyor olmal\u0131s\u0131n\u0131z.<\/p>\n<h4>SSL Sertifikas\u0131 Kurulumu (Let&#8217;s Encrypt ile Certbot)<\/h4>\n<p>Web sitenizin g\u00fcvenli\u011fini sa\u011flamak i\u00e7in SSL (HTTPS) kullanmak zorunludur. Let&#8217;s Encrypt, \u00fccretsiz SSL sertifikalar\u0131 sunar ve Certbot arac\u0131 ile kolayca kurulabilir.<\/p>\n<pre><code class=\"language-bash\"># Certbot ve Nginx eklentisini kurun\nsudo apt install certbot python3-certbot-nginx -y<\/code><\/pre>\n<p>\u015eimdi Certbot&#8217;u kullanarak SSL sertifikas\u0131n\u0131 al\u0131n ve Nginx yap\u0131land\u0131rmas\u0131n\u0131 otomatik olarak g\u00fcncelleyin:<\/p>\n<pre><code class=\"language-bash\">sudo certbot --nginx -d your_domain.com -d www.your_domain.com<\/code><\/pre>\n<p>Certbot size baz\u0131 sorular soracakt\u0131r (e-posta adresi, hizmet \u015fartlar\u0131n\u0131 kabul etme vb.). \u0130\u015flem tamamland\u0131\u011f\u0131nda, Nginx yap\u0131land\u0131rman\u0131z otomatik olarak g\u00fcncellenecek ve web siteniz HTTPS \u00fczerinden eri\u015filebilir olacakt\u0131r.<\/p>\n<p>Sertifikalar\u0131n otomatik olarak yenilendi\u011fini test etmek i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">sudo certbot renew --dry-run<\/code><\/pre>\n<h3>5. G\u00fcvenlik ve Performans \u0130pu\u00e7lar\u0131, Sonu\u00e7 ve SSS<\/h3>\n<p>Uygulaman\u0131z\u0131 ba\u015far\u0131yla kurduktan sonra, g\u00fcvenlik ve performans\u0131n\u0131 daha da art\u0131rmak i\u00e7in baz\u0131 ek ad\u0131mlar atabilirsiniz.<\/p>\n<h4>Ek G\u00fcvenlik \u0130pu\u00e7lar\u0131<\/h4>\n<p>*   <strong>UFW ile S\u0131k\u0131 G\u00fcvenlik Duvar\u0131:<\/strong> Sadece gerekli portlar\u0131 a\u00e7\u0131n (SSH, HTTP, HTTPS).<\/p>\n<pre><code class=\"language-bash\">sudo ufw default deny incoming\n    sudo ufw default allow outgoing\n    sudo ufw enable<\/code><\/pre>\n<p>*   <strong>SSH G\u00fcvenli\u011fi:<\/strong> SSH i\u00e7in varsay\u0131lan portu de\u011fi\u015ftirin, parola yerine SSH anahtarlar\u0131 kullan\u0131n ve root giri\u015fi devre d\u0131\u015f\u0131 b\u0131rak\u0131n.<br \/>\n*   <strong>Ba\u011f\u0131ml\u0131l\u0131klar\u0131 G\u00fcncel Tutma:<\/strong> Uygulaman\u0131z\u0131n ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 d\u00fczenli olarak g\u00fcncelleyin (<code>npm audit<\/code> ile g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 kontrol edin).<br \/>\n*   <strong>Hassas Verileri Koruma:<\/strong> Ortam de\u011fi\u015fkenleri, veritaban\u0131 kimlik bilgileri gibi hassas verileri asla Git deposuna y\u00fcklemeyin.<br \/>\n*   <strong>HTTP G\u00fcvenlik Ba\u015fl\u0131klar\u0131:<\/strong> Helmet gibi mod\u00fclleri kullanarak uygulaman\u0131za \u00e7e\u015fitli HTTP g\u00fcvenlik ba\u015fl\u0131klar\u0131 ekleyin.<br \/>\n*   <strong>Giri\u015f Do\u011frulama:<\/strong> T\u00fcm kullan\u0131c\u0131 giri\u015flerini sunucu taraf\u0131nda mutlaka do\u011frulay\u0131n ve sanitize edin.<\/p>\n<h4>Performans \u0130pu\u00e7lar\u0131<\/h4>\n<p>*   <strong>PM2 K\u00fcme Modu:<\/strong> Uygulaman\u0131z\u0131 PM2&#8217;nin k\u00fcme modunda \u00e7al\u0131\u015ft\u0131rarak CPU \u00e7ekirdeklerinizden tam verim al\u0131n. <code>ecosystem.config.js<\/code> dosyas\u0131nda <code>instances: \"max\", exec_mode: \"cluster\"<\/code> kullan\u0131n.<br \/>\n*   <strong>Nginx \u00d6nbellekleme:<\/strong> Statik dosyalar i\u00e7in Nginx \u00f6nbelleklemesini kullanarak sunucu y\u00fck\u00fcn\u00fc azalt\u0131n.<br \/>\n*   <strong>Veritaban\u0131 Optimizasyonu:<\/strong> Veritaban\u0131 sorgular\u0131n\u0131z\u0131 optimize edin, uygun indeksler kullan\u0131n.<br \/>\n*   <strong>Kod Optimizasyonu:<\/strong> Bellek s\u0131z\u0131nt\u0131lar\u0131n\u0131 ve performans darbo\u011fazlar\u0131n\u0131 tespit etmek i\u00e7in Node.js uygulaman\u0131z\u0131 profilleme ara\u00e7lar\u0131yla analiz edin.<br \/>\n*   <strong>CDN Kullan\u0131m\u0131:<\/strong> Statik varl\u0131klar\u0131n\u0131z\u0131 (resimler, CSS, JS) bir \u0130\u00e7erik Da\u011f\u0131t\u0131m A\u011f\u0131 (CDN) \u00fczerinden sunarak y\u00fckleme s\u00fcrelerini iyile\u015ftirin.<\/p>\n<h4>Sonu\u00e7<\/h4>\n<p>Bu rehberde, Node.js uygulaman\u0131z\u0131 Ubuntu 22.04 \u00fczerinde \u00fcretim ortam\u0131na uygun bir \u015fekilde nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 detayl\u0131 bir \u015fekilde ele ald\u0131k. Node.js ve ba\u011f\u0131ml\u0131l\u0131klar\u0131n kurulumundan, PM2 ile uygulaman\u0131z\u0131 s\u00fcrekli \u00e7al\u0131\u015ft\u0131rmaya, Nginx ile ters proxy ve SSL \u015fifrelemesi sa\u011flamaya kadar t\u00fcm ad\u0131mlar\u0131 tamamlad\u0131n\u0131z. Bu yap\u0131land\u0131rma, uygulaman\u0131z\u0131n g\u00fcvenli, kararl\u0131 ve performansl\u0131 bir \u015fekilde \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flayacakt\u0131r. Unutmay\u0131n ki \u00fcretim ortamlar\u0131 s\u00fcrekli izleme ve bak\u0131m gerektirir.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h3>\n<p><H3>Node.js uygulamam neden ba\u015flam\u0131yor veya Nginx 502 Bad Gateway hatas\u0131 al\u0131yorum?<\/H3><\/p>\n<p>Bu genellikle Node.js uygulaman\u0131z\u0131n PM2 taraf\u0131ndan d\u00fczg\u00fcn bir \u015fekilde ba\u015flat\u0131lmad\u0131\u011f\u0131 veya Nginx&#8217;in uygulaman\u0131z\u0131n dinledi\u011fi porta eri\u015femedi\u011fi anlam\u0131na gelir. \u015eunlar\u0131 kontrol edin:<\/p>\n<ul>\n<li><code>pm2 list<\/code> komutuyla uygulaman\u0131z\u0131n \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olun.<\/li>\n<li>Uygulaman\u0131z\u0131n do\u011fru portta dinledi\u011fini ve Nginx yap\u0131land\u0131rmas\u0131ndaki <code>proxy_pass<\/code> de\u011ferinin bu portla e\u015fle\u015fti\u011fini kontrol edin.<\/li>\n<li><code>pm2 logs my-node-app<\/code> komutuyla uygulama g\u00fcnl\u00fcklerini kontrol ederek hatalar\u0131 aray\u0131n.<\/li>\n<li>Nginx hata g\u00fcnl\u00fcklerini kontrol edin: <code>sudo tail -f \/var\/log\/nginx\/error.log<\/code><\/li>\n<li>Uygulaman\u0131z\u0131n dinledi\u011fi portun g\u00fcvenlik duvar\u0131 taraf\u0131ndan engellenmedi\u011finden emin olun (<code>sudo ufw status<\/code>).<\/li>\n<\/ul>\n<p><H3>PM2 ile cluster modu nas\u0131l kullan\u0131l\u0131r?<\/H3><\/p>\n<p>PM2&#8217;nin cluster modu, uygulaman\u0131z\u0131n birden fazla kopyas\u0131n\u0131 (i\u015flem) \u00e7al\u0131\u015ft\u0131rarak CPU \u00e7ekirdeklerinizden tam verim alman\u0131z\u0131 sa\u011flar ve uygulaman\u0131z\u0131n daha fazla iste\u011fi ayn\u0131 anda i\u015flemesine olanak tan\u0131r. Bunu <code>ecosystem.config.js<\/code> dosyas\u0131nda yap\u0131land\u0131rabilirsiniz:<\/p>\n<pre><code class=\"language-javascript\">\n\/\/ ecosystem.config.js\nmodule.exports = {\n  apps: [\n    {\n      name: \"my-node-app\",\n      script: \"app.js\",\n      instances: \"max\", \/\/ CPU \u00e7ekirde\u011fi say\u0131s\u0131na g\u00f6re uygulama klonlar\u0131 olu\u015fturur\n      exec_mode: \"cluster\", \/\/ K\u00fcme modunda \u00e7al\u0131\u015f\u0131r\n      env_production: {\n        NODE_ENV: \"production\",\n        PORT: 3000\n      }\n    }\n  ]\n};\n<\/code><\/pre>\n<p>Daha sonra <code>pm2 start ecosystem.config.js --env production<\/code> komutuyla ba\u015flat\u0131n.<\/p>\n<p><H3>SSL sertifikam neden yenilenmiyor?<\/H3><\/p>\n<p>Let&#8217;s Encrypt sertifikalar\u0131 90 g\u00fcnde bir yenilenmelidir. Certbot, bu yenilemeyi otomatik olarak bir cron job veya systemd timer arac\u0131l\u0131\u011f\u0131yla yapar. E\u011fer yenilenme sorunu ya\u015f\u0131yorsan\u0131z:<\/p>\n<ul>\n<li>Certbot&#8217;un otomatik yenileme i\u015fleminin \u00e7al\u0131\u015f\u0131p \u00e7al\u0131\u015fmad\u0131\u011f\u0131n\u0131 kontrol edin: <code>sudo systemctl status certbot.timer<\/code><\/li>\n<li>Manuel bir yenileme denemesi yap\u0131n: <code>sudo certbot renew --dry-run<\/code> (test) veya <code>sudo certbot renew<\/code> (ger\u00e7ek).<\/li>\n<li>Alan ad\u0131n\u0131z\u0131n DNS ayarlar\u0131n\u0131n do\u011fru oldu\u011fundan ve sunucunuzun 80\/443 portlar\u0131ndan eri\u015filebilir oldu\u011fundan emin olun.<\/li>\n<\/ul>\n<p><H3>Ortam de\u011fi\u015fkenlerini nas\u0131l g\u00fcvenli bir \u015fekilde y\u00f6netirim?<\/H3><\/p>\n<p>Hassas ortam de\u011fi\u015fkenlerini <code>.env<\/code> dosyalar\u0131yla y\u00f6netmek yayg\u0131n olsa da, daha b\u00fcy\u00fck ve kritik uygulamalar i\u00e7in farkl\u0131 \u00e7\u00f6z\u00fcmler mevcuttur:<\/p>\n<ul>\n<li><strong>Sistem Ortam De\u011fi\u015fkenleri:<\/strong> <code>\/etc\/environment<\/code> veya sistem genelindeki servis dosyalar\u0131 (systemd) arac\u0131l\u0131\u011f\u0131yla ayarlamak.<\/li>\n<li><strong>Bulut Sa\u011flay\u0131c\u0131lar\u0131n Gizli Y\u00f6netim Servisleri:<\/strong> AWS Secrets Manager, Azure Key Vault veya Google Cloud Secret Manager gibi servisler.<\/li>\n<li><strong>HashiCorp Vault:<\/strong> Kendi sunucunuzda \u00e7al\u0131\u015ft\u0131rabilece\u011finiz a\u00e7\u0131k kaynakl\u0131 bir gizli y\u00f6netim arac\u0131.<\/li>\n<\/ul>\n<p><H3>Uygulama g\u00fcncellemelerini nas\u0131l da\u011f\u0131t\u0131r\u0131m?<\/H3><\/p>\n<p>Uygulaman\u0131z\u0131 g\u00fcncelledikten sonra (\u00f6rne\u011fin <code>git pull<\/code> ile yeni kodu \u00e7ektikten sonra), yeni ba\u011f\u0131ml\u0131l\u0131klar varsa <code>npm install<\/code> \u00e7al\u0131\u015ft\u0131rman\u0131z ve ard\u0131ndan PM2 ile uygulaman\u0131z\u0131 yeniden ba\u015flatman\u0131z gerekir:<\/p>\n<pre><code class=\"language-bash\">\ncd \/home\/nodejsuser\/my_node_app\ngit pull\nnpm install # Yeni ba\u011f\u0131ml\u0131l\u0131klar varsa\npm2 restart my-node-app\n<\/code><\/pre>\n<p>PM2, uygulaman\u0131z\u0131 kesintisiz bir \u015fekilde yeniden ba\u015flatmaya \u00e7al\u0131\u015facakt\u0131r (s\u0131f\u0131r kesinti s\u00fcresi i\u00e7in cluster modu \u00f6nerilir).<\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Node.js Uygulamas\u0131n\u0131 Ubuntu 22.04 \u00dczerinde \u00dcretim Ortam\u0131 \u0130\u00e7in Kurulum Rehberi\nNode.js, modern web uygulamalar\u0131 geli\u015ftirmek i\u00e7in pop\u00fcler","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-39000","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>Node.js Uygulamas\u0131n\u0131 Ubuntu 22.04 \u00dczerinde \u00dcretim Ortam\u0131 \u0130\u00e7in Kurulum 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\/node-js-uygulamasini-ubuntu-22-04-uzerinde-uretim-ortami-icin-kurulum-rehberi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Node.js Uygulamas\u0131n\u0131 Ubuntu 22.04 \u00dczerinde \u00dcretim Ortam\u0131 \u0130\u00e7in Kurulum Rehberi\" \/>\n<meta property=\"og:description\" content=\"Node.js Uygulamas\u0131n\u0131 Ubuntu 22.04 \u00dczerinde \u00dcretim Ortam\u0131 \u0130\u00e7in Kurulum Rehberi Node.js, modern web uygulamalar\u0131 geli\u015ftirmek i\u00e7in pop\u00fcler\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/node-js-uygulamasini-ubuntu-22-04-uzerinde-uretim-ortami-icin-kurulum-rehberi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-02-12T09:41:36+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=\"13 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/node-js-uygulamasini-ubuntu-22-04-uzerinde-uretim-ortami-icin-kurulum-rehberi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/node-js-uygulamasini-ubuntu-22-04-uzerinde-uretim-ortami-icin-kurulum-rehberi\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Node.js Uygulamas\u0131n\u0131 Ubuntu 22.04 \u00dczerinde \u00dcretim Ortam\u0131 \u0130\u00e7in Kurulum Rehberi\",\"datePublished\":\"2026-02-12T09:41:36+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/node-js-uygulamasini-ubuntu-22-04-uzerinde-uretim-ortami-icin-kurulum-rehberi\/\"},\"wordCount\":2016,\"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\/node-js-uygulamasini-ubuntu-22-04-uzerinde-uretim-ortami-icin-kurulum-rehberi\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/node-js-uygulamasini-ubuntu-22-04-uzerinde-uretim-ortami-icin-kurulum-rehberi\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/node-js-uygulamasini-ubuntu-22-04-uzerinde-uretim-ortami-icin-kurulum-rehberi\/\",\"name\":\"Node.js Uygulamas\u0131n\u0131 Ubuntu 22.04 \u00dczerinde \u00dcretim Ortam\u0131 \u0130\u00e7in Kurulum Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-02-12T09:41:36+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/node-js-uygulamasini-ubuntu-22-04-uzerinde-uretim-ortami-icin-kurulum-rehberi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/node-js-uygulamasini-ubuntu-22-04-uzerinde-uretim-ortami-icin-kurulum-rehberi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/node-js-uygulamasini-ubuntu-22-04-uzerinde-uretim-ortami-icin-kurulum-rehberi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Node.js Uygulamas\u0131n\u0131 Ubuntu 22.04 \u00dczerinde \u00dcretim Ortam\u0131 \u0130\u00e7in Kurulum 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":"Node.js Uygulamas\u0131n\u0131 Ubuntu 22.04 \u00dczerinde \u00dcretim Ortam\u0131 \u0130\u00e7in Kurulum 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\/node-js-uygulamasini-ubuntu-22-04-uzerinde-uretim-ortami-icin-kurulum-rehberi\/","og_locale":"tr_TR","og_type":"article","og_title":"Node.js Uygulamas\u0131n\u0131 Ubuntu 22.04 \u00dczerinde \u00dcretim Ortam\u0131 \u0130\u00e7in Kurulum Rehberi","og_description":"Node.js Uygulamas\u0131n\u0131 Ubuntu 22.04 \u00dczerinde \u00dcretim Ortam\u0131 \u0130\u00e7in Kurulum Rehberi Node.js, modern web uygulamalar\u0131 geli\u015ftirmek i\u00e7in pop\u00fcler","og_url":"https:\/\/fatihsoysal.com\/blog\/node-js-uygulamasini-ubuntu-22-04-uzerinde-uretim-ortami-icin-kurulum-rehberi\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-02-12T09:41:36+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"13 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/node-js-uygulamasini-ubuntu-22-04-uzerinde-uretim-ortami-icin-kurulum-rehberi\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/node-js-uygulamasini-ubuntu-22-04-uzerinde-uretim-ortami-icin-kurulum-rehberi\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Node.js Uygulamas\u0131n\u0131 Ubuntu 22.04 \u00dczerinde \u00dcretim Ortam\u0131 \u0130\u00e7in Kurulum Rehberi","datePublished":"2026-02-12T09:41:36+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/node-js-uygulamasini-ubuntu-22-04-uzerinde-uretim-ortami-icin-kurulum-rehberi\/"},"wordCount":2016,"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\/node-js-uygulamasini-ubuntu-22-04-uzerinde-uretim-ortami-icin-kurulum-rehberi\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/node-js-uygulamasini-ubuntu-22-04-uzerinde-uretim-ortami-icin-kurulum-rehberi\/","url":"https:\/\/fatihsoysal.com\/blog\/node-js-uygulamasini-ubuntu-22-04-uzerinde-uretim-ortami-icin-kurulum-rehberi\/","name":"Node.js Uygulamas\u0131n\u0131 Ubuntu 22.04 \u00dczerinde \u00dcretim Ortam\u0131 \u0130\u00e7in Kurulum Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-02-12T09:41:36+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/node-js-uygulamasini-ubuntu-22-04-uzerinde-uretim-ortami-icin-kurulum-rehberi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/node-js-uygulamasini-ubuntu-22-04-uzerinde-uretim-ortami-icin-kurulum-rehberi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/node-js-uygulamasini-ubuntu-22-04-uzerinde-uretim-ortami-icin-kurulum-rehberi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Node.js Uygulamas\u0131n\u0131 Ubuntu 22.04 \u00dczerinde \u00dcretim Ortam\u0131 \u0130\u00e7in Kurulum 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\/39000","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=39000"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/39000\/revisions"}],"predecessor-version":[{"id":39001,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/39000\/revisions\/39001"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=39000"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=39000"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=39000"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}