Dear all,

We have been struggling with our Apache with mod-wsgi for a while now and 
we finally managed to break the problem down to a minimum. We try to run a 
Dash application that uses datashader, but it kept on crashing. The 
following minimal example works fine on our server.

*myDashApp.py*
from flask import Flask
import dash
import dash_core_components as dcc
import dash_html_components as html

server = Flask('app')
app = dash.Dash('app', server=server)

colors = {
    'background': '#111111',
    'text': '#7FDBFF'
}
app.layout = html.Div(style={'backgroundColor': colors['background']}, 
children=[
    html.H1(
        children='Hello Dash',
        style={
            'textAlign': 'center',
            'color': colors['text']
        }
    ),
    html.Div(children='Dash: A web application framework for Python.', style
={
        'textAlign': 'center',
        'color': colors['text']
    }),
    dcc.Graph(
        id='Graph1',
        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': {
                'plot_bgcolor': colors['background'],
                'paper_bgcolor': colors['background'],
                'font': {
                    'color': colors['text']
                }
            }
        }
    )
])

if __name__ == '__main__':
    app.run_server()
(I copied that example from somewhere, but unfortunately forgot from where)

*wsgi.py*
sys.path.insert(0, "/data/website/myApp")

from myDashApp import server as application

*/etc/apache2/sites-enabled/default-ssl.conf*
<IfModule mod_ssl.c>
        <VirtualHost _default_:443>
                ServerName example.com
                ServerAdmin [email protected]

                # Flask application
                WSGIProcessGroup myApp
                WSGIApplicationGroup %{GLOBAL}

                WSGIScriptAlias / /data/website/myApp/wsgi.py
                WSGIDaemonProcess myApp 
python-home=/usr/share/miniconda3/envs/my_env_36 \
                                        threads=1 \
                                        processes=4 \
                                        display-name=%{GROUP} \
                                        lang='en_US.UTF-8' \
                                        locale='en_US.UTF-8' \
                                        queue-timeout=45 \
                                        socket-timeout=60 \
                                        connect-timeout=15 \
                                        request-timeout=60 \
                                        inactivity-timeout=0 \
                                        startup-timeout=15 \
                                        deadlock-timeout=60 \
                                        graceful-timeout=15 \
                                        eviction-timeout=0 \
                                        restart-interval=0 \
                                        shutdown-timeout=5 \
                                        maximum-requests=0

                <Directory "/data/website/myApp/>
                  AllowOverride all
                  AuthType Basic
                  AuthUserFile /data/passwords/passwords.pwd
                  AuthName "myDemoApp"
                  <RequireAll>
                   Require valid-user
                  </RequireAll>
                </Directory>

                ErrorLog ${APACHE_LOG_DIR}/error.log
                CustomLog ${APACHE_LOG_DIR}/access.log combined

                SSLEngine on

                SSLCertificateFile      /etc/apache2/cert/host_name.crt.pem
                SSLCertificateKeyFile /etc/apache2/cert/host_name.key

                SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
                SSLHonorCipherOrder     on

                SSLCipherSuite         
 
ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA

                Header always set Strict-Transport-Security 
"max-age=15552000; includeSubDomains"
                <FilesMatch "\.(cgi|shtml|phtml|php)$">
                                SSLOptions +StdEnvVars
                </FilesMatch>
                <Directory /usr/lib/cgi-bin>
                                SSLOptions +StdEnvVars
                </Directory>

        </VirtualHost>
</IfModule>

Now, we can add the following lines to our myDashApp.py:
import ssl
foo = ssl.SSLContext()

