Làm cách nào để Python hoạt động với Lighttpd?


25

Tôi đã thiết lập Lighttpd trên Raspberry Pi của mình, nhưng tôi muốn làm cho mã phía máy chủ hoạt động ngay bây giờ. Tôi quen thuộc với PHP, nhưng tôi nghĩ rằng tôi nên thử Python vì nó được coi là ngôn ngữ "đi đến" cho Raspberry Pi. Làm cách nào tôi có thể nhận được Python xử lý mã phía máy chủ thông qua Lighttpd?


penzilla.net/tutorials/python/cgi liên kết bị hỏng nhưng cảm ơn vì đã viết tuyệt vời. Pi của tôi đến vào ngày mai!

Câu trả lời:


16

Những gì bạn cần là hỗ trợ CGI cho lighttpd.

Mở tệp cấu hình lighttpd ( /etc/lighttpd/lighttpd.conf ) và bỏ dòng "mod_cgi" (xóa # khỏi đầu dòng nếu có) hoặc thêm dòng này nếu không có.

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

Thêm phần sau vào dưới cùng của tệp:

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

Khởi động lại trình nền lighttpd:

sudo service lighttpd force-reload

Sau đó tạo thư mục cgi-bin trong thư mục gốc của máy chủ web của bạn. Mọi tệp kết thúc bằng .py trong thư mục này sẽ được xử lý bởi Python.

Bây giờ bạn có thể viết các tập lệnh Python để xử lý các yêu cầu web. Bạn có thể muốn đọc hướng dẫn này về cách viết chương trình CGI bằng Python .

Nếu mặt khác bạn thà sử dụng một khuôn khổ để xử lý một số chi tiết ở mức độ thấp và nâng cao năng suất phát triển, tôi khuyên bạn nên xem web.py . Bạn có thể cài đặt nó bằng apt:

sudo apt-get install python-webpy

Lucas tại Blog Cloud 101 đã đăng một hướng dẫn tuyệt vời về cách viết các trang web bằng cách sử dụng khung webpy.


Đây là FastCGI hay CGI?
Đánh dấu Ingram

Lưu ý rằng CGI đơn giản yêu cầu bắt đầu trình thông dịch python cho mọi yêu cầu để nó chỉ phù hợp với yêu cầu không thường xuyên.
Thorbjørn Ravn Andersen

Than ôi điều này chỉ làm việc một phần. Bây giờ tôi có thể chạy python bằng cách gọi "http: // (IP) /cgi-bin/test Habparameter=xxx" nhưng không phải "http: // (IP) /cgi-bin/test.cgi?parameter=xxx "- sau này có lỗi 404 ...
576i

@ 576i Hãy thử thay đổi dòng này cgi.assign = (".py" => "/ usr / bin / python") thành cgi.assign = (".cgi" => "/ usr / bin / python")
Steve Robillard

1
@ 576i Thay vì tiếp tục cuộc thảo luận này trong các bình luận của một câu hỏi khác, Vui lòng mở một câu hỏi mới và bao gồm những gì hoạt động và những gì bạn đã cố gắng. Sau đó tôi sẽ xóa những bình luận này. BTW có lý do nào khiến bạn không thể sử dụng tiện ích mở rộng .py mà bạn đã nói không?
Steve Robillard

3

Câu trả lời được chấp nhận không hoạt động với tôi và nó cũng bỏ qua các gói được cấu hình sẵn có sẵn cho Lighttpd.

Cách chính xác để cài đặt Python trên Lighttpd cho Raspberry là:

Lần đầu kích hoạt cgi bởi

sudo lighttpd-enable-mod cgi

Điều này tạo ra một tệp cấu hình mới cho Lighttpd:

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

Chỉnh sửa tập tin cấu hình nano /etc/lighttpd/conf-enabled/10-cgi.conf, để trông tương tự như thế này

server.modules += ( "mod_cgi" )

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

Đảm bảo python 2 được cài đặt bằng cách thực thi:

/usr/bin/python --version

Bây giờ, khởi động lại

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

Chúc may mắn!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.