CDN server kurulumu (nginx) statik dosyalar icin ayri server 3

Günümüzde bir çok cdn server hizmeti satan firma bulunuyor. Bunların ücretleride bir o kadar maddi durumunuzu zorlayabilir düzeyde olabiliyor. Mantık olarak bugün anlatacağım konu sitenizdeki statik dosyaları farklı bir sunucuda tutarak ana server üzerindeki yükü azaltmak, tepki süresini artırmak olacaktır.

CDN server mantığı istek yapan kullanıcıya en yakın serverdan statik dosyaları sunmak olarak adlandırabiliriz. Burda anlatacağım konu tek serverdan oluşacaktır ancak amacımız statik dosyaları farklı bir sunucuda barındırmak olduğundan yeterli olacaktır.

Neler anlatılacak?

  • Nginx kurulumu (sadece nginx kurulacak, apache yada php ile işimiz olmayacak çünkü)
  • Nginx site ekleme ve online test
  • ftp programi kurulumu
  • ftp erisim kontrolu
  • cdn server online test
  • php + ftp bağlantısı ile CDN server’a dosya gönderme
  • WordPress konu yayınlanınca CDN server’a dosya gönderme

Başlamadan önce

  • Epel Deposu Ekleme – RHEL/CentOS 4/5/6/7 deposunu kurun arkadaslar.
  • Sunucunun IP adresini cdn için kullanacağınız ip adresine yönlendirin. Ben bunun için subdomain kullanıyorum. DNS yöneticinizden A kaydı eklerken isime subdomaini, ip adresi kısmınada CDN için kullanacağımız sunucunun IP adresini girip kaydedin.

Başlayalım…


 

1 -Nginx kurulumu

SSH terminalinden sunucuya bağlanın ve aşağıdaki kodu çalıştırın.

Kurulumdan sonra nginx e restart atalım ve çalıştıralım. Ayrıca sunucu reboot edildikten sonra otomatik açılması için başlangıç programlarına ekleyelim.

Bu işlemden sonra cdn domainine girdiğinizde sitenizin açılıyor olması ve aşağıdaki nginx sayfasının geliyor olması gerekiyor, gelmiyorsa bir yerde yanlış yaptınız demektir:

kuaza cdn test


 

2 – Websitesi icin kullanici ekleme

Websitesi ekleme anlatiminda kullanacagim terimleri yaziyorum, sizler bu terimleri kendinize gore duzenleyerek sitenizi ekleyebilirsiniz..

Kullanici ismi ve grubu: cdn_test (siz bunu kendi sitenizin ismine yakin bir kelime ile kullanabilirsiniz. Ornegin kuaza.com domaini icin kuaza ismini kullanmak gibi)

Domain: http://cdn_test.kuaza.com (kisa bir sure online olacak, sonrasinda test sunucusunu iptal edecegim icin calismayabilir)

– Kullanici/grup ekleme –

Kullanici icin sifre belirleme

Sifre girmenizi isteyecek, iki kere ayni sifreyi girin ve kaydedin.

Bu islemden sonra /home klasoru icerisinde cdn_test ismine bir klasor olusacak. Bu klasorun chmod ayarini ve kullanici/grup ayarlarini duzenlemek gerekli, aksi durumda yetki kontrolu sebebi ile sitemiz acilmayacak, hata mesaji ile karsilasacaksiniz.

– Chmod ayarini degistirme –

– Site dosyalari icin klasor olusturalim –

Sitenizin dosyalarini barindiracaginiz klasoru olusturacagiz simdi. Standart ve uzun yillardir default gelen ismi: public_html, ancak siz bunu istediginiz gibi degistirerek kullanabilirsiniz. Hemde guvenlik acisindan iyi olabilir 😉

– Site klasorunun kullanici/grup ayarlarini duzeltme –

Bu islemlerden sonra sitemizin dosyalari ve kullanici ayarlari yapilmis oldu. Son bir islem kaldi, oda Asil isi yapacak olan Nginx tarafinda sitemizin konfigurasyonunu yapmak. Oda sonraki bolumlerde..

– Kullanıcı için ssh giriş yetkisini kaldırma –

Oluşturduğumuz kullanıcı ismi ve şifresi ile ssh giriş yetkisi otomatik oluşuyor. Bu yetkiyi güvenliğiniz kaldırmanızı öneririm, aşağıdaki şekilde kullanıcının ssh erişim yetkisini iptal etmiş oluruz:


 

3 – Nginx Site ekleme

Bu islemden sonra sitemiz acilir olacak. Tek yapmamiz gereken asagidaki adimlari izlemek..

– Site konfigurasyon dosyasi olusturma –

ssh terminalinde calistigimiz icin nano programi ile dosya acip, ayarlarimizi kaydedip cikacagiz. nano programi yoksa kurun bi zahmet 🙂

Acilan ekrana asagidaki ayarlari kaydedelim. Ama oncesinde bir text dosyasinda gerekli alanlari duzeltin, sonrasinda terminal ekraninda duzeltmek biraz zamaninizi alabilir:

Konfigurasyon dosyasinda degiseceginiz 2 yer var bunlardan birisi site dosyalarinin oldugu ana klasor ismi: cdn_test, digeride siteye ulasilacak domain ismi: http://cdn_test.kuaza.com

