Проблема с развертыванием нескольких dash-приложений с использованием одного файла конфигурации на сервере apache2 - PullRequest
0 голосов
/ 12 декабря 2018

Мы пытаемся развернуть несколько dash-приложений, используя один и тот же конфигурационный файл, но разные wsgi-файлы.Прямо сейчас это то, что у нас есть, и когда мы запускаем его, на странице написано «ошибка загрузки» макета.

Наш конфигурационный файл и wsgi-файлы показаны ниже:

Config-файл:

WSGIPythonPath /var/www/test/test1:/var/www/test/test2

<VirtualHost *:8084>
    ServerName <example ip>
    ServerAdmin youremail@mail.com

    WSGIScriptAlias /test1 /var/www/test/wsgi-files/test1.wsgi
    <Directory /var/www/test/test1/>
            Require all granted
    </Directory>

    Alias /test1/static /var/www/test/test1/static
    <Directory /var/www/test/test1/static/>
            Require all granted
    </Directory>

    WSGIScriptAlias /test2 /var/www/test/wsgi-files/test2.wsgi
    <Directory /var/www/test/test2/>
            Require all granted
    </Directory>

    Alias /test2/static /var/www/test/test2/static
    <Directory //var/www/test/test2/static/>
            Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    LogLevel warn
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Wsgi-файл:

#!/usr/bin/python2.7
import sys
import logging
sys.stdout = sys.stderr
logging.basicConfig(stream=sys.stderr)
sys.path.insert(0,"/var/www/test/")

from test1 import server as application

Второй wsgi-файл похож на приведенный выше, но вместо этого указывает на test2.

Мы использовали простой тестовый код из тире в качестве примеров и хотим, чтобы первое тестовое приложение было найдено att example.com/test1, а второе - вторым.приложение на example.com/test2.

В WSGIScriptAlias, если мы напишем «/ /var/www/test/wsgi-files/test1.wsgi» вместо «/ test1 /var/www/test/wsgi-files/test1.wsgi», мыне получите ошибку, но приложение test1 будет появляться на каждой странице порта, на котором мы развертываем.Мы довольно плохо знакомы с dash, python и web-разработкой, поэтому, может быть, это простой ответ, но мы потратили последние часы, пытаясь найти каждый пример, который сможем найти.Среди прочего, это то, что мы попробовали: https://www.digitalocean.com/community/questions/running-mutliple-flask-application.

Код приложения, который мы используем, показан ниже.

import dash
import dash_core_components as dcc
import dash_html_components as html
from flask import Flask

print('Hello this is monkey')
external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']

server=Flask(__name__)
app = dash.Dash(__name__, server=server,external_stylesheets=external_stylesheets)

app.layout = html.Div(children=[
    html.H1(children='Test 1'),

    html.Div(children='''
        Dash: A web application framework for Python.
    '''),

    dcc.Graph(
        id='example-graph',
        figure={
            'data': [
                {'x': [1, 2, 3], 'y': [4, 1, 2], 'type': 'bar', 'name': 'SF'},
                {'x': [1, 2, 3], 'y': [2, 4, 5], 'type': 'bar', 'name': 'Montreal'},
            ],
            'layout': {
                'title': 'Dash Data Visualization'
            }
        }
    )
])

app.css.append_css({"external_url": "https://codepen.io/chriddyp/pen/bWLwgP.css"})
server=app.server
@server.route("/test1")
def MyDashApp():
        return app.index()

if __name__ == '__main__':
    app.run_server(debug=True)

Мы будем очень благодарны за любую помощь.

...