【问题标题】:WSGI can't find file in same directory in appWSGI在应用程序的同一目录中找不到文件
【发布时间】:2017-11-28 06:44:54
【问题描述】:

我正在尝试使用 apache2 和 wsgi 设置 Ubuntu 服务器,但出现 500 内部错误。 WSGI 找不到文件“client_secrets.json”。

应用结构

/var/www/FlaskApp/
  flaskapp.wsgi
  - FlaskApp
      - static
        // All js, css, imgs and fonts
      - templates
        // All templates in here
      __init__.py
      client_secrets.json
      database_setup.py
      starter_content.py

初始化.py

app = Flask(__name__)

CLIENT_ID = json.loads(
    open('client_secrets.json', 'r').read())['web']['client_id']
APPLICATION_NAME = "Catalog App"

if __name__ == '__main__':
    app.secret_key = 'super_secret_key'
    app.debug = True
    app.run(host='0.0.0.0', port=5000)

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
application.secret_key = 'MY_SECRET_KEY'

/etc/apache2/sites-available/FlaskApp.conf:

<VirtualHost *:80>
    ServerName SERVER_IP
    ServerAdmin email@email.com
    WSGIScriptAlias / /var/www/FlaskApp/flaskapp.wsgi
    <Directory /var/www/FlaskApp/FlaskApp/>
        Order allow,deny
        Allow from all
    </Directory>
    Alias /static /var/www/FlaskApp/FlaskApp/static
    <Directory /var/www/FlaskApp/FlaskApp/static/>
        Order allow,deny
        Allow from all
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    LogLevel warn
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

tail -f /var/log/apache2/error.log:

【问题讨论】:

  • 为什么你认为它在同一个目录中查找?
  • 我从未使用过 apache 或 wsgi,我不知道应用程序流程并且对哪些点感到困惑。此应用程序是在 vm 中的 localhost 上运行的服务器上运行的应用程序,但我正在尝试将其切换到 apache 服务器

标签: python ubuntu flask apache2 wsgi


【解决方案1】:

你必须提供json文件的正确路径,你可以试试open_resource:

with app.open_resource('client_secrets.json') as f:    
    CLIENT_ID = json.load(f)['web']['client_id']

或者直接使用路径:

import os
PROJECT_ROOT = os.path.realpath(os.path.dirname(__file__))
json_url = os.path.join(PROJECT_ROOT, 'client_secrets.json')
CLIENT_ID = json.load(open(json_url))['web']['client_id']

【讨论】:

猜你喜欢
  • 2019-07-10
  • 2017-11-22
  • 2019-11-10
  • 2019-05-19
  • 1970-01-01
  • 2016-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多