Python 使用mod_wsgi在Apache上部署Dash应用程序

Python 使用mod_wsgi在Apache上部署Dash应用程序,python,apache,mod-wsgi,plotly-dash,Python,Apache,Mod Wsgi,Plotly Dash,我正在尝试使用Apache和mod_wsgi作为测试托管一个简单的dash应用程序。 但是,页面没有加载,似乎陷入了重定向循环 遵循本Flask部署教程: 遵循此mod_wsgi配置教程,简单的wsgi应用程序按预期工作: 用dash文件替换简单的WSGI应用程序时会出现问题。dash应用程序在本地按预期运行。没有错误消息,页面只是没有加载 这是apache配置文件: WSGIDaemonProcess dash socket-user=aroth user=aroth group=apach

我正在尝试使用Apache和mod_wsgi作为测试托管一个简单的dash应用程序。 但是,页面没有加载,似乎陷入了重定向循环

遵循本Flask部署教程:

遵循此mod_wsgi配置教程,简单的wsgi应用程序按预期工作:

用dash文件替换简单的WSGI应用程序时会出现问题。dash应用程序在本地按预期运行。没有错误消息,页面只是没有加载

这是apache配置文件:

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>
test.py(这是一个取自此处的示例dash应用程序)

如上所述,请尝试以下操作:

  • 如有必要,添加requests\u pathname\u prefix参数
  • app=dash.dash(\uuuuu name\uuuu,external\u stylesheets=external\u stylesheets,requests\u pathname\u prefix='/hello/')

  • 不要重新分配服务器变量。相反,test2.wsgi文件应如下所示:

    来自测试导入应用程序
    应用程序=应用程序服务器

  • 经过一番努力,我终于成功了。

    如前所述,尝试以下方法:

  • 如有必要,添加requests\u pathname\u prefix参数
  • app=dash.dash(\uuuuu name\uuuu,external\u stylesheets=external\u stylesheets,requests\u pathname\u prefix='/hello/')

  • 不要重新分配服务器变量。相反,test2.wsgi文件应如下所示:

    来自测试导入应用程序
    应用程序=应用程序服务器

  • 经过一番努力,我终于成功了

    from test import server as application
    
    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)