WordPress sitelerinizin sayfalarını tamamen html olarak yedekleyerek herhangi bir yüklenmede, saldırıda yada sunucuda oluşan arızalarda sorunsuz şekilde online kalmasını sağlamak amaçlı senaryomuzu örnekleri ile hayata geçiriyoruz.

Senaryomuz: Ayrı bir yedek sunucumuz olur (vps, vds, dedicaded, cloud v.s) bu sunucumuzda sadece işletim sistemi Centos ve nginx kurulur. WordPress sitemizin wp super cache eklentisi aracılığı ile oluşturulan cache dosyalarını bu yedek sunucusuna taşırız. Ana sunucuda oluşan herhangi bir problemde yada saldırı anında sitemizin online kalmasını sağlamak için DNS leri bu yedek sunucusuna yönlendirerek herşey yolundaymış gibi sitemizin yayında kalmasını sağlayacağız. Anlık NS ip lerini değiştirmek içinde cloudflare kullanacağız, ancak dengi bir yerde kullanabilirsiniz. Anlık ana sunucumuza gelen ziyaretçiler, anında İP değişikliği ile yedek sunucumuza yönlendirilirler ve burdaki HTML dosyalar normal şekilde ziyaretçiye gösterilir.

Şimdi cloudflare normal şartlarda sitemizdeki sayfaların yedeklerini alır ve sunucuya ulaşamadığında bunları gösterir ama çok yetersiz kalmakta ve bu özellik erişim sorunu başladığında kullanılabilmekte, belli bir süre sonra artık cachede yer alan html dosyaları gösterilmemeye başlayacak ve hit kaybedeceksiniz. Amacımız böyle olası problemlerde sitemizin yayına devam etmesini sağlamaktır.

İhtiyacımız olacaklar listesi:

  1. Cloudflare: Hem cdn hemde DNS yönetimi icin kullanacağız.
  2. Yedek sunucu: Ana sunucudan ayrı bir sunucu. Dedicaded, Vds, Vps yada cloud. Sunucuda centos kurulu olmalı, çünkü anlatımı buna göre yapacağım.
  3. Wp Super cache eklentisi: Ana sunucudaki sitemizde kurulu cache eklentisi
  4. CDN sunucusu: Bunu daha verimli bir site deneyimi için kullanabilirsiniz ama zorunlu değil. Ekstra bir sunucu almanıza gerek yok, yedek sunucusu içerisinde cdn.domain.com şeklinde bir domain tanımlayarak ana sunucudaki statik dosyalar içinde kullanabilirsiniz. bu konuda dökümanda bir anlatım yapmayacağım gerek yok, ayrı olarak bunu sitenizde kullanırsanız faydalı olabilir.

Senaryomuzun çalışma mantığı:

img_1964

Başlıyoruz:

1 – WordPress Eklentisini ayarlayalım

İlk olarak wodpress sitemiz için WP super cache eklentisini kuralım, zaten kurulu ise bu adımı geçebilirsiniz. Sonrasında Ayarlarını aşağıdaki resimdeki gibi yapın:

screenshot-kuaza-com-2016-11-23-12-42-14

Çöp toplama ayarlarınızıda yapın, yukardaki resimde işaretlediğim 2. kısıma girin ve ayarları aşağıdaki gibi yapıp kaydedin:

wp-super-cache-garbage-cop-toplama-onyukleme-ayarlari

Bu işlemlerden sonra wordpress ile işimiz bitmiş sayılır. Sonraki adıma geçelim.

2 – Yedek html (cdn) sunucusunu hazırlayalım

Çalışmalarımızın en can alıcı noktası sitemizin statik yani html dosyalarını yedekleyeceğimiz bir sunucunun olmasıdır. Eğer yoksa bu çalışmanın bir faydası olmayacaktır size, çünkü amacımız ana sunucunun erişim sorunu yaşadığı durumlarda yedek sunucu ile yayın yapmaya devam etmektir. Ayrıca aşırı yoğunlukta sunucu kitlenebilir, bu gibi durumlarda da yedek html sunucumuz ana sunucunun üzerindeki yükü almak için kullanılabilir.

Centos kurulu bir sunucuyu yapılandırmak için burdaki konuya: CDN server kurulumu (nginx) statik dosyalar icin ayri server girerek nginx kurulumunu ve konfigürasyonlarını tamamlayın (ftp kurulumu ve sonrasındakileri yapmayın, lazım değil). Sonrasında yedeklerini barındıracağınız domain için gerekli kullanıcı ve nginx yapılandırmasını yapın, konuda nasıl yapılacağı anlatılmış. Sonrasında tek yapmanız gereken nginx site konfigürasyon dosyanızı aşağıdaki ile değiştirmek olacaktır:

Bu kısmı sunucunuzdaki domainin yerine göre değiştirin:

Sonrasında kaydedin ve nginx e restart atın:

3 – Ana sunucumuzdaki sitemiz her 10 dk da bir yedek sunucumuza yedeklensin

Bu işlem senaryomuzun en can alıcı noktalarından, çünkü sitenizdeki sayfaları ziyaret eden kullanıcılar sayesinde bu sayfaların html versiyonları oluşur. Bu dosyaların silinmeyeden (zaman aşımı) yada problem olmadan yedeklenmesi gerekir. Böylece anlık problemlerde en son ana sayfanız yada son konularınızda yedek sunucusundan yayın yapabilecektir. Bu işlemi otomatikleştireceğiz. Aşağıdaki komutu çalıştırın: Bu işlemler yedek sunucusunda yapılacak.

