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: , , ,

3 Responses to “Apache Üzerinde Mod Python İle Sayfa Yapımı”

  1. Ahmet Muratoglu Says:

    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/

  2. Ahmet Muratoglu Says:

    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

  3. Ömer Ücel Says:

    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.

Leave a Reply