[英]403 forbidden using a flask app with WSGI and Apache2.4
我正在尝试在我们网站的子目录中运行一个破折号应用程序。 我在尝试访问网站时收到 403 禁止。 在/etc/httpd/logs/ssl_error_logs
我收到错误:
[Tue Jan 03 13:53:42.973046 2023] [autoindex:error] [pid 50576] [client 134.94.71.5:60550] AH01276: Cannot serve directory /var/www/Typesetter/appname/: No matching DirectoryIndex (index.html,index.php,index.php) found, and server-generated directory index forbidden by Options directive
我想我的权限或虚拟主机设置可能有问题。 但我不知道出了什么问题。
我想在以下位置运行仪表板:our-group.our-uni.com/appname
服务器在centos7上运行。
我有一个包含生化信息的数据文件夹,可以提供给/var/www/html/appname/data/
中的用户,如果我 go 到our-group.our-uni.com/appname/data/datapoint1.pt
,我可以从中下载数据our-group.our-uni.com/appname/data/datapoint1.pt
因为这有效,我也可以毫无问题地放一个 index.html/index.php 页面,我认为我的指向 WSGI 的虚拟主机设置不正确?
错误提示无法提供目录/var/www/Typesetter/appname/
,但此目录是指向/var/www/html/appname/
的符号链接。
虚拟主机文件appname.conf
位于/etc/httpd/conf.d/
:
<VirtualHost *:80>
ServerName our-group.our-uni.com
DocumentRoot /var/www/html/appname
Errorlog /var/www/html/appname/appname-error.log
Alias /topenzyme /var/www/html/topenzmye
WSGIDaemonProcess appname user=apache group=apache threads=5 python-path=/var/www/html/appname/appname-env
WSGIScriptAlias /appname /var/www/html/appname/testapp.wsgi
<Directory /var/www/html/appname>
WSGIProcessGroup appname
WSGIApplicationGroup %{GLOBAL}
Options Indexes FollowSymLinks ExecCGI
Require all granted
</Directory>
</VirtualHost>
我也尝试更改为<Directory /var/www/typesetter/appname>
,但这也没有用。
/var/www/html/appname/
中testapp.wsgi
的内容:
import sys, os
sys.path.insert(0, '/var/www/html/appname')
from testapp import app as application
/var/www/html/appname/
中testapp.py
的内容:
from flask import Flask
app = Flask(__name__)
@app.route('/topenzyme/')
def main():
return 'Hello world'
if __name__ == '__main__':
app.run()
权限设置:
-rwxr-xr-x. 1 apache apache 148 Jan 3 13:37 testapp.py
-rwxr-xr-x. 1 apache apache 100 Jan 3 13:38 testapp.wsgi
我也试过 777,但据我所知,755 权限应该足够了吗?
如果我做httpd -M
我得到wsgi_module (shared)
。 wsgi 模块应该可用。
我尝试了其他具有类似问题的帖子中的各种虚拟主机配置。
我真的不确定为什么这不起作用。
我的配置设置有什么问题还是其他原因?
发现了问题。 我错误地配置了我的 Apache 设置。
因为我们已经在域上托管了一个网站,所以我不应该尝试为子目录设置虚拟主机。 据我所知,这仅适用于设置(子)域。 通过这种设置结构,appname.conf 文件被添加到已经存在的虚拟主机配置中。
相反/etc/httpd/conf.d/appname.conf
现在是:
WSGIDaemonProcess appname user=apache group=apache threads=5 python-path=/var/www/html/appname/appnameenv
WSGIProcessGroup appname
WSGIApplicationGroup %{GLOBAL}
WSGIScriptAlias /appname /var/www/html/appname/testapp.wsgi
<Directory /var/www/html/appname>
Options FollowSymLinks
AllowOverride All
Require all granted
allow from all
</Directory>
这将 wsgi 应用程序正确地链接到我想要的子目录位置(our-group.our-uni.com/appname)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.