Страницы Flask-Admin недоступны в рабочей среде

Я пытаюсь развернуть приложение Flask с помощью Apache и mod_wsgi на сервере Ubuntu.

Кажется, он отлично работает для спокойных запросов, которые я реализовал, но я не могу получить доступ к своим страницам Flask-Admin (к которым я могу получить доступ в процессе разработки).

Вот структура моего приложения (упрощенная для целей этого вопроса):

- MyApp/
    - main.py
    - myapp/
        - __init__.py
        - Views.py
        - files/
    - wsgi/
        myapp.wsgi

В процессе разработки я просто использую python main.py, и все работает нормально.

Вот wsgi-файл:

import sys
import os

##Virtualenv Settings
activate_this = '/var/www/code/MyApp/venv/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))

##Replace the standard out
sys.stdout = sys.stderr

##Add this file path to sys.path in order to import settings
sys.path.insert(0, os.path.join(os.path.dirname(os.path.realpath(__file__)), '../..'))

##Add this file path to sys.path in order to import app
sys.path.append('/var/www/code/MyApp/')

from myapp import app as application

Вот файл конфигурации для Apache, я использую Apache 2.2:

<VirtualHost *:443>
        WSGIScriptAlias /myapp /var/www/code/MyApp/wsgi/myapp.wsgi
        WSGIScriptReloading On
        WSGIPassAuthorization On

        SSLEngine on
        SSLCertificateFile /var/www/code/MyApp/ssl.crt
        SSLCertificateKeyFile /var/www/code/MyApp/ssl.key
        SSLVerifyClient None
        SSLOptions +StdEnvVars

        <Directory /var/www/code/MyApp/wsgi>
                Order deny,allow
                Allow from all
        </Directory>

</VirtualHost>

Вот как я создаю экземпляр приложения Flask в моем __ init __.py:

app = Flask(__name__, static_folder='files')

Вот как я создаю интерфейс администратора в main.py:

# Create admin
admin = admin.Admin(app, 'App Administration')

У меня также есть ссылка на страницу администратора в моем Views.py:

@app.route('/')
def index():
    return '<a href="/admin/">Go to admin page</a>'

Во время разработки я могу получить доступ к интерфейсу администратора по адресу mysite.com/admin/.

В производстве у меня есть приложение на mysite.com/myapp/, и я не могу получить доступ к интерфейсу администратора, который, как я ожидал, будет на mysite.com/myapp/admin/.

Я думаю, что есть проблема с тем, как я создаю экземпляр flask-admin. Я сохранил URL-адрес «admin/» по умолчанию, но, возможно, мне нужно объявить конкретный URL-адрес при работе?

Спасибо за любую помощь.

ИЗМЕНИТЬ:

Я проверил журнал ошибок Apache, но я не получаю никаких ошибок.


person Kyrill    schedule 27.10.2014    source источник
comment
Не имеет отношения, но строка «sys.stdout = sys.stderr» не требуется, если вы не используете еще более древнюю версию mod_wsgi, чем в дистрибутивах Linux.   -  person Graham Dumpleton    schedule 17.04.2015


Ответы (1)


Вы пытались обновить свой маршрут с помощью «myapp»? Похоже, вам нужно обновить маршрут для производства. Может даже быть в состоянии отказаться от '/' на производстве. Попытайся.

@app.route('/')
@app.route('/myapp/')
def index():
person zerocog    schedule 16.04.2015