Python'u apache2 ile nasıl kullanabilirim?


13

Python ile Apache ile çalışmaya çalışıyorum, ancak CGI veya mod_python ile başarılı olamıyorum.

İyi bir öğretici falan bilen var mı?

Teşekkürler.

Yanıtlar:


17

mod_pythontemelde bakımlı değildir - içine bakmalısınız mod_wsgi. Paketi yükleyin libapache2-mod-wsgi, ardından sudo a2enmod wsgietkinleştirmek için sorun .

Çalıştırmak için hızlı bir örnek olarak, aşağıdakine benzer bir şey ekleyin /etc/apache2/sites-enabled/default:

WSGIScriptAlias /test /path/to/python/file.py

Ve dosyada /path/to/python/file.py:

def application(environ, start_response):
    start_response('200 OK', [('Content-Type', 'text/plain')])
    return "Hello World"

Apache2'yi yeniden başlattıktan sonra, herhangi bir istek python dosyanızda /testbir çağrıya dönüşecektir application().

WSGI içine daha fazla okuma, görünüm (WebServer Gateway Interface) için, web sunucuları ile yönlü Python bütünleştirir.

Bonus / Güncelleme:

Python (şaşırtıcı bir şekilde) test için standart kütüphanede küçük bir WSGI sunucusuna sahiptir. Bunu dosyanızın altına eklerseniz, sınama amacıyla herhangi bir eski yürütülebilir dosya olarak çalıştırabilir ve ardından Apache'nin üretimi üstlenmesine izin verebilirsiniz:

if __name__ == '__main__':
    from wsgiref.simple_server import make_server

    httpd = make_server('', 8080, application)
    print "Serving on http://localhost:8080"

    httpd.serve_forever()

Apache günlüğünden bir hata olarak aşağıdakileri aldım. Anlayabildiğim kadarıyla, bir dize almadığını düşünüyor.
Vallery

[Cmt 05 Mart 17:06:14 2011] [hata] [istemci 127.0.0.1] mod_wsgi (pid = 2844): WSGI betiği '/var/www/file.py' işlenirken kural dışı durum oluştu. [Cmt 05 17:06:14 2011] [hata] [müşteri 127.0.0.1] Geri izleme (en son çağrı son): [Cmt 05 17:06:14 2011] [hata] [müşteri 127.0.0.1] Dosya " /var/www/file.py ", satır 2, uygulamada [Cmt 05 17:06:14 2011] [hata] [müşteri 127.0.0.1] start_response (200, [('İçerik Tipi', 'metin / plain ')]) [Cmt 05 17:06:14 2011] [hata] [istemci 127.0.0.1] TypeError: durum için beklenen bayt dizesi nesnesi, int türünün değeri bulundu
Vallery

Ah. Benim hatam. Benim için tüm zor işleri yapan çerçevelere alışkınım;). Ben güncelledik 200için '200 OK'başına python.org/dev/peps/pep-0333
Morten Siebuhr

Harika, işe yarıyor. Son soru: Html'de nasıl gösterebilirim? Tarayıcım, biçimlendirmeyi yok sayarak dönüşü düz metin olarak gösteriyor.
Vallery

1
Bekle, anladım: metni / düz metni metin / html olarak değiştirin.
Vallery
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.