Python'un Lighttpd ile çalışmasını nasıl sağlayabilirim?


25

Ahududu Pi'mde Lighttpd kurulumu var, ancak şimdi sunucu tarafı kodunu çalıştırmak istiyorum. PHP'ye aşinayım, ancak Ahududu Pi için "git" dili olması gerektiği gibi Python'u denemeliyim. Python'un sunucu tarafı kodunu Lighttpd üzerinden nasıl yönetebilirim?


penzilla.net/tutorials/python/cgi bağlantısı koptu ancak yazdığınız için teşekkürler. Pi'im yarın geliyor!

Yanıtlar:


16

İhtiyacınız olan şey lighttpd için CGI desteği.

Lighttpd yapılandırma dosyasını açın ( /etc/lighttpd/lighttpd.conf ) ve "mod_cgi" satırını açın (varsa # satırın başından kaldırın) veya yoksa bu satırı ekleyin.

server.modules = (
            "mod_access",
            "mod_alias",
            "mod_accesslog",
            "mod_auth",
            "mod_ssi",
            "mod_cgi",
            "mod_compress",
            "mod_fastcgi",
            "mod_rewrite",
            "mod_magnet",
)

Aşağıdakini dosyanın altına ekleyin:

$HTTP["url"] =~ "^/cgi-bin/" {
        cgi.assign = ( ".py" => "/usr/bin/python" )
}

Lighttpd arka planını yeniden başlatın:

sudo service lighttpd force-reload

Ardından web sunucunuzun kök dizininde bir cgi-bin dizini oluşturun . Bu dizinde .py ile biten tüm dosyalar Python tarafından işlenecektir.

Artık web isteklerini işlemek için Python komut dosyaları yazabilirsiniz. Bu öğreticiyi Python ile CGI programları yazmak üzerine okumak isteyebilirsiniz .

Öte yandan, düşük düzeyli ayrıntılardan bazılarını ele almak ve geliştirici verimliliğini artırmak için bir çerçeve kullanmayı tercih ederseniz, web.py adresine göz atmanızı öneririm . Apt kullanarak kurabilirsiniz:

sudo apt-get install python-webpy

Cloud 101 Blog'daki Lucas, webpy çerçevesini kullanarak web sayfaları yazma konusunda harika bir ders verdi.


Bu FastCGI mı yoksa CGI mı?
Mark Ingram

Sade CGI'nın her istek için python yorumlayıcısının başlatılmasını gerektirdiğine dikkat edin, bu nedenle yalnızca geçici istek için çok uygundur.
Thorbjørn Ravn Andersen

Ne yazık ki bu sadece kısmen çalıştı. Artık "http: // (IP) /cgi-bin/test.py?parameter=xxx" diyerek python çalıştırabilirim "değil" http: // (IP) /cgi-bin/test.cgi?parameter=xxx "- daha sonra 404 hatası veriyor ...
576i 21

@ 576i Bu satırı değiştirmeyi deneyin cgi.assign = (".py" => "/ usr / bin / python"), cgi.assign = (".cgi" => "/ usr / bin / python")
Steve Robillard

1
@ 576i Bu tartışmaya başka bir sorunun yorumunda devam etmek yerine, Lütfen yeni bir soru açın ve neyin işe yaradığını ve neyi denediğinizi ekleyin. Daha sonra bu yorumları sileceğim. BTW, işe yaradığını söylediğiniz .py uzantısını kullanamamanızın herhangi bir nedeni var mı?
Steve Robillard

3

Kabul edilen cevap benim için işe yaramadı ve Lighttpd için önceden yapılandırılmış paketleri de görmezden geldi.

Ahududu için Python'u Lighttpd'ye kurmanın doğru yolu şudur:

İlk önce cgi'yi etkinleştir

sudo lighttpd-enable-mod cgi

Bu Lighttpd için yeni bir konfigürasyon dosyası oluşturur:

/etc/lighttpd/conf-enabled/10-cgi.conf

Buna nano /etc/lighttpd/conf-enabled/10-cgi.confbenzemek için yapılandırma dosyasını düzenleyin

server.modules += ( "mod_cgi" )

$HTTP["url"] =~ "^/cgi-bin/" {
        alias.url += ( "/cgi-bin/" => "/var/www/cgi-bin" )
        cgi.assign = (
                ".py"  => "/usr/bin/python",
        )
}

Python 2'nin çalıştırılarak yüklendiğinden emin olun:

/usr/bin/python --version

Şimdi yeniden başlat

sudo /etc/init.d/lighttpd force-reload

İyi şanslar!

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.