Bagaimana cara membuat Python bekerja dengan Lighttpd?

25

Saya punya pengaturan Lighttpd pada Raspberry Pi saya, tetapi saya ingin agar kode sisi server berfungsi sekarang. Saya terbiasa dengan PHP, tetapi saya pikir saya harus mencoba Python karena seharusnya menjadi bahasa "pergi ke" untuk Raspberry Pi. Bagaimana saya bisa mendapatkan kode sisi server penanganan Python melalui Lighttpd?

Tandai Ingram
sumber
tautan penzilla.net/tutorials/python/cgi rusak tapi terima kasih untuk langganan yang bagus. Pi saya tiba besok!

Jawaban:

16

Yang Anda butuhkan adalah dukungan CGI untuk lighttpd.

Buka file konfigurasi lighttpd ( /etc/lighttpd/lighttpd.conf ) dan batalkan komentar pada baris "mod_cgi" (hapus # dari awal baris jika ada) atau tambahkan baris ini jika tidak ada.

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

Tambahkan berikut ini ke bagian bawah file:

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

Mulai ulang daemon lighttpd:

sudo service lighttpd force-reload

Kemudian buat direktori cgi-bin di bawah direktori root server web Anda. File yang diakhiri dengan .py di direktori ini akan diproses oleh Python.

Sekarang Anda dapat menulis skrip Python untuk menangani permintaan web. Anda mungkin ingin membaca tutorial ini tentang menulis program CGI dengan Python .

Jika di sisi lain Anda lebih suka menggunakan kerangka kerja untuk menangani beberapa detail tingkat rendah dan meningkatkan produktivitas pengembang, saya sarankan memeriksa web.py . Anda dapat menginstalnya menggunakan apt:

sudo apt-get install python-webpy

Lucas di Cloud 101 Blog telah memposting tutorial hebat tentang cara menulis halaman web menggunakan kerangka webpy.

Steve Robillard
sumber
Apakah ini FastCGI atau CGI?
Mark Ingram
Perhatikan bahwa CGI biasa membutuhkan memulai juru bahasa python untuk setiap permintaan sehingga hanya cocok untuk permintaan sesekali.
Thorbjørn Ravn Andersen
Sayangnya ini hanya berfungsi sebagian. Saya sekarang dapat menjalankan python dengan memanggil "http: // (IP) /cgi-bin/test.py?parameter=xxx" tetapi tidak "http: // (IP) /cgi-bin/test.cgi?parameter=xxx "- yang kemudian memberikan kesalahan 404 ...
576i
@ 576i Coba ubah baris ini cgi.assign = (".py" => "/ usr / bin / python") menjadi cgi.assign = (".cgi" => "/ usr / bin / python")
Steve Robillard
1
@ 576i Daripada melanjutkan diskusi ini di komentar pertanyaan lain, Silakan buka pertanyaan baru dan sertakan apa yang berhasil dan apa yang telah Anda coba. Saya kemudian akan menghapus komentar ini. BTW alasan mengapa Anda tidak bisa hanya pergi dengan ekstensi .py, yang menurut Anda berfungsi?
Steve Robillard
3

Jawaban yang diterima tidak berfungsi untuk saya dan itu juga mengabaikan paket pra-konfigurasi yang tersedia untuk Lighttpd.

Cara yang benar untuk menginstal Python pada Lighttpd untuk Raspberry adalah:

Pertama aktifkan cgi oleh

sudo lighttpd-enable-mod cgi

Ini menciptakan file konfigurasi baru untuk Lighttpd:

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

Edit file konfigurasi nano /etc/lighttpd/conf-enabled/10-cgi.conf, agar terlihat mirip dengan ini

server.modules += ( "mod_cgi" )

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

Pastikan python 2 diinstal dengan menjalankan:

/usr/bin/python --version

Sekarang, restart

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

Semoga berhasil!

NDB
sumber