Flask Apache: как получить доступ к статическому файлу из скрипта Python, находящегося в корне приложения фляги (кроме __init.__.py) - PullRequest
0 голосов
/ 25 мая 2019

Я развернул приложение фляги с Apache. Структура каталогов в / var / www / FlaskApp / ниже

./FlaskApp/__init__.py
./FlaskApp/oracledb.py
./FlaskApp/templates
./FlaskApp/static
./FlaskApp/static/css
./FlaskApp/static/conf/inv_conf.yml

inv_conf.yml содержит параметры подключения к базе данных. oracledb.py содержит класс БД, который импортируется в init .py

class OracleDB:
    def __init__(self):

        with open('static/conf/inv_conf.yaml', 'r') as file:
          conf = yaml.load(file)

init .py импортирует класс как

from oracledb import OracleDB
app = Flask(__name__)
db = OracleDB()

Когда я обращаюсь к приложению, появляется ошибка ниже от apache

[Sat May 25 11:17:53.158072 2019] [:error] [pid 84236]   File "/var/www/FlaskApp/FlaskApp/oracledb.py", line 7, in __init__
[Sat May 25 11:17:53.158074 2019] [:error] [pid 84236]     with open('static/conf/inv_conf.yaml', 'r') as file:
[Sat May 25 11:17:53.158078 2019] [:error] [pid 84236] IOError: [Errno 2] No such file or directory: 'static/conf/inv_conf.yaml'

Но если я помещу inv_conf.yml в корневой каталог системы '/', он будет работать отлично. Не могли бы вы помочь мне, что не так с относительным путем и как его решить?

Мой httpd.conf похож на

<VirtualHost *:80>
    ServerName <server name>

    WSGIDaemonProcess FlaskApp user=apache  group=apache
    WSGIScriptAlias /inventory /var/www/FlaskApp/FlaskApp.wsgi
    Alias /static /var/www/FlaskApp/FlaskApp/static

    <Directory /var/www/FlaskApp/FlaskApp>
        WSGIProcessGroup FlaskApp
        WSGIApplicationGroup %{GLOBAL}
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

файл wsgi

[root@slc10xxi FlaskApp]# cat FlaskApp.wsgi
#!/usr/bin/python
import sys
import logging

logging.basicConfig(stream=sys.stderr)
sys.path.insert(0, '/var/www/FlaskApp/')
from FlaskApp import app as application
...