Django İle Sunucuya Taşınma

Sonunda taşınma işi bitti! Evet arkadaşlar sorunları halledip sistemimi tamamen sunucuya taşıdım. İlk django sitem nysera.net artık açık ama test yayınında diye not düşüyorum! Duyurusunu şimdiye kadar yapmamıştım çünkü tüm problemleri halledememiştim lanet bir satırın sonuna “/” işaretini koymayı unuttuğum için 10 sayfa hata kaydını okumak zorunda kaldım. Baştan daha dikkatli okusaydım bu sorunu yaşamayacaktım hatalara bakıyordum “mediaccs” diye bir şey var dikkatimi çektide anca fark ettim.

Django’yu Ubuntu kurulu bir sunucu üzerinde Emre Yılmaz‘ın tavsiyesi ile apache ve mod_wsgi ile çalıştırıyorum. Aslında çoğu sitede mod_python örneği gösterildiği için onu kullanacaktım ama Emre’nin uyarısıyla mod_wsgi’a geçtim. Kendi hatalarımda dışında gayet memnunum.

Neyse mod_wsgi kullanmak için bu dökümanı tavsiye ederim.

Temel olarak kaynak kodlarınız arasına django.wsgi isimli bir dosya ekliyorsunuz sonra apache de confing dosyanıza bir iki ekle site hazır hale geliyor. Fazla uğraştıracak bir kısmı yok ama ben admin medya dosyalarının adresini düzgün yazmamışım. Öncelike ilk hata dökümanın tekinden direkt kopyalamam olmuştu. Bu Linux’a ne kadar alışık olduğunuzla alakalı bir şey hiç aklıma gelmemişti kütüphanenin orada olmayabileceği, sonra kendim arayıp doğru dizini buldum. Belki de bilerek yanlış yazmışlardı doğrusunu öğrenmemiz için… /usr/lib/ altına bakmanızı tavsiye ederim. Sonra bu konumu yazarken satırın sonuna “/” eklemeyi unutmayın derim. Apache’yi yeniden başlatırken bir uyarı vermiyor ama sitenizin kayıtlarına baktığınızda uzun bir listeyle karşılaşıyorsunuz^^

Bir başka hata debug seçeneğini kapattıktan sonra 404.html ve 500.html gibi hatalar için gerekli dosyaları oluşturmamaktı. Debug seçeneği açıkken Django’nun kendi hata sayfalarıyla karşılaşıyorsunuz ama debug’ı kapattığınızda bu dosyaların template klasörünüzde bulunması gerekiyormuş.

Bir diğer hata Türkçe karakter problemiydi. Şimdiye kadar hep sqlite üzerinde çalıştığım için mysql’de ayarların nasıl yapılacağı konusunda pek bilgim yoktu. Türkçe karakter problemini gidermek için yeni bir veritabanı oluşturmam gerekti ama bu sefer veritabanını oluştururken CREATE DATABASE mydb DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; şeklinde karakter set ve collation ayarlarını ekledim. Bu Türkçe karakter problemini ortadan kaldırdı. Zaten kodları utf8 ile kaydediyorum tema dosyalarında da kodlama bilgisi utf8 olarak geçtiği için başka bir ayar yapmama gerek kalmadı. Bu tüyoyuda Ozan Hazer‘in blogundan öğrendim, kendisine buradan teşekkür ederim.

Başka bir hata da setuptools’u kurmayışımdı. Django eggs dosyalarını kullanıyormuş. Ben bunu bilmiyordum dökümanın tekinde de kurulması gerektiği yazmıyordu ama eğer kendi sunucunuzu yönetiyorsanız python-setuptools’u da mutlaka yükleyin. Egg nedir merak ediyorsanız IBM’in geliştirici sitesinde çok güzel bir makale mevcut, işinize yarayacaktır.

Umarım bu yazı işinize yarar. Herkese kolay gelsin