Điểm:1

Tại sao Apache với mod_wsgi buộc tải xuống các tệp .py ngay khi thực thi chúng?

lá cờ gb

Tại sao Apache với mod_wsgi buộc tải xuống các tệp .py thay vì thực thi chúng?

Tôi đang cố chạy Django, nhưng vấn đề đầu tiên tôi gặp phải là các tệp .py không thực thi.

Tôi đang làm theo các tài liệu ở đây https://docs.djangoproject.com/en/4.0/howto/deployment/wsgi/modwsgi/

  • Tôi đang chạy Ubuntu 20.04.3 LTS
  • đã cài đặt và bật libapache2-mod-wsgi-py3
  • kiểm tra cấu hình apachectl Cú pháp OK
  • Tất cả các tập tin được chọn để dữ liệu www: dữ liệu www
  • các tệp .py là chmod +x
  • /var/log/Apache2/access.log trống rỗng

/var/log/Apache2/error.log chứa:

Apache/2.4.41 (Ubuntu) mod_fcgid/2.3.9 OpenSSL/1.1.1k mod_wsgi/4.6.8 Đã định cấu hình Python/3.8 -- tiếp tục hoạt động bình thường

Tệp .htaccess ở gốc có

RewriteEngine bật
Máy ChủChữ Ký Tắt

Thư mục của /var/www/html/example.com/public_html là đây:

nhập mô tả hình ảnh ở đây

Đây là những gì tôi thấy; nhấp vào tệp .py buộc tệp phải tải xuống.

nhập mô tả hình ảnh ở đây

/etc/apache2/sites-available/default-ssl.conf:

<IfModule mod_ssl.c>
    <Máy chủ ảo _default_:443>
        Quản trị viên web ServerAdmin@localhost

        Tài liệuRoot /var/www/html

        Nhật ký lỗi ${APACHE_LOG_DIR}/error.log
        Nhật ký tùy chỉnh ${APACHE_LOG_DIR}/access.log kết hợp

        Công cụ SSL bật

        SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
        SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

        <FilesMatch "\.(cgi|shtml|phtml|php)$">
                SSLOptions +StdEnvVars
        </FilesMatch>
        <Thư mục /usr/lib/cgi-bin>
                SSLOptions +StdEnvVars
        </Thư mục>


Bí danh /static /var/www/html/example.com/public_html/contact/static
Bí danh /media /var/www/html/example.com/public_html/contact/media

<Thư mục /var/www/html/example.com/public_html/contact/static>
    Yêu cầu tất cả cấp
</Thư mục>

<Thư mục /var/www/html/example.com/public_html/contact/media>
    Yêu cầu tất cả cấp
</Thư mục>

WSGIScriptAlias ​​/ /var/www/html/example.com/public_html/contact/contact/wsgi.py

WSGIDaemonProcess example.com python-home=/var/www/html/example.com/public_html/contact

Ví dụ WSGIProcessGroup.com

WSGISocketPrefix chạy/wsgi

 <Thư mục /var/www/html/example.com/public_html/contact/contact>
    <Tệp wsgi.py>
        Yêu cầu tất cả cấp
    </Tệp>
</Thư mục>

<Thư mục /var/www/html/example.com/public_html>
AllowOverride Không có
    Lệnh cho phép, từ chối
    cho phép từ tất cả
    Tùy chọn +ExecCGI
    AddHandler cgi-script .py
</Thư mục>

    </Máy chủ ảo>
</IfModule>

# vim: cú pháp=apache ts=4 sw=4 sts=4 sr noet

/etc/apache2/sites-available/000-default.conf

<Máy chủ ảo *:80>

    Quản trị viên web ServerAdmin@localhost
    Tài liệuRoot /var/www/html

    Nhật ký lỗi ${APACHE_LOG_DIR}/error.log
    Nhật ký tùy chỉnh ${APACHE_LOG_DIR}/access.log kết hợp

   # Cho phép tệp .htaccess
    <Thư mục /var/www/html>
        Tùy chọn Chỉ mục FollowSymLinks MultiViews
        AllowOverride All
        Yêu cầu tất cả cấp
    </Thư mục>


Bí danh /static /var/www/html/example.com/public_html/contact/static
Bí danh /media /var/www/html/example.com/public_html/contact/media

<Thư mục /var/www/html/example.com/public_html/contact/static>
    Yêu cầu tất cả cấp
</Thư mục>

<Thư mục /var/www/html/example.com/public_html/contact/media>
    Yêu cầu tất cả cấp
</Thư mục>

WSGIScriptAlias ​​/ /var/www/html/example.com/public_html/contact/contact/wsgi.py

WSGIDaemonProcess example.com python-home=/var/www/html/example.com/public_html/contact

Ví dụ WSGIProcessGroup.com

WSGISocketPrefix chạy/wsgi

 <Thư mục /var/www/html/example.com/public_html/contact/contact>
    <Tệp wsgi.py>
        Yêu cầu tất cả cấp
    </Tệp>
</Thư mục>


<Thư mục /var/www/html/example.com/public_html>
AllowOverride Không có
    Lệnh cho phép, từ chối
    cho phép từ tất cả
    Tùy chọn +ExecCGI
    AddHandler cgi-script .py
</Thư mục>

</Máy chủ ảo>

# vim: cú pháp=apache ts=4 sw=4 sts=4 sr noet
asktyagi avatar
lá cờ in
Bạn có bất kỳ mục nào với RemoveHandler không?
Điểm:-1
lá cờ vn

Bí danh WSGIScript không cung cấp cách nhấp và xem dịch vụ cho python, bạn nên sử dụng tuyến đường (đường dẫn) do python xác định để truy cập ứng dụng của mình. mở liên kết đến .py các tệp có thể đi qua phân phối tệp tĩnh thay vì WSGI.

vì bạn gắn ứng dụng WSGI của mình vào thư mục gốc, thử mở / thay vì /liên hệ để xem nếu nó hoạt động.

BlueDogRanch avatar
lá cờ gb
Tôi đã sử dụng `WSGIScriptAlias ​​/` thay vì `WSGIScriptAlias ​​/contact`
Chino Chang avatar
lá cờ vn
@BlueDogRanch vì vậy vui lòng thử mở `/` trong trình duyệt của bạn thay vì mở `/contact`

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.