403禁止在WSGI和Apache2.4中使用 flask 应用程序

iqxoj9l9  于 2023-01-09  发布在  Apache
关注(0)|答案(1)|浏览(170)

我试图运行一个破折号应用程序在我们的网站上的一个子目录。我得到一个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

我想我可能在权限或虚拟主机设置上出了问题。但是我不知道出了什么问题。
我想在以下对象上运行 Jmeter 板:our-group.our-uni.com/appname
服务器运行在centos7上。
我得到了一个包含生化信息的数据文件夹,以提供给/var/www/html/appname/data/中的用户,如果我转到our-group.our-uni.com/appname/data/datapoint1.pt,我可以从该文件夹下载数据。
既然这样可以工作,我也可以把一个index.html/index.php页面没有问题,我认为我的虚拟主机设置指向WSGI是不正确的?
错误提示cannot service directory /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模块应该是可用的。
我尝试了其他帖子中的各种虚拟主机配置,也遇到了类似的问题。
我真的不知道为什么这行不通。
我的配置设置是否有问题,或者是其他问题?

bwleehnv

bwleehnv1#

找到问题了。我的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)

相关问题