Ubuntu サーバーで Apache と mod_wsgi を使用して Flask アプリをデプロイしようとしています。
私が実装した安らかなリクエストではうまくいくようですが、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>
__ init __.pyで Flask アプリをインスタンス化する方法は次のとおりです。
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/ にあるはずの管理インターフェイスにアクセスできません。
フラスコ管理者をインスタンス化する方法に問題があると思います。デフォルトの「admin/」URL を保持しましたが、本番環境では特定の URL を宣言する必要があるのではないでしょうか?
助けてくれてありがとう。
編集 :
Apache エラー ログを確認しましたが、エラーは発生しません。