写点什么

“NGINX 邮件组历史”论坛上线了

作者:通明湖
  • 2025-02-24
    北京
  • 本文字数:1562 字

    阅读完需:约 5 分钟

背景



长久以来,forum.nginx.org 作为 nginx 邮件讨论组的论坛形式,是 NJet 以及广大的 NGINX 开发人员交流、讨论的主要资源站点,尤其是方便的搜索能力,使得开发人员可以方便的查询历史讨论信息。但很遗憾,该站点已经下线,F5 推出了 community.nginx.org, 但并没有把历史数据迁移过来。

OpenNJet 因此决定从 NGINX email 讨论组的邮件归档中,重构一个论坛,便于开发人员进行搜索历史数据。同时,该论坛直接采用了 NJet 实现的 python 应用服务器框架,也是 NJet 能力的一个证明

设计

部署架构

出于对 NJet 应用服务器能力的展示要求,NJet 选择了基于 python 语言,django 架构的开源论坛软件 spirit(https://github.com/nitely/Spirit),不需要采用传统的 nginx 代理+python 应用服务器的模式,spirit 安装后,将直接在 NJet 进程内部运行,如下图展示



Email archive 到论坛的转换模型

受限于 spirit 的模型, email archive 转换为论坛时,不能够根据 email 进行树状转换,而仅仅实现了一层的扁平转换。举例来说,Email A 首先创建了一个主题的讨论邮件,后续 Email B ,C 做了回复, Email D 针对 Email C 做了回复。所有这 4 封邮件,会转换为一个 topic(即通过邮件 A 的 subject 创建的 topic)的讨论,该 topic 下会存在 4 条讨论。

论坛的用户直接从邮件的发送者转化而来,发送者的姓名+邮件地址构建为一个唯一用户

配置实例

python 环境和 spirit 项目初始化安装 pyenv 以及建立虚拟环境与安装 django-spirit 等包

安装与配置数据库

配置 njet 使用 wsgi 启动 spirit 论坛

Bash  load_module modules/njt_python_wsgi_module.so;  python_stack_size 2m;  http {  ...  server {  server_name 192.168.40.40;  listen 192.168.40.40:80;  location / {  root /home/njet/spirit/nginxform;  wsgi nginxform;  }  location /static/ {  root /home/njet/spirit/nginxform/;  expires 1y;  add_header Cache-Control public;  }  }  <br/>...  }
复制代码

Njet 启动

配置 PYTHONPATH 后即可

Bash  export PYTHONPATH="/home/njet/.pyenv/versions/spirit-env/lib/python3.8/site-packages:/home/njet/spirit/nginxform"  /usr/local/njet_spirit/sbin/njet -p /usr/local/njet_spirit -c conf/njet.conf
复制代码

参考说明

1.为什么采用 python 应用直接部署在 NJet 的架构

该部署模式,具备传统的部署模式有部署简便、开发简化、高性能的优势。

部署简便:

避免了 proxy+python 应用服务器部署架构的由 proxy 处理静态资源,应用服务器出来动态请求的模型,仅仅一个 server 就可以利用 NJet 的高效 IO 处理静态资源

开发简化:

python 应用开发人员,仅仅编写同步调用的代码,无需考虑线程、异步调用, 业务请求就可以得以在 NJet 内部以类似协程的模型执行,IO 操作不会被阻塞,从而实现业务的并行

高性能:

NJet 中运行 python 应用会比常见的 python 应用服务器有 10 倍以上的性能提升

2.当前上线 nginx-dev 的历史

NGINX email archive 从https://mailman.nginx.org/pipermail/nginx-devel/获得

3.从 NGINX email archive 转换为论坛的脚本,借助于 deepseek 编写完成,如果有类似的需求,可以联系 njet-user@njet.org.cn 获取

4.Spirit 论坛软件的安装,可以参考其 readdocs 站点

其支持多种数据库连接,在本项目中,选择了 mysql 数据库,并选择了基于纯 python 实现的 mysql connector 驱动,是因为可以利用 NJet 特有的“同步编写,异步 IO 执行能力”

5.请直接访问 https://forum.njet.org.cn


NJet 应用引擎通过内核重构实现了独特的运行时动态配置加载能力,是新一代高性能 Web 应用引擎。NJet 拥有高性能数据面处理能力,将集群、高可用、主动健康检查、声明式 API 等多种辅助功能,通过 NJet 独特的副驾驶 CoPilot 服务框架调度,从而方便功能扩展,隔离管理 / 控制功能对数据面的影响,NJet 应用引擎性能超过 CNCF 推荐 Envoy 应用引擎的三倍。 邮件组  官网

发布于: 刚刚阅读数: 5
用户头像

通明湖

关注

让应用永远在线! 2022-10-13 加入

持续科技创新,信创应用交付领域的排头兵

评论

发布
暂无评论
“NGINX邮件组历史”论坛上线了_nginx_通明湖_InfoQ写作社区