Bir Droplet açılıp sunucuya bağlanıldıktan sonra sırada bir web sunucusu kurmak var. Nginx, hem hafifliği hem de yüksek trafik altında istikrarlı çalışması nedeniyle Ubuntu sunucularında en çok tercih edilen web sunucularından biri. Bu yazıda Ubuntu tabanlı bir DigitalOcean Droplet üzerine Nginx’in nasıl kurulduğu, bir alan adının sunucuya nasıl yönlendirildiği ve Let’s Encrypt üzerinden ücretsiz bir SSL sertifikasının nasıl alındığı adım adım anlatıyorum.
Bu yazıyı takip edebilmek için elde hazır bir Droplet ve sunucuya SSH ile bağlanma bilgisi bulunmalı. Bu adımların nasıl yapıldığı Droplet açma ve SSH ile bağlanma yazısında detaylı olarak anlatılıyor, henüz bir Droplet açılmadıysa önce oradan başlanabilir.
Nginx Nedir, Neden Tercih Edilir
Nginx, gelen HTTP isteklerini karşılayıp bunları uygun uygulamaya yönlendiren bir web sunucusu ve ters proxy yazılımı. Statik dosyaları doğrudan sunabildiği gibi, arka planda çalışan bir Node.js, Python ya da PHP uygulamasına da trafiği yönlendirebilir. Apache’ye kıyasla daha düşük kaynak tüketimiyle yüksek eşzamanlı bağlantı sayısını kaldırabilmesi, Nginx’i özellikle küçük kaynaklı Droplet’lerde tercih edilen bir seçenek haline getiriyor.
Adım 1: Sistem Paketlerinin Güncellenmesi
Herhangi bir kurulumdan önce sunucudaki paket listesinin güncellenmesi gerekiyor. Terminalden sunucuya bağlanıldıktan sonra şu komutlar çalıştırılır:
sudo apt update sudo apt upgrade -y
Bu işlem, sunucu üzerindeki mevcut paketlerin güncel sürümlerle değiştirilmesini sağlar ve kurulum sırasında çıkabilecek uyumluluk sorunlarının önüne geçer.
Adım 2: Nginx Kurulumu
Paketler güncellendikten sonra Nginx kurulumu tek bir komutla tamamlanıyor:
sudo apt install nginx -y
Kurulum bittiğinde Nginx servisinin çalışıp çalışmadığı şu komutla kontrol edilebilir:
sudo systemctl status nginx
Servis aktifse tarayıcıdan sunucunun IP adresi girildiğinde Nginx’in varsayılan karşılama sayfası görünür. Bu ekranın gelmesi, kurulumun başarılı olduğunun bir göstergesi.
Adım 3: Güvenlik Duvarı Ayarları
Ubuntu üzerinde genellikle UFW (Uncomplicated Firewall) kullanılır. Nginx kurulumuyla birlikte UFW için hazır bir profil de otomatik olarak tanımlanır. Aşağıdaki komutla bu profil etkinleştirilebilir:
sudo ufw allow 'Nginx Full'
Bu komut hem 80 (HTTP) hem de 443 (HTTPS) portlarını açar. UFW daha önce etkinleştirilmediyse şu komutla açılabilir:
sudo ufw enable
Firewall kurallarının doğru uygulandığından emin olmak için sudo ufw status komutuyla açık portlar kontrol edilebilir.
Adım 4: Alan Adının Sunucuya Yönlendirilmesi
SSL sertifikası alınabilmesi için önce bir alan adının Droplet’in IP adresine yönlendirilmiş olması gerekiyor. Bu işlem, alan adının satın alındığı sağlayıcının (Namecheap, GoDaddy, isim.com gibi) DNS yönetim panelinden yapılır. Genellikle bir A kaydı oluşturulup değer olarak Droplet’in IP adresi girilir. www alt alan adı için de ayrı bir A kaydı eklenmesi önerilir.
DNS değişikliklerinin yayılması birkaç dakikadan birkaç saate kadar sürebilir. Yönlendirmenin tamamlanıp tamamlanmadığı ping alanadi.com komutuyla kontrol edilebilir, komutun çıktısında Droplet’in IP adresi görünmesi gerekiyor.
Adım 5: Nginx Server Block Oluşturma
Alan adı yönlendirmesi tamamlandıktan sonra Nginx üzerinde bu alan adına özel bir server block (sanal host) tanımlanır. Aşağıdaki komutla yeni bir yapılandırma dosyası oluşturulabilir:
sudo nano /etc/nginx/sites-available/alanadi.com
Dosya içine şu temel yapılandırma eklenir:
server {
listen 80;
server_name alanadi.com www.alanadi.com;
root /var/www/alanadi.com/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
Dosya kaydedildikten sonra bu yapılandırmanın etkinleştirilmesi gerekiyor, bu da bir sembolik bağlantı oluşturularak yapılır:
sudo ln -s /etc/nginx/sites-available/alanadi.com /etc/nginx/sites-enabled/
Yapılandırmanın hatasız olduğu şu komutla test edilebilir:
sudo nginx -t
Test başarılı çıktığında Nginx yeniden başlatılarak değişiklikler uygulanır:
sudo systemctl restart nginx
Adım 6: Certbot ile Let’s Encrypt SSL Sertifikası Alma
Alan adı doğru şekilde yönlendirilip Nginx server block’u hazırlandıktan sonra sırada ücretsiz bir SSL sertifikası almak var. Bunun için Certbot kullanılıyor, Let’s Encrypt’in resmi istemcisi. Kurulum şu komutlarla yapılır:
sudo apt install certbot python3-certbot-nginx -y
Kurulum tamamlandıktan sonra sertifika şu komutla alınıp Nginx yapılandırmasına otomatik olarak işlenir:
sudo certbot --nginx -d alanadi.com -d www.alanadi.com
Certbot sürecinde bir e-posta adresi istenir, bu adres sertifika süresi dolmadan önce bilgilendirme almak için kullanılır. Ardından kullanım şartlarının kabul edilmesi istenir. İşlem tamamlandığında Nginx yapılandırması Certbot tarafından güncellenir ve HTTP trafiği otomatik olarak HTTPS’e yönlendirilir.
Sertifikanın doğru şekilde çalıştığı tarayıcıdan https://alanadi.com adresine gidilerek kontrol edilebilir, adres çubuğunda kilit simgesinin görünmesi gerekiyor.
Adım 7: Otomatik Yenileme Kontrolü
Let’s Encrypt sertifikaları 90 gün geçerli oluyor, bu yüzden düzenli olarak yenilenmesi gerekiyor. Certbot kurulumuyla birlikte bu yenileme işlemi için bir systemd timer otomatik olarak oluşturuluyor. Timer’ın aktif olup olmadığı şu komutla kontrol edilebilir:
sudo systemctl status certbot.timer
Yenileme sürecinin sorunsuz çalışıp çalışmadığını görmek için bir deneme çalıştırması yapılabilir:
sudo certbot renew --dry-run
Bu komut gerçek bir yenileme yapmadan sürecin baştan sona sorunsuz işleyip işlemediğini test eder. Herhangi bir hata alınmıyorsa otomatik yenileme mekanizması güvenle bırakılabilir.
Sık Karşılaşılan Sorunlar
Certbot alan adını doğrulayamıyor: Bu genellikle DNS yönlendirmesinin henüz tam olarak yayılmamış olmasından kaynaklanır. ping alanadi.com komutuyla doğru IP’nin döndüğü teyit edildikten sonra işlem tekrar denenmelidir.
80 ve 443 portları kapalı görünüyor: UFW ayarlarının kontrol edilmesi gerekiyor, sudo ufw allow 'Nginx Full' komutu çalıştırılmadan Certbot doğrulama isteğini tamamlayamaz.
Sertifika yenilenmiyor: En sık karşılaşılan sebep, DNS kaydının değişmesi ya da Nginx yapılandırmasında sonradan yapılan bir hatadır. sudo nginx -t komutuyla yapılandırma her zaman kontrol edilebilir.
Sonraki Adımlar
Sunucu artık kendi alan adı üzerinden HTTPS ile erişilebilir durumda. Buradan sonra Nginx üzerinden bir uygulamaya ters proxy yönlendirmesi yapılabilir, birden fazla alan adı için ayrı server block’lar tanımlanabilir ya da statik bir site doğrudan bu sunucu üzerinden yayınlanabilir. Bir sonraki yazıda DigitalOcean’ın yönetilen veritabanı hizmetinin nasıl kurulup bir backend’e bağlandığı anlatılacak.
Kendi sunucunu kurup bu adımları denemek istersen, referans linkim üzerinden kayıt olarak bana destek olabilirsin.
Tüm projelerim ve üzerinde çalıştığım konuları incelemek istersen https://hub.barisgunduz.com/ adresini ziyaret edebilirsin.