#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 отражает это.