[ English | 한국어 (대한민국) | português (Brasil) | français | español | English (United Kingdom) | русский | 中文 (简体, 中国) | Esperanto | Deutsch | Indonesia | नेपाली ]

手动安装

此页面涵盖在生产环境中安装 horizon 的基本步骤。 如果您正在寻找开发环境,请参阅 快速入门

有关系统依赖项,请参阅 系统要求

安装

注意

在下面的命令中,将“<release>”替换为您选择的版本,例如“queens”或“rocky”。

如果您使用开发版本,请将“stable/<release>”替换为“master”。

  1. 克隆 Horizon

    $ git clone https://opendev.org/openstack/horizon -b stable/<release> --depth=1
    $ cd horizon
    
  2. 将 horizon python 模块安装到您的系统中

    $ sudo pip install -c https://opendev.org/openstack/requirements/raw/branch/stable/<release>/upper-constraints.txt .
    

配置

本节包含运行 horizon 所需的关键设置的简要摘要。 有关更多详细信息,请参阅 设置参考

设置

创建 openstack_dashboard/local/local_settings.py。 通常,复制 openstack_dashboard/local/local_settings.py.example 并进行编辑是一个好主意。 至少,需要修改以下设置

DEBUG

设置为 False

ALLOWED_HOSTS

设置为您的域名

OPENSTACK_HOST

设置为您的 Keystone 端点的 IP。 您可能还需要更改 OPENSTACK_KEYSTONE_URL

注意

“配置”部分中的以下步骤是可选的,但在生产环境中强烈建议使用。

翻译

编译用于国际化的翻译消息目录。 如果您不需要支持除美国英语以外的语言,则不需要此步骤。 需要 GNU gettext 工具来编译消息目录。

$ sudo apt install gettext
$ ./manage.py compilemessages

静态资源

通过将 COMPRESS_OFFLINE = True 添加到您的 local_settings.py,来压缩您的静态文件,然后运行以下命令

$ ./manage.py collectstatic
$ ./manage.py compress

日志

Horizons 使用 Django 的日志配置机制,可以通过更改 local_settings.py 中的 LOGGING 字典来自定义。 默认情况下,Horizon 的日志示例将日志级别设置为 INFO

Horizon 还使用许多单独记录的第三方客户端。 可以通过 Horizon 的 LOGGING 配置控制这些客户端的日志级别,但是行为可能会超出 Horizon 的控制范围。

有关配置 Horizon 中日志记录的更多信息,请阅读 Django logging directivePython logging directive 文档。 Horizon 是基于 Python 和 Django 构建的。

会话存储

Horizon 使用 Django 的会话框架 来处理会话数据。 有许多可用的会话后端,这些后端通过 local_settings.py 文件中的 SESSION_ENGINE 设置进行选择。

Memcached

SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.PyMemcacheCache',
        'LOCATION': 'controller:11211',
    }
}

使用诸如 memcached 之类的应用程序进行外部缓存可以提供持久性和共享存储,并且对于小型部署和/或开发非常有用。 但是,对于分布式和高可用性场景,memcached 存在固有的问题,这些问题超出了本文档的范围。

需求

  • 正在运行且可访问的 Memcached 服务

  • 已安装 Python memcached 模块

数据库

SESSION_ENGINE = 'django.core.cache.backends.db.DatabaseCache'
DATABASES = {
    'default': {
        # Database configuration here
    }
}

基于数据库的会话是可扩展的(使用适当的数据库策略),持久的,并且可以实现高并发和高可用性。

这种方法的缺点是基于数据库的会话是速度最慢的会话存储之一,并且在重负载下会产生很高的开销。 数据库部署的适当配置也可能是一项艰巨的任务,超出了本文档的范围。

缓存数据库

为了减轻数据库查询的性能问题,您还可以考虑使用 Django 的 cached_db 会话后端,它同时利用您的数据库和缓存基础设施来执行写入缓存和高效检索。 您可以通过配置数据库和缓存(如上所述),然后使用

SESSION_ENGINE = "django.contrib.sessions.backends.cached_db"

部署

  1. 设置一个支持 WSGI 的 Web 服务器。 例如,在 Ubuntu 上安装 Apache Web 服务器

    $ sudo apt install apache2 libapache2-mod-wsgi-py3
    

    您可以使用提供的 openstack_dashboard/wsgi.py,或者使用以下命令生成一个 openstack_dashboard/horizon_wsgi.py 文件(它会检测您是否使用虚拟环境,以自动构建一个适配的 WSGI 文件)

    $ ./manage.py make_web_conf --wsgi
    

    然后配置 Web 服务器通过 WSGI 托管 OpenStack 仪表板。 对于 apache2 Web 服务器,您可能需要创建 /etc/apache2/sites-available/horizon.conf。 DevStack 中的模板是一个很好的示例文件。 https://opendev.org/openstack/devstack/src/branch/2025.2/files/apache-horizon.template。 或者,您可以自动生成 Apache 配置文件。 如果您之前生成了 openstack_dashboard/horizon_wsgi.py 文件,它将使用该文件,否则将默认使用 openstack_dashboard/wsgi.py

    $ ./manage.py make_web_conf --apache > /etc/apache2/sites-available/horizon.conf
    

    与上述相同,但如果您需要 SSL 支持

    $ ./manage.py make_web_conf --apache --ssl --sslkey=/path/to/ssl/key --sslcert=/path/to/ssl/cert > /etc/apache2/sites-available/horizon.conf
    

    默认情况下,Apache 配置将启动与启动 make_web_conf 命令的机器的 CPU 数量 + 1 个 Apache 进程。 如果目标机器不是相同的,或者您想指定进程数,请添加 --processes 选项

    $ ./manage.py make_web_conf --apache --processes 10 > /etc/apache2/sites-available/horizon.conf
    
  2. 启用上述配置并重新启动 Web 服务器

    $ sudo a2ensite horizon
    $ sudo systemctl restart apache2
    

下一步