Node.js uygulaması, çoğu PHP dosya sunumundan farklı olarak sürekli çalışan süreç ve bir dinleme portu kullanır. Hosting'in Node sürümü, süreç yönetimi, ortam değişkenleri ve HTTPS proxy desteğini sağlaması gerekir. Aşağıdaki örnek Linux/systemd ve Nginx olan kendi sunucunuz içindir.
1. En küçük sağlık endpoint'i
Uygulama kullanıcısına ait /srv/ornek-node dizininde server.cjs dosyası oluşturun:
const http = require('node:http');
const server = http.createServer((req, res) => {
if (req.url === '/health') {
res.writeHead(200, {'Content-Type': 'application/json'});
res.end(JSON.stringify({ok: true}));
return;
}
res.writeHead(404, {'Content-Type': 'text/plain; charset=utf-8'});
res.end('Bulunamadı');
});
server.listen(3000, '127.0.0.1');
process.on('SIGTERM', () => server.close());
node server.cjs
Başka terminalde curl -i http://127.0.0.1:3000/health çalıştırın. 200 ve {"ok":true} beklenir; / isteğinin 404 olması bu örnekte normaldir. Ön plan testini Ctrl+C ile kapatmadan aynı portta ikinci süreç başlatmayın.
2. Kalıcı hizmet tanımı
Sunucuda önceden oluşturulmuş, shell yetkileri sınırlandırılmış appsvc kullanıcısı ve okunabilir proje dizini varsayılır. command -v node çıktısındaki gerçek yolu kullanarak /etc/systemd/system/ornek-node.service oluşturun:
[Unit]
Description=Ornek Node uygulamasi
After=network.target
[Service]
Type=simple
User=appsvc
Group=appsvc
WorkingDirectory=/srv/ornek-node
ExecStart=/usr/bin/node /srv/ornek-node/server.cjs
Environment=NODE_ENV=production
Restart=on-failure
RestartSec=5
NoNewPrivileges=true
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now ornek-node
sudo systemctl status ornek-node --no-pager
sudo journalctl -u ornek-node -n 50 --no-pager
Kullanıcı veya binary yolu yoksa servis başlamaz. Panelin yönettiği Node uygulamasına ikinci systemd servisi eklemeyin; panelin kendi yöneticisini kullanın.
3. HTTPS proxy
Aşağıdaki location bloğu mevcut doğru domain/TLS Nginx server bloğuna eklenir; tek başına tam Nginx dosyası değildir.
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
Önce nginx -t, başarılıysa systemctl reload nginx kullanın. WebSocket gereken uygulamada upgrade ayarları ayrıca gerekir. Uygulama forwarded başlıklara yalnız güvenilir proxy'den geldiğinde güvenmeli.
4. Hata ve geri alma
Dışarıda 502, yerelde connection refused varsa Node hizmetini/logunu inceleyin. Yerel /health çalışırken dışarıda 404 varsa yanlış vhost/route olabilir. Servisi kaldırmak için systemctl disable --now ornek-node kullanın; diğer sitelerin servislerini durdurmayın. Önceki kod sürümüyle yeniden başlatıp sağlık ve işlev testini tekrarlayın.
Bilgiyi uygulanabilir projeye dönüştürelim.
İhtiyacınızı teknik, operasyonel ve ticari açıdan değerlendirip doğru çözüm yol haritasını birlikte oluşturalım.
Projenizi Anlatın



