Apache Üzerinde Mod Python İle Sayfa Yapımı
Django'yu bir türlü apache ile çalıştıramadım. Arama motorları ile bir çok anlatım buldum ama beceriksizliğimden olsa gerek bu anlatımları uygulamama rağmen başarılı olamadım. Daha öncesinde biraz mod python deneyimim olmuştu. Bundan sonra vakit buldukça ilgileneceğim.
Az önce, renk paletleri ile yaptığım örneği web uygulaması haline dönüştürmeye çalışırken bir sistem hazırladım. Eksik yanları olsada aşağıda bu sistemi kullanarak hazırladığım bir örnek sitenin kodları bulunmakta.
Bu sistem ile sayfalarınızı sınıflar şeklinde üretebiliyorsunuz. Ayrıca bağlantılarıda önceden ayarlayıp sınıflara atamalar yapabiliyorsunuz. Şu an için özellikleri bunlar. Biraz tema sistemi için uğraşacağım. Bir süre önce python için tema motorları konusunda araştırma yapmıştım. Uygun olan bir tema motorunu hazırladığım kodlara adapte edersem sanırım kullanışlı bir sistem oluşma ihtimali artar.
Kodları vermeden birazda Mod Python'u kullanmak için yapılacak olan ayarlamaya değinsem iyi olacak. Sisteminizde Mod Python kurulu değilse önce kurulum işlemini yapmalısınız. Dağıtımdan dağıtıma farklılık gösterdiği için bu adımı atlıyorum. En basitinden kurulum için paket yöneticiniz vasıtasıyla "mod_python" kelimesini aratabilirsiniz.
Kurulum işlemini tamamladıktan sonra apache ayar dosyasına aşağıdakileri ekliyorsunuz. Buradaki yol bilgilerini kendi sisteminize göre düzenlemeniz gerekiyor. Ayar dosyasına ekleme işleminden sonrada apache sunucusunu yeniden başlatmalısınız.
<directory "/var/www/html/modpython/"> DirectoryIndex index.py AddHandler python-program .py PythonHandler index PythonDebug On </directory>
Bir yerde .htaccess ile de bu ayarlamaların yapılabildiğini görmüştüm ancak çalıştıramadım. Eğer bu yöntem ile ayarları çalıştırmayı başarabilirsem yöntemi buradan ya da yeni bir girdi ile anlatmaya çalışacağım.
index.py kodları: (indirmek için tıkla)
# -*- coding: utf-8 -*- from mod_python import apache def handler(req): baglar = { "" : anasayfa, "anasayfa" : anasayfa, "hakkimda" : hakkimda, "iletisim" : iletisim } kur(req,baglar) return apache.OK class kur: def __init__(self,req,baglar): self.req = req self.req.content_type = "text/html" self.baglar = baglar try: bolum = self.adres()[0] except: bolum = "" if self.baglar.has_key(bolum): self.baglar[bolum](req) else: anasayfa(req) def _(self,veri): self.req.write("%s" %(veri)) def adres(self): adres = self.req.uri.split("index.py")[1].split("/") adres.remove("") return adres def site_adresi(self): adres = self.req.uri.split("index.py") return adres[0] class anasayfa(kur): def __init__(self,req): self.req = req self._(""" <h3>Anasayfa</h3> Mod Python ile geliştirilen siteme hoş geldiniz. <h3>Menü</h3> <a href="%s">Anasayfa</a> <a href="%sindex.py/hakkimda">Hakkımda</a> <a href="%sindex.py/iletisim">İletişim</a> """ %(self.site_adresi(),self.site_adresi(),self.site_adresi())) class hakkimda(kur): def __init__(self,req): self.req = req self._(""" <h3>Hakkımda</h3> Hakkımda sayfası içeriği. <h3>Menü</h3> <a href="%s">Anasayfa</a> <a href="%sindex.py/hakkimda">Hakkımda</a> <a href="%sindex.py/iletisim">İletişim</a> """ %(self.site_adresi(),self.site_adresi(),self.site_adresi())) class iletisim(kur): def __init__(self,req): self.req = req self._(""" <h3>İletişim</h3> İletişim sayfası içeriği. <h3>Menü</h3> <a href="%s">Anasayfa</a> <a href="%sindex.py/hakkimda">Hakkımda</a> <a href="%sindex.py/iletisim">İletişim</a> """ %(self.site_adresi(),self.site_adresi(),self.site_adresi()))
Tags: apache, linux, mod_python, python
October 18th, 2008 at 9:58 am
En başına dosyanın python’nun yüklü oldugu yeri yazarsan sorun kalkar.
#!C:/apache2triad/python/bin/python.exe (win)
#!/usr/python (linux)
uft-8 yerine de türkçe karackter için 1254 kullan…
Apache_Mod_Python ile çalışacaksan mod_python modulü aktifleştirmelisin.
windows altında çalışma yapacaksan! apache2triad 1.4.4 versiyon ve apache2triadcp panelinden mod_python aktif edilmeli ve cgi-bin klasöründe çalışma yapacaksan gerekli dizin belirtilmeli ve dosya ismi yazılmalı…
Linux altında çalışma yapacaksan http.conf haricinde mod_python.conf da da degişiklik yapıp gerekli dizin ve izinleri belirttikten sonra sorun kalkar.Gentoo için mod python ve apache belgelerine bakarsan gerekli ayarları rahatlıkla yaparsın!Birde mod_python apache sürümünle uyumlu olmalı yoksa çalışmaz.
Şayet Django ile sadece çalışacaksan mod_python a gerek yok ama Django kullanıp Apache ile internete açılacaksan mod_python ayaraları şu şekilde olmalı…
http://docs.djangoproject.com/en/dev/howto/deployment/modpython/#howto-deployment-modpython
Gerekli linkler:
http://thinkhole.org/wp/2006/04/03/django-on-windows-howto/
October 18th, 2008 at 10:01 am
ek-1 linux için gerekli ayar dosyası
/etc/apache2/modules.d/16_mod_python.conf
site linki:
http://www.gentoo-wiki.com/Apache_Modules_mod_python
October 18th, 2008 at 5:48 pm
Eğer dosya karakter kodlaması utf-8 ise “# -*- coding: utf-8 -*-” şeklinde bir kullanım söz konusu. Bu yüzden kullanımda bir sorun yok (benim için
).
Verdiğin bilgiler içinde teşekkürler.