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 2: Temel Paketlerin Kurulumu
- Adım 3: PostgreSQL Kurulumu ve Giriş
- Adım 4: Veritabanı ve Kullanıcı Oluşturma
- Adım 5: Proje Dosyalarını Hazırlama (ZIP)
- Adım 6: Dosyaların Sunucuya Aktarılması
- Adım 7: Proje Dosyalarını Konumlandırma
- Adım 8: Arşivin Çıkarılması (Unzip)
- Adım 9: Veritabanı Yedek Yükleme ve Yetkilendirme
- Adım 10: .env Dosyasının Oluşturulması
- Adım 11: Nginx Yapılandırması
- Adım 12: Bağımlılıkların Yüklenmesi
- Adım 13: Projenin Derlenmesi (Build)
- Adım 14: PM2 ile Canlıya Alma
Adım 1: SSH ile Sunucuya Bağlanma

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

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ş

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

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)

Lokal ortamdaki projenizi sunucuya aktarmak için ZIP formatında sıkıştırmanız gerekmektedir.
⚠️ ÖNEMLİ:
node_modules,.nextve.gitklasörlerini ZIP dosyasına DAHİL ETMEYİN. Bu dosyalar sunucuda yeniden oluşturulacaktır.
Adım 6: Dosyaların Sunucuya Aktarılması

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

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)

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

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ı

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ı

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

Proje klasöründeyken gerekli Node.js paketlerini kurun:
npm install
Adım 13: Projenin Derlenmesi (Build)

Next.js projesini production ortamına hazırlayın:
npm run build
Adım 14: PM2 ile Canlıya Alma

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:
- SSL Sertifikası:
certbotkurarak HTTPS bağlantısını aktifleştirin. - Güvenlik Duvarı: UFW kullanarak yalnızca gerekli portları (80, 443, 22 vb.) açın.
- Log Takibi: Uygulama loglarını incelemek için
pm2 logs personal_blogkomutunu 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
- Next.js Resmi Dokümantasyonu
- PostgreSQL Resmi Dokümantasyonu
- PM2 Process Manager
- Nginx Dokümantasyonu
📄 Lisans
Bu doküman eğitim ve kurulum referansı amaçlı hazırlanmıştır.
Son Güncelleme: 24 Nisan 2026


Yorumlar (0)
Yükleniyor...