YAZILIM

Ubuntu Droplet Üzerine Nginx Kurulumu ve Let’s Encrypt ile SSL

Ubuntu Droplet Üzerine Nginx Kurulumu ve Let’s Encrypt ile SSL yazısının kapak görseli

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.

Web ve mobil teknolojilere ilgi duyuyorum. Yaklaşık 14 yıldır web geliştirme ve internet reklamcılığı üzerinde çalışıyorum. Web yazılım teknolojileri ve yönetimi konusunda uzmanım. Birçok şirkete teknoloji ve reklamcılık danışmanlığı verdim. Hâlâ bazılarına destek vermeye devam ediyorum. Kendi projelerimle ilgili bazı çalışmalarım var. Çoğu içerik üreticiliği ile ilgili. Projelerimin hepsi Gündüz Medya markası altında toplanmıştır.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir