跳转至

Streamlit 动态分析

作用

Streamlit 用于做比静态 HTML 更灵活的数据应用,适合筛选、查询和探索分析。

推荐页面

  • 总览指标
  • 日期与小时趋势
  • 类目分析
  • 用户分层
  • 转化漏斗
  • 推荐结果查询
  • 数据口径说明

数据来源

优先读取汇总层文件,不读取原始大 CSV:

data/
├── daily_metrics.csv
├── hourly_metrics.csv
├── category_metrics.csv
├── user_segment.csv
├── funnel_metrics.csv
└── recommend_sample.csv

也可以读取 DuckDB 或 Parquet 汇总文件。

运行方式

推荐使用独立 Python 虚拟环境:

python3 -m venv /opt/shixun/streamlit/.venv
/opt/shixun/streamlit/.venv/bin/pip install streamlit pandas plotly duckdb
/opt/shixun/streamlit/.venv/bin/streamlit run /opt/shixun/streamlit/app.py --server.port=8501 --server.address=127.0.0.1

对外访问时通过 Nginx 反向代理到 /app/

Nginx 反向代理要点

Streamlit 官方建议在生产环境中由反向代理或负载均衡处理 HTTPS。服务本身监听本机地址,Nginx 对外暴露路径。

推荐内部端口:

127.0.0.1:8501

如果 Streamlit 挂载到 /app/,启动参数需要包含:

--server.baseUrlPath=app

Nginx 中 proxy_pass 不要在端口后加尾部斜杠,否则 /app/ 前缀会被剥掉:

location ^~ /app/ {
    proxy_pass http://127.0.0.1:8501;
}

使用 ^~ 是为了避免宝塔默认的 .js.css 等静态资源正则 location 抢先处理 /app/static/...,否则页面 HTML 可能正常返回,但前端资源返回 404,浏览器表现为空白页。

运维建议

  • systemd 或宝塔 Python 项目管理器保持运行。
  • 答辩前准备静态 HTML 和截图作为备用。
  • 不把原始 CSV 放入 Streamlit 应用目录。