Я развернул приложение фляги с 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