Hue ships out of the box with the HTTP server CherryPy, but some users have expressed interest having Apache HTTP 2 serve Hue with mod_wsgi. Their motivation is that they are more familiar with Apache or have already several Apache instances deployed.
It turns out it’s pretty simple to do. It only requires a small script, a Hue configuration option, and a configuration block inside Apache. This post describes how to have Apache serve the static content and run the Python code of Hue.
This script (which was just added in
desktop/core/desktop/wsgi.py) enables any Web server that speaks WSGI to launch Hue and route requests to it:
import os os.environ.setdefault("DJANGO_SETTINGS_MODULE", "desktop.settings") # This application object is used by the development server # as well as any WSGI server configured to use this file. from django.core.wsgi import get_wsgi_application application = get_wsgi_application()
The next step disables booting Hue from the
runcpserver command. In Cloudera Manager, go to Hue > Configuration > Service-Wide > Advanced, and add the following to the hue safety valve:
If you are running Hue outside of Cloudera Manager, modify
[desktop] ... enable_server=no
The final step is to configure Apache to launch Hue by adding the following to the
WSGIScriptAlias / $HUE_PATH/desktop/core/src/desktop/wsgi.py WSGIPythonPath $HUE_PATH/desktop/core/src/desktop:$HUE_PATH/build/env/lib/python2.7/site-packages WSGIDaemonProcess $HOSTNAME home=$HUE_PATH python-path=$HUE_PATH/desktop/core/src/desktop:$HUE_PATH/build/env/lib/python2.7/site-packages threads=30 WSGIProcessGroup $HOSTNAME <Directory $HUE_PATH/desktop/core/src/desktop> <Files wsgi.py> Order Deny,Allow # If apache 2.4 Require all granted # otherwise # Allow from all # Some systems, like Redhat, lock down /var/run, so you may need to change where to store the socket with: # WSGISocketPrefix run/wsgi </Files> </Directory>
$HOSTNAME should be the hostname of the machine running Hue, and
$HUE_PATH is where Hue is installed. If you’re using Cloudera Manager, by default it should be either
/usr/lib/hue for a package install, or
/opt/cloudera/parcels/CDH/lib/hue for a parcel install.