Horizon is a Django-based project aimed at providing a complete OpenStack
Dashboard along with an extensible framework for building new dashboards from
reusable components. The openstack_dashboard module is a reference
implementation of a Django site that uses the horizon app to provide web-based
interactions with the various OpenStack projects.
In the other systems
The newest version among them is 27.0.0, as upstream numbers it.
cd /usr/dports/www/py-horizon && make install clean
Dependency graph
Ports that need it on the left, what it needs to run on the right; at most 8 of each. "Dependencies" below lists them all.
graph LR
me["www/py-horizon"]
me --> d0["databases/py-python-memcached"]
me --> d1["databases/py-python-swiftclient"]
me --> d2["devel/py-babel"]
me --> d3["devel/py-futurist"]
me --> d4["devel/py-iso8601"]
me --> d5["devel/py-keystoneauth1"]
me --> d6["devel/py-oslo.concurrency"]
me --> d7["devel/py-oslo.config"]
me -.-> dmore(["51 more"])
classDef this fill:#ab2b28,color:#ffffff,stroke:#ab2b28
class me this
======================
Apache configuration
======================
If you plan to use apache make sure that the mod_wsgi module is enabled and the
correct ownership for static/local libraries for the openstack_dashboard are
set:
# chown -R horizon /usr/local/lib/python3.11/site-packages/openstack_dashboard/static
# chown -R horizon /usr/local/lib/python3.11/site-packages/openstack_dashboard/local
Use the following snippet as reference:
### Start
<VirtualHost *:80>
WSGIScriptAlias / /usr/local/lib/python3.11/site-packages/openstack_dashboard/wsgi/django.wsgi
WSGIDaemonProcess horizon user=horizon group=horizon processes=3 threads=10 display-name=%{GROUP}
WSGIProcessGroup horizon
WSGIApplicationGroup %{GLOBAL}
DocumentRoot /var/lib/horizon
Alias /static/horizon/lib/angular/ /usr/local/lib/python3.11/site-packages/xstatic/pkg/angular/data/
Alias /static/horizon/lib/angular_bootstrap/ /usr/local/lib/python3.11/site-packages/xstatic/pkg/angular_bootstrap/data/
Alias /static/horizon/lib/angular_fileupload/ /usr/local/lib/python3.11/site-packages/xstatic/pkg/angular_fileupload/data/
Alias /static/horizon/lib/angular_gettext/ /usr/local/lib/python3.11/site-packages/xstatic/pkg/angular_gettext/data/
Alias /static/horizon/lib/angular_lrdragndrop/ /usr/local/lib/python3.11/site-packages/xstatic/pkg/angular_lrdragndrop/data/
Alias /static/horizon/lib/angular_schemaform/ /usr/local/lib/python3.11/site-packages/xstatic/pkg/angular_schemaform/data/
Alias /static/horizon/lib/angular_smart_table/ /usr/local/lib/python3.11/site-packages/xstatic/pkg/angular_smart_table/data/
Alias /static/horizon/lib/bootstrap_datepicker/ /usr/local/lib/python3.11/site-packages/xstatic/pkg/bootstrap_datepicker/data/
Alias /static/horizon/lib/bootstrap_scss/ /usr/local/lib/python3.11/site-packages/xstatic/pkg/bootstrap_scss/data/
Alias /static/horizon/lib/bootswatch/ /usr/local/lib/python3.11/site-packages/xstatic/pkg/bootswatch/data/
Alias /static/horizon/lib/d3/ /usr/local/lib/python3.11/site-packages/xstatic/pkg/d3/data/
Alias /static/horizon/lib/font_awesome/ /usr/local/lib/python3.11/site-packages/xstatic/pkg/font_awesome/data/
Alias /static/horizon/lib/hogan/ /usr/local/lib/python3.11/site-packages/xstatic/pkg/hogan/data/
Alias /static/horizon/lib/jasmine/ /usr/local/lib/python3.11/site-packages/xstatic/pkg/jasmine/data/
Alias /static/horizon/lib/jquery_migrate/ /usr/local/lib/python3.11/site-packages/xstatic/pkg/jquery_migrate/data/
Alias /static/horizon/lib/jquery_quicksearch/ /usr/local/lib/python3.11/site-packages/xstatic/pkg/jquery_quicksearch/data/
Alias /static/horizon/lib/jquery_tablesorter/ /usr/local/lib/python3.11/site-packages/xstatic/pkg/jquery_tablesorter/data/
Alias /static/horizon/lib/jsencrypt/ /usr/local/lib/python3.11/site-packages/xstatic/pkg/jsencrypt/data/
Alias /static/horizon/lib/mdi/ /usr/local/lib/python3.11/site-packages/xstatic/pkg/mdi/data/
Alias /static/horizon/lib/objectpath/ /usr/local/lib/python3.11/site-packages/xstatic/pkg/objectpath/data/
Alias /static/horizon/lib/rickshaw/ /usr/local/lib/python3.11/site-packages/xstatic/pkg/rickshaw/data/
Alias /static/horizon/lib/roboto_fontface/ /usr/local/lib/python3.11/site-packages/xstatic/pkg/roboto_fontface/data/
Alias /static/horizon/lib/spin/ /usr/local/lib/python3.11/site-packages/xstatic/pkg/spin/data/
Alias /static/horizon/lib/termjs/ /usr/local/lib/python3.11/site-packages/xstatic/pkg/termjs/data/
Alias /static/horizon/lib/tv4/ /usr/local/lib/python3.11/site-packages/xstatic/pkg/tv4/data/
Alias /static/horizon /usr/local/lib/python3.11/site-packages/horizon/static/horizon
Alias /static /usr/local/lib/python3.11/site-packages/openstack_dashboard/static
<Directory />
AllowOverride None
</Directory>
<Directory /usr/local/lib/python3.11/site-packages/openstack_dashboard/wsgi>
Require all granted
</Directory>
<Directory /usr/local/lib/python3.11/site-packages/openstack_dashboard/static>
Require all granted
</Directory>
<Directory /usr/local/lib/python3.11/site-packages/horizon/static>
Require all granted
</Directory>
<Directory /usr/local/lib/python3.11/site-packages/xstatic/pkg/*/data>
Require all granted
</Directory>
</VirtualHost>
### End
======================
Custom configuration
======================
Create the configuration:
# cd /usr/local/lib/python3.11/site-packages/openstack_dashboard/local
# cp local_settings.py.example local_settings.py
Add one or more entries to the ALLOWED_HOSTS directive:
ALLOWED_HOSTS = [ 'host1', '192.168.0.1' ]
Horizon must be configured for at least one Keystone server to work properly:
OPENSTACK_HOST = "127.0.0.1"
OPENSTACK_KEYSTONE_URL = "http://%s:5000/v3" % OPENSTACK_HOST
OPENSTACK_KEYSTONE_DEFAULT_ROLE = "_member_"
To enable django-compressor add this option:
STATIC_ROOT = '/usr/local/lib/python3.11/site-packages/openstack_dashboard/static'
This site uses Google Analytics cookies to count visits and see which pages are read.
No cookie is set until you accept. What is collected