Şerif SELEN | Windows & Linux Rehberi
Linux

Linux Web Yayın ve Dağıtım Rehberi

Next.js + PostgreSQL Blog Dağıtım Rehberi

Bu dokümanda Next.js ve PostgreSQL tabanlı bir blog projesinin Linux (Ubuntu) sunucu üzerine kurulum ve dağıtım adımları detaylı olarak açıklanmaktadır.

İçindekiler


Adım 1: SSH ile Sunucuya Bağlanma

Adım 1

Sunucuya erişim sağlamak için PowerShell veya terminal üzerinden SSH bağlantısı gerçekleştirilir.

ssh serif@192.168.1.115

💡 Kendi sunucu IP adresinizi ve kullanıcı adınızı kullanmayı unutmayınız.


Adım 2: Temel Paketlerin Kurulumu

Adım 2

Sistemi güncelledikten sonra Node.js, Nginx, PostgreSQL ve PM2 gibi temel bileşenleri kurmanız gerekmektedir.

sudo apt update && sudo apt upgrade -y
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs unzip nginx postgresql postgresql-contrib
sudo npm install -g pm2

Adım 3: PostgreSQL Kurulumu ve Giriş

Adım 3

Kurulumlar tamamlandıktan sonra PostgreSQL komut satırına erişim sağlanır:

sudo -u postgres psql

Adım 4: Veritabanı ve Kullanıcı Oluşturma

Adım 4

PostgreSQL arayüzünde projemiz için gerekli veritabanı ve kullanıcı yapılandırmalarını gerçekleştiriyoruz:

CREATE DATABASE personal_blog;
CREATE USER blog_user WITH PASSWORD 'GucluSifreniz123!';
GRANT ALL PRIVILEGES ON DATABASE personal_blog TO blog_user;
\q

Adım 5: Proje Dosyalarını Hazırlama (ZIP)

Adım 5

Lokal ortamdaki projenizi sunucuya aktarmak için ZIP formatında sıkıştırmanız gerekmektedir.

⚠️ ÖNEMLİ: node_modules, .next ve .git klasörlerini ZIP dosyasına DAHİL ETMEYİN. Bu dosyalar sunucuda yeniden oluşturulacaktır.


Adım 6: Dosyaların Sunucuya Aktarılması

Adım 6

Oluşturduğunuz ZIP dosyasını FileZilla veya WinSCP gibi bir FTP/SFTP istemcisi kullanarak sunucunuza aktarın. (Örn: /home/serif dizinine)


Adım 7: Proje Dosyalarını Konumlandırma

Adım 7

Dosyanızı web yayın dizinine taşımamız gerekiyor:

sudo mv /home/serif/personal-blog.zip /var/www/

Adım 8: Arşivin Çıkarılması (Unzip)

Adım 8

Taşınan ZIP dosyasını klasöre çıkarıp, sahiplik ayarlarını yapıyoruz:

sudo mkdir -p /var/www/personal_blog
sudo unzip /var/www/personal-blog.zip -d /var/www/personal_blog
sudo chown -R $USER:$USER /var/www/personal_blog
cd /var/www/personal_blog

Adım 9: Veritabanı Yedek Yükleme ve Yetkilendirme

Adım 9

Varsa mevcut veritabanı yedeğinizi yükleyin ve şema yetkilerini ayarlayın:

sudo -u postgres psql -d personal_blog -f /var/www/personal_blog_yedek.sql
sudo -u postgres psql -d personal_blog -c "GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO blog_user;"
sudo -u postgres psql -d personal_blog -c "GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO blog_user;"
sudo -u postgres psql -d personal_blog -c "ALTER SCHEMA public OWNER TO blog_user;"

Adım 10: .env Dosyasının Oluşturulması

Adım 10

Projenizin çalışması için gereken gizli anahtarları tanımlayın. nano .env komutu ile dosyayı açın:

DATABASE_URL="postgresql://blog_user:GucluSifreniz123!@127.0.0.1:5432/personal_blog"
JWT_SECRET="EnAz32KarakterliGizliBirKelime"
NEXTAUTH_SECRET="BaskaBir32KarakterliGizliKelime"
NEXT_PUBLIC_SITE_URL="http://192.168.1.115"

Adım 11: Nginx Yapılandırması

Adım 11

Uygulamayı dışarıya açmak için sudo nano /etc/nginx/sites-available/personal_blog dosyasını oluşturun:

server {
    listen 80;
    server_name 192.168.1.115;
    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Sonrasında Nginx'i aktif hale getirin:

sudo ln -s /etc/nginx/sites-available/personal_blog /etc/nginx/sites-enabled/
sudo rm /etc/nginx/sites-enabled/default
sudo systemctl restart nginx

Adım 12: Bağımlılıkların Yüklenmesi

Adım 12

Proje klasöründeyken gerekli Node.js paketlerini kurun:

npm install

Adım 13: Projenin Derlenmesi (Build)

Adım 13

Next.js projesini production ortamına hazırlayın:

npm run build

Adım 14: PM2 ile Canlıya Alma

Adım 14

Uygulamanın arkaplanda sürekli çalışmasını sağlamak için PM2 kullanın:

pm2 start npm --name "personal_blog" -- start
pm2 save

🎉 Kurulum Tamamlandı

Bu adımları tamamladıktan sonra blog projeniz belirtilen IP adresi veya domain üzerinden erişilebilir olacaktır.

📋 Kurulum Sonrası Öneriler:

  1. SSL Sertifikası: certbot kurarak HTTPS bağlantısını aktifleştirin.
  2. Güvenlik Duvarı: UFW kullanarak yalnızca gerekli portları (80, 443, 22 vb.) açın.
  3. Log Takibi: Uygulama loglarını incelemek için pm2 logs personal_blog komutunu kullanabilirsiniz.

📝 Doküman Bilgileri

Bilgi Değer
Hazırlayan Serif SELEN
Tarih 24 Nisan 2026
Platform Ubuntu Linux
Teknoloji Next.js, PostgreSQL, Nginx, PM2
Toplam Adım 14

🔗 Faydalı Linkler


📄 Lisans

Bu doküman eğitim ve kurulum referansı amaçlı hazırlanmıştır.


Son Güncelleme: 24 Nisan 2026

Şerif Selen
YAZAR

Şerif Selen

Sistem ve ağ yönetimi alanında kapsamlı deneyime sahip BT profesyoneli olarak Bilgi İşlem Destek Sorumlusu pozisyonunda, kritik BT sistemlerinin (Data Center, DNS, DHCP, File Server, Firewall) kesintisiz ve güvenli operasyonunu sağlıyorum. BT altyapı projelerinde planlama, yönetim ve iyileştirme süreçlerinde aktif rol alarak kullanıcı deneyimini artırmaya odaklı bir çalışma yürütüyorum. Ağ güvenliği ve proje yönetimi metodolojileri konusundaki bilgi birikimimle, sürekli öğrenmeye açık yaklaşımım sayesinde siber güvenlik, veri merkezi yönetimi ve bulut teknolojileri alanlarında uzmanlaşmayı hedefliyorum.

Yorumlar (0)

Yükleniyor...