Làm cách nào để sử dụng Python với apache2?


13

Tôi đang cố gắng để Python làm việc với Apache, tuy nhiên tôi không thành công với CGI hoặc mod_python.

Có ai biết một hướng dẫn tốt hoặc một cái gì đó?

Cảm ơn.

Câu trả lời:


17

mod_pythonvề cơ bản là không duy trì - bạn nên xem xét mod_wsgi. Cài đặt gói libapache2-mod-wsgi, sau đó phát hành sudo a2enmod wsgiđể kích hoạt nó.

Chỉ là một ví dụ nhanh để chạy nó, nhét thứ gì đó như thế này vào /etc/apache2/sites-enabled/default:

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

Và trong tập tin /path/to/python/file.py:

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

Sau khi khởi động lại Apache2, mọi yêu cầu /testsẽ chuyển thành cuộc gọi application()trong tệp python của bạn.

Để đọc thêm, nhìn vào WSGI (WebServer Gateway Interface), các cách Python tích hợp với web server.

Tiền thưởng / Cập nhật:

Python (không ngạc nhiên) có một máy chủ WSGI nhỏ trong thư viện tiêu chuẩn để thử nghiệm. Nếu bạn thêm phần này vào cuối tệp, bạn có thể chạy nó dưới dạng bất kỳ tệp thực thi cũ nào cho mục đích thử nghiệm, sau đó để Apache tiếp quản sản xuất:

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

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

    httpd.serve_forever()

Tôi đã nhận được như là một lỗi, ra khỏi nhật ký apache. Theo như tôi có thể nói, nó nghĩ rằng nó không nhận được một chuỗi.
Vallery

[Sat Mar 05 17:06:14 2011] [error] [client 127.0.0.1] mod_wsgi (pid = 2844): Ngoại lệ xảy ra khi xử lý tập lệnh WSGI '/var/www/file.py'. [Sat Mar 05 17:06:14 2011] [error] [client 127.0.0.1] TracBack (cuộc gọi gần đây nhất): [Sat Mar 05 17:06:14 2011] [error] [client 127.0.0.1] File " /var/www/file.py ", dòng 2, trong ứng dụng [Sat Mar 05 17:06:14 2011] [error] [client 127.0.0.1] start_response (200, [('Loại nội dung', 'văn bản / plain ')]) [Sat Mar 05 17:06:14 2011] [error] [client 127.0.0.1] TypeError: đối tượng chuỗi byte dự kiến ​​cho trạng thái, giá trị của kiểu int được tìm thấy
Vallery

Ah. Lỗi của tôi. Tôi đã quen với các khung làm tất cả những thứ khó khăn cho tôi;). Tôi đã cập nhật 200lên '200 OK'mỗi python.org/dev/peps/pep-0333
Morten Siebuhr

Tuyệt vời, nó hoạt động. Câu hỏi cuối cùng: làm thế nào để tôi làm cho nó hiển thị trong html? Trình duyệt của tôi cho thấy sự trở lại trong bản rõ, bỏ qua đánh dấu.
Vallery

1
Đợi, hiểu rồi: thay đổi văn bản / đơn giản thành văn bản / html.
Vallery
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.