Я пытаюсь развернуть приложение python da sh на моем apache сервере. Я следил за скудным объемом информации об этой конфигурации, которую смог найти ( официальные документы ; этот поток устранения неполадок был немного лучше ). Когда я захожу на веб-сайт, страница возвращает 500 Internal Server Error
, которое в журнале ошибок сервера обозначено как "Dash object not callable"
. Это файлы конфигурации:
>> cat /var/www/html/wsgi/dashGAF.wsgi
#!/usr/bin/python
import sys
sys.path.insert(0,"/home/ubuntu/dashboards/")
from dashGAF import app as application
>> cat /etc/apache2/sites-available/dash.conf
WSGIDaemonProcess dashGAF user=ubuntu group=ubuntu home=/home/ubuntu threads=5
WSGIScriptAlias /dashGAF /var/www/html/wsgi/dashGAF.wsgi
<Directory /home/ubuntu/dashboards>
WSGIProcessGroup dashGAF
WSGIApplicationGroup %{GLOBAL}
WSGIScriptReloading On
Require all granted
</Directory>
>> cat dashGAF.py
# -*- coding: utf-8 -*-
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, routes_pathname_prefix='/dashGAF/')
server = app.server
app.layout = html.Div(children=[
html.H1(children='Hello Dash'),
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': u'Montréal'},
],
'layout': {
'title': 'Dash Data Visualization'
}
}
)
])
if __name__ == '__main__':
app.run_server(debug=True, host='0.0.0.0')
Когда я захожу в приложение da sh по адресу the_ip_address/dashGAF
, я получаю 500 Internal Server Error
. Просматривая error.log, я вижу:
[Sat Jun 20 04:42:59.502528 2020] [wsgi:error] [pid 6064:tid 140622992238336] [client 118.210.193.245:50042] mod_wsgi (pid=6064): Exception occurred processing WSGI script '/var/www/html/wsgi/dashGAF.wsgi'.
[Sat Jun 20 04:42:59.502675 2020] [wsgi:error] [pid 6064:tid 140622992238336] [client 118.210.193.245:50042] TypeError: 'Dash' object is not callable
Любая помощь в решении этой проблемы была бы БОЛЬШОЙ признательна! Также были бы полезны любые предложения по изменению файлов конфигурации.
Дополнительные сведения:
- Я получал ошибку импорта модуля, например, как показано ниже в моем / var / log /apache2/error.log:
[Sat Jun 20 03:38:58.556219 2020] [wsgi:error] [pid 583:tid 140297735726848] [client 118.210.193.245:55574] File "/home/ubuntu/dashboards/dashGAF.py", line 2, in <module>
[Sat Jun 20 03:38:58.556265 2020] [wsgi:error] [pid 583:tid 140297735726848] [client 118.210.193.245:55574] import dash
[Sat Jun 20 03:38:58.556285 2020] [wsgi:error] [pid 583:tid 140297735726848] [client 118.210.193.245:55574] ImportError: No module named dash
Что я смог исправить, выполнив sudo pip install dash==1.13.2
.
Я сделал все *. py и * .wsgi файлы -rwxr-xr-x
Я включил конфигурацию сайта с помощью sudo a2ensite dash.conf
и перезагрузил конфигурацию с помощью udo systemctl reload apache2
.
Я считаю, что запущенная версия python - python2 .7 (на основе журнала apache error.log); Не знаю точно, как указать 2.7 или 3.
Если я отредактирую dashGAF.wsgi, чтобы получить from dashGAF import server as application
, я получаю внутреннюю ошибку 500, но со следующими данными в журнале сервера :
[Sun Jun 21 06:33:28.181450 2020] [wsgi:error] [pid 12237:tid 139670549669632] [client 118.210.193.245:52221] mod_wsgi (pid=12237): Target WSGI script '/var/www/html/wsgi/dashGAF.wsgi' cannot be loaded as Python module.
[Sun Jun 21 06:33:28.181512 2020] [wsgi:error] [pid 12237:tid 139670549669632] [client 118.210.193.245:52221] mod_wsgi (pid=12237): Exception occurred processing WSGI script '/var/www/html/wsgi/dashGAF.wsgi'.
[Sun Jun 21 06:33:28.181545 2020] [wsgi:error] [pid 12237:tid 139670549669632] [client 118.210.193.245:52221] Traceback (most recent call last):
[Sun Jun 21 06:33:28.181577 2020] [wsgi:error] [pid 12237:tid 139670549669632] [client 118.210.193.245:52221] File "/var/www/html/wsgi/dashGAF.wsgi", line 4, in <module>
[Sun Jun 21 06:33:28.181685 2020] [wsgi:error] [pid 12237:tid 139670549669632] [client 118.210.193.245:52221] from dashGAF import server as application
[Sun Jun 21 06:33:28.181714 2020] [wsgi:error] [pid 12237:tid 139670549669632] [client 118.210.193.245:52221] ImportError: cannot import name server
Возможно, в бите есть полезная деталь, где говорится: «Целевой сценарий WSGI '/ var / www/html/wsgi/dashGAF.wsgi' не может быть загружен как Python модуль ". ??
- Если я отредактирую dashGAF.wsgi, чтобы получить
application = app.server
, я получу 404 Not Foun:
from dashGAF import app
application = app.server