Plesk Üzerinde Node.js ve PHP Uygulamalarını Aynı Anda Çalıştırmak
Plesk Üzerinde Node.js ve PHP Uygulamalarını Aynı Anda Çalıştırmak
Plesk, tek bir sunucu veya çoklu abonelik (subscription) yapısında birden fazla yığınla (stack) uygulamayı paralel çalıştırmayı kolaylaştırır. Aynı alan adı altında “/api” yolunda Node.js tabanlı bir hizmet, kök dizinde PHP-FPM ile çalışan bir web uygulaması (WordPress/Laravel vb.) sunmak sık karşılaşılan bir senaryodur. Bu yazıda, Plesk’te Node.js ve PHP uygulamalarının aynı anda—çakışmadan—çalıştırılması için gereken mimari, ters vekil (reverse proxy) ayarları, süreç yönetimi ve güvenlik optimizasyonlarını anlatıyoruz. Daha yüksek kararlılık ve kaynak izolasyonu için uygun ölçekte VDS ya da performans odaklı Premium VDS tercih edilebilir; gerekli olduğunda Sunucu Barındırma çözümleri ile dikey veya yatay ölçeklenebilir.
- Neden Karma Yığın (Node.js + PHP)?
- Ön Koşullar ve Sürüm Yönetimi
- Mimari Seçenekler
- 1) Aynı alan adı, farklı yol (Önerilen Başlangıç)
- 2) Alt alan adı ayırma
- 3) Ayrı abonelik (Subscription)
- Plesk’te Node.js Uygulamasını Etkinleştirme
- Örnek Express Uygulaması
- PHP Uygulaması (PHP-FPM) ile Birlikte Çalıştırma
- Nginx Reverse Proxy Kurgusu
- Statik Dosyalar ve Önbellekleme
- SSL / HTTP/2 / HSTS
- Env ve Gizli Bilgiler
- Günlükler (Logs) ve Sorun Giderme
- Performans: PHP-FPM ve Node.js Ayarları
- Güvenlik: WAF, Rate Limit ve İzolasyon
- CI/CD ve Sürümleme
- Örnek Tam Mimari (Aynı Alan Adı)
- İşletim ve Bakım Önerileri
- Sonuç
Neden Karma Yığın (Node.js + PHP)?
- Mevcut PHP sitesine gerçek zamanlı API/Socket yetenekleri eklemek (Node.js Express/Nest.js).
- Ön yüz (Next.js/Nuxt) ile arka uç (Laravel/WordPress) ayrımı.
- Kademeli geçiş ve mikroservis yaklaşımı: Kritik modüller Node.js’e taşınırken ana site PHP’de kalır.
Ön Koşullar ve Sürüm Yönetimi
- Plesk Obsidian (güncel) + Node.js Extension
- PHP-FPM etkin (Multi-PHP ve handler seçimi)
- Alan adı/alt alan adı yapılandırıldı, SSL kurulu (Let’s Encrypt veya özel sertifika)
- Kaynak planlaması: CPU/RAM limitleri ve IO kotaları; yoğun projelerde Kurumsal Hosting ile kurumsal SLA
Mimari Seçenekler
1) Aynı alan adı, farklı yol (Önerilen Başlangıç)
Örnek: example.com (PHP) ve example.com/api (Node.js). Nginx ters vekil kuralı ile /api isteklerini Node.js uygulamasına yönlendirirsiniz.
2) Alt alan adı ayırma
Örnek: app.example.com (Node.js) ve www.example.com (PHP). DNS ve SSL yönetimi daha nettir; kaynak tüketimi ve loglar ayrışır.
3) Ayrı abonelik (Subscription)
İzolasyonu maksimize eder; büyük ekipler ve CI/CD süreçleri için idealdir. Kaynak yoğun projelerde Kirala Senin Olsun gibi dedike seçenekler değerlendirilebilir.
Plesk’te Node.js Uygulamasını Etkinleştirme
- Plesk > Extensions > “Node.js” eklentisini yükleyin.
- Alan adınız > Node.js menüsünden “Enable Node.js” deyin.
- Uygulama kökünü (Application Root) ve giriş dosyasını (app.js/server.js) belirtin.
- Application Mode (Production/Development) ve Node Version’ı seçin.
- “NPM install” ve “Restart App” düğmeleriyle kurulumu tamamlayın.
Örnek Express Uygulaması
const express = require('express');
const app = express();
app.get('/health', (req, res) => res.json({ok:true}));
app.get('/api/v1/hello', (req, res) => res.json({message:'NodeJS API'}));
app.listen(process.env.PORT || 3000, () => {
console.log('Node API is running');
});
Plesk Node.js eklentisi varsayılan PORT’u çevre değişkeni olarak verir ve Nginx/Apache ters vekil ile dış dünyaya açar.
PHP Uygulaması (PHP-FPM) ile Birlikte Çalıştırma
Alan adınızda PHP-FPM etkin olduğundan emin olun: Domains > PHP Settings > “FPM application served by Nginx” seçin ve sürümü belirleyin. Paylaşımlı planlarda Linux Hosting, yoğun iş yüklerinde VDS daha tutarlı sonuç verir.
Nginx Reverse Proxy Kurgusu
Senaryo: example.com PHP, /api Node.js. Plesk’te “Apache & Nginx Settings” > “Additional Nginx directives” bölümüne kural ekleyin:
location /api/ {
proxy_pass http://127.0.0.1:3000/; # Plesk Node.js app portu
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_read_timeout 60s;
}
Bu şekilde /api istekleri Node.js’e gider, diğer yollar PHP-FPM’e çalışır.
Statik Dosyalar ve Önbellekleme
location ~* \.(js|css|png|jpg|jpeg|gif|svg|webp)$ {
expires 7d;
add_header Cache-Control "public, max-age=604800";
}
SSL / HTTP/2 / HSTS
“SSL/TLS Certificates” kısmından Let’s Encrypt aktifleştirin. HTTP/2 Plesk’te Nginx ile gelir. Güvenlik için HSTS:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
Env ve Gizli Bilgiler
API anahtarları ve veritabanı bilgilerini kodda tutmayın. Plesk Node.js ekranında Environment Variables bölümünden tanımlayın. PHP için .env (Laravel) veya Plesk “Additional directives” ile fastcgi_param kullanabilirsiniz.
Günlükler (Logs) ve Sorun Giderme
- Node.js logları: Plesk > Node.js > “Logs”
- Web logları:
/var/www/vhosts/<domain>/logs/ - Real-time izleme: Netdata/Zabbix ile CPU/RAM/IO trendlerini takip edin.
Performans: PHP-FPM ve Node.js Ayarları
- PHP-FPM havuzu: pm, pm.max_children, pm.max_requests değerlerini trafiğe göre ayarlayın.
- Node.js: Tek iş parçacıklı olay döngüsüdür; CPU yoğun işlerde worker/cluster veya dış job kuyruğu (Bull/RabbitMQ) kullanın.
- CDN + Önbellek: PHP tarafında OPcache, uygulama önbelleği (Redis/Memcached); statik dosyalar CDN.
Güvenlik: WAF, Rate Limit ve İzolasyon
- Uygulama katmanında WAF Koruma ve Plesk ModSecurity (OWASP CRS) etkin olsun.
- Node.js endpoint’lerinde rate limit ve CORS kuralları; JWT/Session yönetiminde güvenli cookie (HttpOnly/SameSite).
- Yük altında ölçek için alt alan adı/ayrı abonelik; yoğun ortamda Reseller Hosting ayrımı veya dedike Premium VDS.
CI/CD ve Sürümleme
Git Deposu (Plesk Git Extension) ile dal tabanlı dağıtım kurun. “Deploy” sonrası:
# Node.js için npm ci --only=production pm2 restart ecosystem.config.js # (PM2 kullanıyorsanız) # Plesk Node.js UI üzerinden Restart da yeterlidir.
PHP tarafında composer install --no-dev --optimize-autoloader ve php artisan config:cache gibi adımlar ekleyin.
Örnek Tam Mimari (Aynı Alan Adı)
example.com (SSL, HTTP/2) ├─ / → PHP-FPM (Laravel/WordPress) ├─ /assets → Nginx cache+CDN └─ /api → Node.js (Express, PORT=3000)
İşletim ve Bakım Önerileri
- Güncellemeleri pencere saatlerinde yapın; otomatik health check endpoint’i kullanın.
- Logrotate ile logları döndürün, disk kullanımını izleyin.
- Periyodik performans taraması ve ayar gözden geçirmesi için Optimizasyon Hizmeti alın.
Sonuç
Plesk, aynı alan adı veya alt alan adları altında Node.js ve PHP uygulamalarını birlikte çalıştırmayı basitleştirir. Doğru ters vekil kurgusu, uygun kaynak planı, güvenlik ve önbellekleme katmanlarıyla karma yığınlarda yüksek performans ve esneklik elde edebilirsiniz. Kurumsal ölçekte büyümeye hazır bir mimari için HostLigo’nun ölçeklenebilir hizmetlerinden yararlanarak (örn. VDS, Kurumsal Hosting) sürdürülebilir ve güvenli bir altyapı kurgulayabilirsiniz.