Reputation: 70
I am trying host a simple dash application as a test using Apache and mod_wsgi. However, the page isn’t loading and seems to be stuck in a loop of redirects.
This Flask deployment tutorial has been followed: https://flask.palletsprojects.com/en/1.1.x/deploying/mod_wsgi/
This mod_wsgi configuration tutorial has been followed and the simple WSGI application works as expected: https://modwsgi.readthedocs.io/en/develop/user-guides/quick-configuration-guide.html
The issue arises when replacing the simple WSGI application with the dash files. The dash application runs as expected locally. There are no error messages, the page just doesn't load.
This is the apache config file:
WSGIDaemonProcess dash socket-user=aroth user=aroth group=apache threads=5 home=/home/aroth/public_html/test2/ python-path=/home/aroth/.local/lib/python3.6/site-packages
WSGIScriptAlias /dash/aroth/test2/ /home/aroth/public_html/test2/test2.wsgi
<Directory /home/aroth/public_html/test2>
AssignUserID aroth apache
WSGIProcessGroup dash
WSGIApplicationGroup %{GLOBAL}
Options FollowSymLinks Indexes
Require all granted
</Directory>
test2.wsgi
from test import server as application
test.py (this is an example dash application taken from here http://dash-docs.herokuapp.com/deployment)
import dash
import dash_core_components as dcc
import dash_html_components as html
external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']
app = dash.Dash(__name__, external_stylesheets=external_stylesheets)
server = app.server
app.layout = html.Div([
html.H2('Hello World'),
dcc.Dropdown(
id='dropdown',
options=[{'label': i, 'value': i} for i in ['LA', 'NYC', 'MTL']],
value='LA'
),
html.Div(id='display-value')
])
@app.callback(dash.dependencies.Output('display-value', 'children'),
[dash.dependencies.Input('dropdown', 'value')])
def display_value(value):
return 'You have selected "{}"'.format(value)
if __name__ == '__main__':
app.run_server(debug=True)
Upvotes: 1
Views: 3017
Reputation: 1
As stated here, try the following:
app = dash.Dash(__name__, external_stylesheets=external_stylesheets, requests_pathname_prefix='/hello/')
Do NOT reassign the server variable. Instead, your test2.wsgi file should look as follows:
from test import app
application = app.server
After quite some struggle, this eventually did the trick for me.
Upvotes: 0