Điểm:2

Tại sao Apache2 không tìm thấy ứng dụng WSGI của tôi?

lá cờ ru

Trong câu hỏi trước của tôi, tôi đã hỏi cách làm cho mod_wsgi sử dụng một phiên bản Python cụ thể. Theo câu trả lời từ câu hỏi đó, tôi đã tạo một môi trường ảo Python 3.9 và khiến WSGI sử dụng nó. Tuy nhiên, bây giờ ứng dụng Flask của tôi hoàn toàn không chạy - tôi chỉ cấu hình trang 404 cho phần còn lại của trang web của mình. Tôi không gặp lỗi khi khởi động lại Apache2 và nhật ký lỗi Apache trống khi tôi truy cập trang web. Tôi nghĩ rằng lỗi phải là do môi trường ảo của tôi, vì tôi đã tạo các ứng dụng Flask thử nghiệm trước đó trước khi sử dụng cùng một kiểu cấu hình.

Môi trường ảo của tôi được đặt tại đường dẫn/đến/của tôi/ứng dụng/venv/.

đường dẫn/đến/của tôi/ứng dụng/runner.wsgi:

nhập khẩu hệ thống

# Làm cho nội dung nào đó xuất hiện trong nhật ký lỗi nếu WSGI hoàn toàn chạy
tăng ValueError()

DỰ ÁN_DIR = os.path.dirname(os.path.realpath(__file__))
sys.path.insert(0, DỰ ÁN_DIR)

từ my_app nhập ứng dụng dưới dạng ứng dụng

Một phần của /etc/apache2/sites-available/000-default-le-ssl.conf:

WSGIDaemonProcess myapp user=www-data group=www-data thread=4 python-home=/path/to/my/app/venv/
WSGIScriptAlias ​​/my-app/path/to/my/app/runner.wsgi

/etc/apache2/mods-available/wsgi.load

LoadModule wsgi_module "/path/to/my/app/venv/lib/python3.9/site-packages/mod_wsgi/server/mod_wsgi-py39.cpython-39-x86_64-linux-gnu.so"
WSGIPythonHome "đường dẫn/đến/của tôi/ứng dụng/venv"

Hệ điều hành: Ubuntu 18.04.5 LTS

Điểm:1
lá cờ ru

Ok, tôi đã tìm ra vấn đề. Nó thực sự ngu ngốc. Về cơ bản, tôi đã viết /var/www/my_app thay vì /var/www/ứng dụng của tôi Trong /etc/apache2/sites-available/000-default-le-ssl.conf. Tôi đã sửa các đường dẫn, vô hiệu hóa trang web, kích hoạt trang web, tải lại Apache và bây giờ nó hoạt động. Tôi tò mò là tại sao Apache ít nhất không đưa ra cảnh báo nếu nó không thể truy cập tệp WSGI.

Điểm:0
lá cờ my
  • Người dùng nào đang chạy Apache?

  • Người dùng đó có thể thực sự truy cập vào ứng dụng WSGI của bạn không? Kiểm tra điều này bằng cách chạy ls -la trên đường dẫn và tất cả các thành phần của nó, hoặc bằng cách sử dụng têni (têni/đường dẫn/....)

  • SELinux có ở chế độ thực thi không? Nếu vậy, hãy kiểm tra nhật ký kiểm toán. kiểm toán2why có thể hữu ích (bạn có thể phải cài đặt một số gói).

ThatCoolCoder avatar
lá cờ ru
Apache đang được điều hành bởi `root` (1 phiên bản) và `www-data` (nhiều phiên bản). Tôi tin rằng họ có thể truy cập thư mục (nằm trong `var/www`), vì tôi đã thử một số kiểm tra mà tôi tìm thấy trên mạng và toàn bộ thư mục đều có quyền `0777`. Tôi không nghĩ rằng mình đang sử dụng SELinux vì không tìm thấy tất cả các lệnh của SELinux.

Đă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.