Category: Türkçe

Date:

Web, her geçen gün daha tehlikeli oluyor. Son dönemlerde siteme ve sunucularıma aldığım saldırılarda ciddi artış yaşandı. En son Wordpress'teki Revolution Slider eklentisinde oluşan bir sıfırıncı gün güvenlik açığını kullanarak siteme Malware yerleştirmişler. Düzeltene kadar bir sürü vaktimi yedi ve bir miktar veri kaybettim. Zaman zaman da (1-2 ayda bir) sunucumdaki MySQL'in çökmesi sebebiyle sürekli bakım yapmam gerekiyordu. Ben de sitemi statik hale geçirmeye karar verdim.

Öncelikle siteme gelen trafik çoğunlukla Google üzerinden spesifik bir yazıya doğru akıyor. Yani sitemde gezinti çok karmaşık değil. Bu da statik bir yapıya geçmekteki endişelerimi gideriyor.

Dinamik ve Statik Site Nedir?

Dinamik site, verilerin bir veritabanında saklandığı, kullanıcının taleplerine göre bilgilerin bu veritabanından çekilerek sayfanın hazırlanıp sunulduğu bir sitedir. Wordpress, Drupal vs hazır yazılımlar ya da özel yapım yazılımlar buna en uygun örnektir. Bu tür sistemlerde ön yüzde (frontend) HTML/CSS kullanılsa da arkaplanda (backend) PHP, Python, Ruby, Java gibi programlama dilleri çalışmakta, veritabanına sorgu yapıp çıkan sonuçları HTML'in içine gömerek bize cevap dönmektedir.

Statik site ise sadece HTML/CSS/Javascriptten oluşan, isteklere göre farklı şekillere girmeyen, olduğu gibi yanıt veren sitedir. Veritabanı yoktur. Dolayısıyla veritabanının çökmesi ya da hacklenmesi gibi bir sorun yoktur. Sadece dosyaların tutulduğu sunucunun hacklenmesi mesele olabilir. Bunu da Amazon S3 gibi bir hizmet kullanarak çözebilirsiniz.

Amazon S3

Amazon S3, bir dosya saklama hizmetidir. Aynı zamanda statik dosya sunan bir web sunucu olarak da çalışabilir. Yapmanız gereken HTML dosyalarınızı yüklemek ve Statik Web Hosting istiyorum seçeneğini işaretlemek. Size yoursite.com.s3-website-us-west-1.amazonaws.com gibi bir adres verecek. Eğer kendi alan adınızı kullanmak isterseniz Amazon Route 53 hizmetini kullanabilirsiniz. Yalnız bu adresteki tarifleri uygularsanız "sitem.com adresini kullanıyorum, www.sitem.com'a gelen talepleri sitem.com'a yönlendir" demiş olursunuz. Ben bunun tam tersini yaptım.

Amazon S3 ve Route 53'ün toplamı, günlük 50-100 ziyaretçili bir site için aylık $1 gibi bir masraf getirir. Sunucu kiralasanız wordpress için en az $10, statik için en az $5 tutar.

Statik Site Oluşturucu

Birkaç örnek: Hyde, Jekyll, Pelican. Sitemde tercihim Pelican.

Statik Site Oluşturucu araçlara iki şey sunarsınız: şablon ve içerik. Şablon, Jinja2 gibi bir şablon diliyle yazılmış birkaç HTML dosyasıdır. İçerik ise Markdown ya da reStructured formatında yazılmış düz metindir. Statik site oluşturucu çevrimdışı olarak her sayfanın markdown metni alır, şablonun içine yerleştirir ve her sayfa için bir HTML dosyası oluşturur. Bu işlemi kendi bilgisayarınızda yaparsınız. Tüm sayfalar için HTML dosyaları hazırlanınca sunucunuza (S3) yüklersiniz ve sitenizi sunar. Yani ziyaretçinin talebine göre anlık sayfa hazırlamak yerine her şeyi baştan halleder yüklersiniz.

Şablon Dili

Neden bir şablon dili? Çok sayfalı bir siteniz varsa bu sayfaların ortak kısımları mevcuttur (tepe, yan ve alt kısımlar). Her sayfada bunları tekrar tekrar kodlamak yerine Jinja2 gibi bir şablon dili kullanmak ve kalıtım (inheritance) özelliğini kullanmak işinizi kolaylaştırır. Her sayfada başlık kodunu yazmak yerine başlık kodunu base.html'e koyup post.html'in içerisinde kalıtım kullanırsınız:

    {% extends 'base.html' %}
    {% block content %}
        {{ article.content }}
    {% endblock content %}

Benzer şablon dilleri MVC ve MVT mimarisine sahip backend çatılarında (Django, Flask, RoR) da kullanılmakta.

İçerik

Markdown ya da reStructuredText en popüler formatlar. Bildiğiniz metin dosyası, kendine göre kuralları mevcut. İçeriğinizin taşınabilir (portable) ve dönüştürülebilir olması açısından çok faydalı.

Nasıl yapacağım?

Kuş bakışı baktığımızda süreç şu şekilde:

Her birisinin kendi içinde detayları var. Bunları da okuyup öğrenmek gerekiyor.

Wordpress'ten Göç

Eğer mevcutta Wordpress tarzı bir siteniz varsa yazıları XML olarak dışa aktarıp pelican-import ile markdown formatına çevirebilirsiniz. Eğer benim karşılaştığım gibi XML parsing sorunu yaşarsanız jekyll-exporter tarzı bir eklenti kullanarak dışa aktarım sağlayabilirsiniz.

Deployment

Dosyaları sunucuya yükleme prosedürü (deployment) hakkında önerebileceğim bir yöntem, tüm proje dosyalarını ve çıktı siteyi bitbucket ya da github tarzı bir sitede tutmak, dploy.io tarzı bir hizmet ile her git push yaptığınızda çıktı sitenizin Amazon S3'ye yüklenmesini sağlamak. Ya da s3cmd programı ile doğrudan S3'e yüklemeyi deneyebilirsiniz. Bu konuda yazdığım yazıyı da takip edebilirsiniz.


Share: FacebookGoogle+Email


comments powered by Disqus