NGINX Unit

Mailman Web§

要使用 Unit 安装并运行 Mailman 3 套件的 Web UI

  1. 使用 Python 3.7+ 语言模块安装 Unit

  2. 按照 Mailman 的 指南 安装其先决条件和核心文件,但在 设置 WSGI 服务器 时停止;我们将使用 Unit。此外,请注意以下设置(指南中的值在冒号后给出)

    • 虚拟环境路径:/opt/mailman/venv/

    • 安装路径:/etc/mailman3/

    • 静态文件路径:/opt/mailman/web/static/

    • 用户和组:mailman:mailman

    这些是配置 Unit 所需的。

  3. 运行以下命令,以便 Unit 可以访问 Mailman 的静态文件

    # chown -R unit:unit /opt/mailman/web/static/
    

    注意

    unit:unit 用户组对仅适用于 官方软件包、Docker 镜像 和一些 第三方存储库。否则,帐户名称可能不同;运行 ps aux | grep unitd 命令以确保。

    或者,将 Unit 的非特权用户帐户添加到 Mailman 的组,以便 Unit 可以访问静态文件

    # usermod -a -G mailman unit
    
  4. 接下来,为 Unit 准备 Mailman 配置(使用步骤 2 中的值,用于共享路径主页

    {
        "listeners": {
            "*:80": {
                "pass": "routes"
            }
        },
    
        "routes": [
            {
                "match": {
                    "uri": "/static/*"
                },
    
                "action": {
                    "share": "/opt/mailman/web/$uri"
                }
            },
            {
                "action": {
                    "pass": "applications/mailman_web"
                }
            }
        ],
    
        "applications": {
            "mailman_web": {
                "type": "python 3.X",
                "path": "/etc/mailman3/",
                "home": "/opt/mailman/venv/",
                "module": "mailman_web.wsgi",
                "user": "mailman",
                "environment": {
                    "DJANGO_SETTINGS_MODULE": "settings"
                }
            }
        }
    }
    
  5. 上传更新的配置。假设上述 JSON 已添加到 config.json

    # curl -X PUT --data-binary @config.json --unix-socket \
           /path/to/control.unit.sock http://localhost/config/
    

    注意

    控制套接字 路径可能有所不同;运行 unitd -h 或参阅 启动和关闭 以了解详情。

    成功更新后,应在侦听器的 IP 地址和端口上提供 Mailman 的 Web UI

    Mailman on Unit - Lists Screen