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:
Đâ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.
/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