Ubuntu 16.04’ten FreeBSD’ye Geçiş: Neden ve Nasıl?
On yılı aşkın süredir bir Digital Ocean VPS üzerinde, New York City’de barındırılan ve Ubuntu 16.04 LTS ile çalışan bir blogun hikayesi, güncel olmayan bir sistemin risklerini ve modern bir alternatife geçişin faydalarını gözler önüne seriyor. Yazar, beş yıldır desteği sona ermiş olan bu LTS sürümünden, yarı fiyatına çok daha iyi performans sunan bir Hetzner sanal makinesine geçiş yaptı. Bu geçiş sadece maliyet ve donanım avantajlarıyla kalmadı, aynı zamanda yazarın tüm web sitesi altyapısını FreeBSD’ye taşıma meydan okumasını da içerdi. Bu makale, FreeBSD Jails ve Bastille ile ilginç site yükü benchmark testlerini de içeren bu süreci detaylandırıyor.
Motivasyon: Neden Güncellemek Gerekti?
Ubuntu gibi işletim sistemlerinde desteği sona eren sürümler, güvenlik güncellemelerini ve paket depolarını kaybeder. Bu durum, sunucuyu güvenlik açıkları karşısında savunmasız bırakır. Yazarın deneyimine göre, eski bir WordPress bloğunun kumar sitesi linkleriyle doldurulması gibi kötü niyetli saldırılar yaşanmıştır. Bu güvenlik endişeleri, sistemin güncellenmesi için en önemli motivasyon kaynaklarından biri oldu.
Eski Digital Ocean sunucusu, 2GB RAM, bir vCPU, 50GB disk ve aylık 2TB trafik ile aylık 13 dolar maliyete sahipti. Karşılaştırma yapmak gerekirse, Hetzner’ın en uygun fiyatlı sunucusu (3.56 Euro/ay), eski sunucunun iki katı bellek ve CPU sunuyordu. Yazar, siteleri için biraz ‘abartılı’ sayılabilecek olsa da, aylık 6 Euro’dan daha az bir fiyata daha güçlü bir Hetzner kurulumunu tercih etti.
Eski Kurulum: Basit Ama Dayanıklı
Yazarın eski sunucusu, bu blog da dahil olmak üzere birkaç siteye ev sahipliği yapıyordu. Aylık birkaç bin sayfa görüntülemeden fazlasını almayan bu siteler çoğunlukla statik içerik sunuyordu. Kurulum basitti: her şey Nginx/1.10.3 ile statik olarak sunuluyordu. Hugo gibi statik site üreteçleri ve LaTeX süitleri apt veya snap aracılığıyla kuruluydu. Blog güncelleme süreci, yerel yazma, depoya gönderme, sunucuya SSH ile bağlanma, güncellemeleri çekme ve Hugo’yu çalıştırmaktan ibaretti. Sistem dört yıl boyunca kesintisiz çalışarak 1491 günlük bir çalışma süresi kaydetti.
Neden FreeBSD? Jails ve ZFS’in Gücü
Yazarın FreeBSD’ye geçiş motivasyonlarından biri, farklı bir sistem deneyimlemekti. FreeBSD, entegre tasarımı, güvenliği ve özellikle de Jails özelliği ile övgü toplar. Jails, Docker’dan çok daha eski, 25 yılı aşkın süredir FreeBSD’nin bir parçası olan bir sanallaştırma/konteynerleştirme biçimidir. Docker’ın programları paketlemeye daha uygun ve geçici doğasına karşın, Jails daha çok mini-VM’ler gibi davranır, ancak aynı çekirdeği paylaşır ve kalıcı alt sistemler oluşturur.
FreeBSD’nin dosya sistemi olan ZFS de önemli bir artıdır. Veri bütünlüğü ve anlık görüntü yetenekleriyle Btrfs’e benzer ancak çok daha olgundur. ZFS ile sık sık anlık görüntüler almak, VPS sağlayıcısının yedekleme sistemlerine ek ücret ödemeden kendi yedekleme çözümünüzü oluşturmanızı sağlar. Yazar, her sitesi için ayrı bir Jail ve bu Jails’i dış dünyaya bağlayan bir ana Nginx (yeni durumda Caddy) Jail’i kurmayı hedefledi. Bu yaklaşım, bir Jail’in tehlikeye girmesi durumunda kolayca yok edilip yeniden oluşturulabilmesini sağlıyor.
Hetzner VPS Kurulumu ve FreeBSD Yükleme
Hetzner, varsayılan olarak FreeBSD imajları sunmasa da, bir ISO imajı aracılığıyla kolayca kurulabilir. Yazar, Hetzner konsolundan FreeBSD 14.3 ISO’sunu bağlayarak ve resmi kurulum videosunu takip ederek sistemi hızlıca kurdu.
Bastille ile Jails Yönetimi
Jails’i manuel olarak yönetmek karmaşık olabileceğinden, yazar Bastille adlı bir sistem kullanmayı tercih etti. Bastille, bastille list, bastille create, bastille console gibi komutlarla Jails yönetimini basitleştirir. Kurulumu pkg install bastille ve sysrc bastille_enable="YES" komutlarıyla kolayca yapılır.
Yeni Sunucu Mimarisi: Caddy ve Jail Tabanlı Siteler
Yeni altyapının temelinde, tüm siteleri sunmak ve SSL sertifikalarını yönetmek için Caddy çalıştıran bir Jail bulunuyor. Her site ise kendi ayrı Jail’inde barındırılıyor. Bu Jails’ler, Caddy Jail’i aracılığıyla dış dünyaya açılıyor. İlk adım olarak, dahili bir sanal ağ adaptörü (bastille0) oluşturuldu ve Jails bu ağ üzerinde çalışacak şekilde yapılandırıldı. İnternet erişimi ve port yönlendirmesi için FreeBSD’nin güvenlik duvarı olan PF (Packet Filter) kullanıldı. HTTP/HTTPS trafiği (port 80, 443), Caddy sunucusunun IP adresi olan 10.0.0.5‘e yönlendirildi.
İlk Jail: Caddy Sunucusu
Caddy’nin otomatik SSL sertifikası yenileme özelliği, Nginx’in Certbot ile manuel yenileme zorluğunu ortadan kaldırıyor. Caddy Jail’i bastille create caddy 14.3-RELEASE 10.0.0.5 bastille0 komutuyla oluşturuldu. Caddy, pkg install caddy ile kuruldu ve yapılandırması /usr/local/etc/caddy/Caddyfile dosyasında yapıldı. Konfigürasyon dosyasına ana sistemden erişim için dizin bağlama (mount) işlemi de yapıldı.
İlk Site: es.cro.to’nun Dağıtımı
Yazarın eski sunucusunda barındırdığı es.cro.to adlı statik site, yeni sisteme taşınan ilk örnek oldu. Bu site için www/nginx şablonu kullanılarak ayrı bir Jail (10.0.0.11 IP’siyle) oluşturuldu. Ana sistemdeki site dizini Jail’e salt okunur olarak bağlandı ve deploy.sh betiği ile sitenin içeriği Jail içindeki Nginx’in servis dizinine kopyalandı. Caddy yapılandırmasına, es.cro.to alan adını bu Jail’in IP’sine yönlendiren basit bir reverse_proxy kuralı eklendi.
Bu Blogun Dağıtımı
Hugo ile oluşturulan blog da benzer adımlarla dağıtıldı. Yeni bir Jail (10.0.0.12 IP’siyle) oluşturuldu, Hugo Jail’e kuruldu ve blogun içeriği ana sistemden Jail’e bağlandı. Blogun dağıtım betiği, Hugo’yu çalıştırarak statik dosyaları Nginx’in servis dizinine kopyalayacak şekilde ayarlandı. Caddy yapılandırması güncellenerek blogun yeni sunucu üzerinde yayına başlaması sağlandı.
Sunucu Performans Karşılaştırmaları
Yazar, yeni sunucuya geçiş yapmadan önce performans testleri yapmak istedi. GTMetrix, Pingdom ve WebPageTest gibi araçlar başlangıçta sadece gecikme süresinde farklılık gösterdi. Daha derinlemesine testler için wrk ve hey gibi HTTP yük test araçları kullanıldı. Aynı veri merkezinden yapılan wrk testlerinde, eski sunucu saniyede 833 istek alırken, yeni sunucu 12.260 isteği işleyebildi; gecikme süreleri ise 89ms’den 6ms’e düştü. Ancak bu testin ‘adil olmadığı’ kabul edildi.
Vultr VPS ile Global Benchmark Testleri
Daha gerçekçi bir karşılaştırma için, yazar Vultr’da Londra, São Paulo, Silikon Vadisi ve Tokyo’da ucuz Fedora VM’leri kurdu. Ağır yük altında (1 milyon istek, 10.000 eşzamanlı istek) yapılan hey testleri sırasında, FreeBSD sunucusunun başlangıçta kern.ipc.somaxconn değerinin düşük olması nedeniyle hata verdiği tespit edildi ve bu değer 16384‘e yükseltildi. Test sonuçları şaşırtıcıydı:
- Eski sunucu isteklerin yalnızca %7’sini başarıyla tamamlarken, FreeBSD sunucusu %94 başarı oranı gösterdi.
- Yeni sunucu, saniyedeki istek sayısında eski sunucuya göre en az 3 kat, en fazla 11 kat daha iyi performans sergiledi.
- Gecikme süreleri açısından yeni sunucu daha doğrusal ve tahmin edilebilir bir büyüme gösterdi. Kullanıcıların %90’ı ana sayfayı 3.5 saniyeden daha kısa sürede yükleyebildi.
Bu performans farklılıklarının doğrudan seçilen teknoloji yığınıyla ilgili olmayabileceği, daha çok eski Ubuntu sistemindeki yanlış yapılandırmalar ve Hetzner VPS’in 4 CPU çekirdeğine sahip olması (Digital Ocean’ın 1 çekirdeğine kıyasla) gibi donanım avantajlarından kaynaklanabileceği belirtildi. Ancak, elde edilen sonuçlar yine de oldukça etkileyiciydi.
Sonuç ve Öğrenilenler
Performans testlerinin bazı soruları yanıtsız bırakmasına rağmen, yazar sonuçlardan çok memnundu ve DNS kayıtlarını güncelleyerek blogunu resmi olarak yeni FreeBSD makinesine taşıdı. Bir FreeBSD sitesi barındırma makinesi kurmanın sanıldığı kadar karmaşık olmadığı, aksine eğlenceli ve öğretici bir deneyim olduğu ortaya çıktı.
- Ubuntu sunucusu on yıl boyunca, son dört yılını kesintisiz çalışarak, oldukça sağlam bir performans sergiledi.
- FreeBSD’yi yapılandırmak yazarın düşündüğünden daha kolaydı ve merkezi sistem yapılandırma yaklaşımı beğenildi.
- Kendi blogunuzu barındırmak, oyun geliştiricilerin bildiğinden çok daha fazla ağ bilgisi gerektirebilir.
- Yeni bir sistem öğrenmek çok eğlenceliydi ve bir sonraki adımın OpenBSD veya NetBSD olabileceği ima edildi.
Yazar, tüm bu çabanın çoğu trafiğin yapay zeka sistemlerinden gelmesi nedeniyle ‘faydasız’ olabileceğine dair mizahi bir yorumla makalesini sonlandırdı.

