Возможно, чтобы получить около 403 запрещенных ошибок с приложением FLASK и mod_wsgi

#python #flask #apache2 #wsgi

Вопрос:

Следуя учебнику за учебником и пробуя миллион различных конфигураций, я все еще не могу запустить приложение flask под управлением mod_wsgi:

Мой сценарий WSGI

 #!/usr/bin/python
import sys
import logging
import site

logging.basicConfig(stream=sys.stderr)
site.addsitedir('/server/FLASKENV/lib/python3.9/site-packages/')
sys.path.insert(0,"/server/FLASKAPPS/PPSPortal/restapi/")
from main.py import app as application
application.secret_key="REDACTED"
 

Конфигурация Apache 2:

 VirtualHost *:80>
    ServerName myserver.com
    ServerAdmin me@myserver.com
    WSGIScriptAlias / /server/FLASKWSGI/ppsportal.wsgi
    WSGIDaemonProcess ppsrestapi user=www-data group=www-data threads=5 python-home=/server/FLASKENV
    <Directory /server/FLASKAPPS/PPSPortal/restapi>
            Options FollowSymLinks
            AllowOverride None
            Require all granted
    </Directory>
    ErrorLog /server/FLASKAPPS/PPSPortal/restapi/logs/error.log
    LogLevel warn
    CustomLog /server/FLASKAPPS/PPSPortal/restapi/logs/access.log combined
</VirtualHost>
 

Весь каталог, для которого существуют эти приложения, принадлежит мне www-data:www-data , и я получаю ошибку 403 Запрещено.

Что я получаю в ошибке.log:

[Сб 14 августа 09:22:57.441200 2021] [authz_core:ошибка] [pid 24121:tid 140166979081984] [клиент 192.168.0.15:41200] AH01630: клиент отклонен конфигурацией сервера: /сервер/FLASKWSGI/ppsportal.wsgi

Ответ №1:

Похоже, что у Apache нет доступа к рассматриваемому объекту. Убедитесь, что у вас настроена учетная запись для этой конкретной причины, и предоставьте доступ к файлам этой учетной записи. Затем используйте chown , чтобы установить доступ к этим файлам для этого пользователя.

В среде разработки, которая может быть, например, учетной записью Apache. chown -R wwwrun:www /home/user1/Develop/

Или вы могли бы предоставить доступ всем желающим, но я бы не рекомендовал этого делать. chmod 777 -R /home/user1/Develop/

Если это не сработает, вам, возможно, потребуется вручную разрешить доступ к файлам wsgi в конфигурации apache.

Это должно выглядеть примерно так.

 WSGIDaemonProcess flask_dbadmin user=wwwrun group=www threads=5
<VirtualHost *:80>

   ........

   <Directory /home/user1/Develop/ >
       Order allow,deny
       Allow from all
    </Directory>

   <Files flask_dbadmin.wsgi>
       Order allow,deny
       Allow from all
   </Files>
</VirtualHost>
 

-кредиты : @eandersson

ПРИМЕЧАНИЕ: К сожалению, у меня недостаточно репутации, чтобы проголосовать за эту проблему как дубликат.

Комментарии:

1. Итак, по сути, вы говорите мне делать все, что я уже объяснил в самом вопросе? www-данные как группа, так и пользователь владеют папкой, мой Apache conf отражает это.