Dosyanın ismini farklı yapabilirsiniz, örnek kuaza_guncelle.sh yada google_guncelle.sh

Sonrasında aşağıdaki kodları kendinize göre düzenleyerek içerisine ekleyin:

2. kısımda yedek sunucusunu kurmuştuk ve kullanıcı eklemiş olamanız gerekiyor, useradd ile eklediğiniz kullanıcı ismini yukarıdaki kod da DOMAİN_KULLANICI alanı ile değiştirin.

Diğer kısımlar zaten bellidir nasıl değiştireceğinizi v.s detaylara girmiyorum, kaydedip çıkın. Ssh ile açıyorsanız: ctrl + x ———-> y ——–> enter ile çıkabilirsiniz.

UYARI: sshpass uygulaması kurulu değil ise burdaki konudan kurulumu yapın mutlaka yoksa sh kodlarımız çalışmayacaktır.

3.1 – Crontab ile belirlediğimiz dakikalarda yedekleme yapılsın:

Cronjob ile belirleyeceğimiz saatlerde yada dakikalarda ana sunucunun yedeklenmesini sağlayacağız. Böylece yedek sunucumuz her an çalışmaya hazır olacak. Ancak siteniz çok fazla güncellenmiyorsa saat aralıklarını değiştirebilirsiniz. Örnek haftada bir yeni konu giriliyorsa yedeklemeyi haftada bir yapabilirsiniz yada 2 günde bir. Aşağıdaki talimatları takip edin:

ssh ile aşgidaki komutu çalıştırın:

i harfine bazın ve yazma alanı açılsın. Sonrasında eğer daha önce kayıtlı şeyler varsa en alta gelerek aşağıdaki kodu ekleyin:

Yukarıdaki ayar her 10dk da bir rsync dosyamızı çalıştırmasını söylüyor. Böylece sitemiz 10dk da bir güncellenir. Farklı saat yada zaman aralıkları ile değiştirmek için cronjob konumuzu inceleyebilirsiniz.

Kaydedip çıkmak için sırası ile: esc —-> :wq —-> enter yapıp çıkın.

4 – Cloudflare kullanmaya başlayın:

Artık bir çok websitesi cloudflare kullanıyor ancak kullanmayanlarda oluyor eğer siz kullanmayanlardansanız bir an önce cloudflare ye girerek sitenizi ekleyin ve domain NS lerini cloudflareye yönlendirin. Kurulum çok basit, sırayla önce cloudflare.com sitesine girip üye oluyorsunuz, site ekleme kısmından domaini yazıp gönderiyorsunuz, sonraki ayarlar standart, takip etmeniz yeterli.

En son kısımda sizden domaininizin NS lerini kendilerinki ile değiştirmenizi isteyecek, bunu yaptıktan sonra artık içerdesiniz demektir. Aşağıdaki videoda hızlı bir kuruluma göz atabilirsiniz:

Sitenizde ziyaretçilerin çok az olduğu bir saatde, genelde gece oluyor cloudflare DNS ayarlarından ana domain İP sini, yedek sunucu İP si ile değiştirin ve çalışıp çalışmadığına bakın (siteninz açılıyor mu?). Bu kontrolün durumuna göre eksikleri, gedikleri, problemleri konu altından yorum olarak yazın ivedilikle yardımcı olmaya çalışırım size. Eğer siteniz çalışıyorsa yüzünüzde bir tebessüm görmek istiyorum.

Örnek İP değişikliği için aşağıdaki resime bakabilirsiniz:

screenshot-www-cloudflare-com-2016-11-23-14-08-27

Ve bir konumuzun daha sonuna geldik, çoğu şeyi kafadan yaptığımdan unuttuğum yada hata yaptığım birşey olursa sevecen bir şekilde bana iletmenizi rica ediyorum. Böyle değerli bir konuyu güncellemek için emin olun zaman bulacağım.

Hazır konusu açılmışken, bu dokümanda anlattığım senaryoyu hali hazırda kuaza.com içinde kullanıyorum. Örnek bir sayfanın yedek html versiyonunu görmek isterseniz sayfanın başına html.kuaza.com koyarak bakabilirsiniz. Örnek güzel sözler sayfasının yedeklenmiş ayrı bir sunucudaki html versiyonunu görmek için aşağıdaki şekilde giriş yapın:

Giriş yaptığınızda sayfa yedeklenmiş sunucudan gösterilir, ancak dikkatinizden kaçmasın, linkler suanki ana sunucudaki gibi olduğu için herhangi bir sayfaya girerseniz ana sunucudan sayfayı görmeye başlarsınız. Bu önemli değil, nasılsa İP değiştiğimizde linkler aynı olacak.

Mobil konusunada değinmek istiyorum arkadaşlar, ana sitenize mobil ile girenler içinde ayrı olarak sayfanın mobil versiyonu yedeklenir. Bu mobil versiyonlu html dosyasının gösterimide yedek sunucudan yapılabilmekte. Konuda verdiğim nginx site konfigürasyon dosyasını ellemeden kullanmanız yeterli olacaktır. Böylece mobil için ayrı tasarım kullanan sitelerde yedekden çekilen html versiyonu da aynı şekilde mobil olarak gösterilecektir.

Hmmm, atladığım bir şey var mı ? hmm sanırım yok. Saygılar.

2 Yorumlar

Bir Cevap Yazın