Once we do that, we get the following error in the apache error log:
[Tue Mar 31 06:25:02.092936 2020] [core:notice] [pid 28668] AH00094: Command 
line: '/usr/sbin/apache2'
[Tue Mar 31 09:31:37.336007 2020] [wsgi:error] [pid 30411] [remote 172.27.
1.200:55576] mod_wsgi (pid=30411): Failed to exec Python script file 
'/data/website/myApp/wsgi.py'.
[Tue Mar 31 09:31:37.336081 2020] [wsgi:error] [pid 30411] [remote 172.27.
1.200:55576] mod_wsgi (pid=30411): Exception occurred processing WSGI 
script '/data/website/myApp/wsgi.py'.
[Tue Mar 31 09:31:37.337969 2020] [wsgi:error] [pid 30411] [remote 172.27.
1.200:55576] Traceback (most recent call last):
[Tue Mar 31 09:31:37.338011 2020] [wsgi:error] [pid 30411] [remote 172.27.
1.200:55576]   File "/data/website/myApp/wsgi.py", line 5, in <module>
[Tue Mar 31 09:31:37.338016 2020] [wsgi:error] [pid 30411] [remote 172.27.
1.200:55576]     from myDashApp import server as application
[Tue Mar 31 09:31:37.338024 2020] [wsgi:error] [pid 30411] [remote 172.27.
1.200:55576]   File "/data/website/myApp/myDashApp.py", line 7, in <module>
[Tue Mar 31 09:31:37.338028 2020] [wsgi:error] [pid 30411] [remote 172.27.
1.200:55576]     bla = ssl.SSLContext()
[Tue Mar 31 09:31:37.338034 2020] [wsgi:error] [pid 30411] [remote 172.27.
1.200:55576]   File 
"/usr/share/miniconda3/envs/my_env_36/lib/python3.6/ssl.py", line 391, in 
__new__
[Tue Mar 31 09:31:37.338038 2020] [wsgi:error] [pid 30411] [remote 172.27.
1.200:55576]     self = _SSLContext.__new__(cls, protocol)
[Tue Mar 31 09:31:37.338059 2020] [wsgi:error] [pid 30411] [remote 172.27.
1.200:55576] ssl.SSLError: ('No cipher can be selected.',)
[Tue Mar 31 09:31:38.189212 2020] [wsgi:error] [pid 30409] [remote 172.27.
1.200:55575] mod_wsgi (pid=30409): Failed to exec Python script file 
'/data/website/myApp/wsgi.py'.
[Tue Mar 31 09:31:38.189269 2020] [wsgi:error] [pid 30409] [remote 172.27.
1.200:55575] mod_wsgi (pid=30409): Exception occurred processing WSGI 
script '/data/website/myApp/wsgi.py'.
[Tue Mar 31 09:31:38.189782 2020] [wsgi:error] [pid 30409] [remote 172.27.
1.200:55575] Traceback (most recent call last):
[Tue Mar 31 09:31:38.189810 2020] [wsgi:error] [pid 30409] [remote 172.27.
1.200:55575]   File "/data/website/myApp/wsgi.py", line 5, in <module>
[Tue Mar 31 09:31:38.189813 2020] [wsgi:error] [pid 30409] [remote 172.27.
1.200:55575]     from myDashApp import server as application
[Tue Mar 31 09:31:38.189818 2020] [wsgi:error] [pid 30409] [remote 172.27.
1.200:55575]   File "/data/website/myApp/myDashApp.py", line 7, in <module>
[Tue Mar 31 09:31:38.189821 2020] [wsgi:error] [pid 30409] [remote 172.27.
1.200:55575]     bla = ssl.SSLContext()
[Tue Mar 31 09:31:38.189825 2020] [wsgi:error] [pid 30409] [remote 172.27.
1.200:55575]   File 
"/usr/share/miniconda3/envs/my_env_36/lib/python3.6/ssl.py", line 391, in 
__new__
[Tue Mar 31 09:31:38.189828 2020] [wsgi:error] [pid 30409] [remote 172.27.
1.200:55575]     self = _SSLContext.__new__(cls, protocol)
[Tue Mar 31 09:31:38.189842 2020] [wsgi:error] [pid 30409] [remote 172.27.
1.200:55575] ssl.SSLError: ('No cipher can be selected.',)

Did anybody encounter a similar problem or does anybody have an idea on how 
to fix that?

Just for a bit of context, we don't want to use SSL in our application, but 
somehow datashader uses it for something and our goal is to get datashader to 
work.

Thanks,
Raphael

-- 
You received this message because you are subscribed to the Google Groups 
"modwsgi" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/modwsgi/f3044394-eff1-4df3-8238-d9caeed3dcc0%40googlegroups.com.

Reply via email to