WSGI无法在app中的同一目录中找到文件

时间:2017-06-25 02:10:46

标签: python ubuntu flask apache2 wsgi

我尝试使用apache2和wsgi设置Ubuntu服务器,但是我收到500内部错误。 WSGI无法找到文件" client_secrets.json"。

App结构

/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: error.png

1 个答案:

答案 0 :(得分: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']