Bu islemden sonra ctrl + x | y + enter yaptiginizda ayarlari kaydedip dosyadan cikacaktir.

Nginx sunucusuna restart atarak ayarlarin aktif olmasini saglayalim:

Ve artik sitemize ulasilabilir, ancak dosya olmadigi icin siteye girdigimizde 403 hatasi verebilir.


 

Ftp server kurulumu

Sonraki işlem ftp kurulumu. Buna neden ihtiyacımız var: sitemizdeki yüklenen yeni statik dosyaları cdn serverimiza yüklemek için kullanacağız.

Bu anlatımı ayrı bir sayfada gerçekleştirdim, ordan bakıp yaparak tekrar anlatıma devam edebilirsiniz: Centos ftp server kurulumu (vsftpd) ftp hesabı oluşturma

Bu işlemden sonra ftp bağlanıp bir resim yüklüyorum test etmek için. Çalıştığını görüyoruz ve işimiz nerdeyse bitmiş oluyor.

kuaza cdn test resim

CDN server hazır

Artık CDN sunucumuz hazır, tek yapmamız gereken sitemizdeki statik dosyaları cdn servera ftp ile bağlanarak yüklemek. Bunu root yetkisi ile daha hızlı gerçekleştirmek isterseniz burdaki konuyu takip edin: RSYNC ile sunucudan dosya yedekleme, gönderme, alma işlemleri!

CDN server oluşturduğunuzda sitenizdeki statik dosyaların linklerinide değiştirmeniz gerekecek. Bu hazır sistemler için kolay olabilir ancak bazı sistemler için zahmetli olacaktır. Buda sizin bilginize yada yazılımı hazırlayan kişinin yeteneklerine kalmış bir konu.


 

CDN Server’a Dosya yükleme (php + ftp)

Sitenizdeki bütün dosyaları CDN serveriniza eklediniz, ancak her yeni yüklediğiniz dosyayı tek tek cdn server’a yüklemek eziyet olacaktır. Ben bunun için bir fonksiyon hazırladım. Kendi yazılımıza uygulayarak yüklediğiniz her statik dosyayı otomatik CDN server’iniza gönderebilirsiniz.

Yukarıdaki kod yapısı ile kolayca sisteminize eklediğiniz bir dosyayı otomatik olarak oluşturduğunuz CDN server’iniza yükleyebilirsiniz. Kendinize göre düzenlemeniz gereken alanları kod yapısı içerisinde açıklamaya çalıştım. Takıldığınız konuları konu altından belirtirseniz yardımcı olmaya çalışırım.


 

WORDPRESS CDN server’a dosya gönderme! (otomatik)

Suanki kuaza.com sisteminde de kullandığım bu kodları yararı olacağını ve ihtiyaç sahiplerininde faydalanacağı düşüncesi ile paylaşıyorum. Bu kod betiğini hazırlamam kolay olmadı tabi 😉

Aşağıdaki kodu herhangi bir eklentinizin yada tema dosyanızdaki function.php dosyasının sonuna eklerseniz, konu yazarken yüklediğiniz resimleri, konuyu yayınladığınızda yada onizleme için açtığınızda otomatik olarak CDN server’iniza gönderecek.

Yukardaki kod betiğinide kendinize göre düzenlemeniz gerekmekte, ben gerekli açıklamaları yaptım, anlamadığınız yerleri sorarsanız çözmeye çalışırız.

Bu konuda basit bir eklenti hazırlayabilirim ilerde…

Ben kuaza.com da WP Super cache eklentisini kullanıyorum. Bu eklentinin CDN özelliği bulunuyor, bunu açtım ve yukardaki şekilde ayrı bir sunucu (vds) oluşturup wordpress için belirttiğim kod betiğini kullandım. suan sorunsuz şekilde Yeni yüklenen resimler kolayca CDN server’imiza gönderiliyor. Tavsiye ettiğim ve kullanımının yarar sağlayacağını düşündüğüm bir konu olduğu için okuyucularımızla paylaşma ihtiyacı duydum. 1 günümü yedi bitirdi ama ileriye dönük herzaman kontrol edeceğimiz bir çalışma oldu.

Hatamız olduysa affola, lütfen bana bildirin, konuyu o yönde güncelleyeceğim.

3 Yorumlar

  1. Merhaba

    Türkiye için ufak çapta bir CDN ağı oluşturmak istiyorum. DNS tabanlı. Sunucular da istanbul, ankara ve doğu kısımda olmak üzere en fazla 3 adet. Acaba nginx + FreeBsd yeterli olur mu ilk etapta? Ticari bir amacım yok. Amaç tecrübe, eğitim ve faydalı olmak.

    Detaylı yazı için sonsuz teşekkürler.

    • Bence yeterli olur, sonucda isin yukunu nginx ustlenecek, isletim sistemini minumum duzeyde tutarak donanimindan daha fazla yararlanabilirsiniz. Sunucularin birbiri ile iletisimde kalmasinida saglayabilirsiniz, boylece cdn amacina ulasmis olur, birinde sorun olursa diger sunucudan veri gosterecek sekilde yani. Net hatirlamiyorum ama upstrim nginx ayarini arastirmani oneririm.

      Kolay gelsin.

Bir Cevap Yazın