Я пытаюсь развернуть приложение 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, но я не получаю никаких ошибок.