You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在运行多Bokeh应用的Bokeh Server中托管HTML页面?

用Bokeh Server托管HTML页面的方法

当然可以!Bokeh Server本身就支持静态文件托管,完全能实现类似Apache那样的静态页面服务需求,下面给你讲几种实用的实现方式:

方法1:绑定单个Bokeh应用的静态HTML

如果你的HTML页面是和某个Bokeh应用关联的,可以直接在对应应用的目录下创建一个static文件夹,把HTML文件放进去:

  • 比如你的bokeh_app1目录结构:
    bokeh_app1/
      ├── main.py
      └── static/
          └── my_page.html
    
  • 启动服务后,就可以通过这个路径访问HTML:http://localhost:5006/bokeh_app1/static/my_page.html

方法2:全局静态文件目录(独立于应用)

如果想托管不绑定任何单个应用的全局HTML页面,可以在启动Bokeh Server时用--static-path参数指定一个全局静态目录:

  • 比如你有一个单独的static_files文件夹存放所有HTML和静态资源,启动命令改为:
    bokeh serve --static-path /path/to/your/static_files bokeh_app1 bokeh_app2 bokeh_app3
    
  • 访问路径就是:http://localhost:5006/static/my_global_page.html
  • 注意:这个目录里的所有资源(CSS、JS、图片等)都可以通过/static/前缀访问

方法3:把HTML设为服务器默认首页

如果你希望用户访问服务器根路径(比如http://localhost:5006)时直接打开你的HTML页面,可以做一个极简的Bokeh应用来嵌入HTML:

  1. 创建一个名为root_app的目录,里面的main.py写如下代码:
    from bokeh.plotting import curdoc
    from bokeh.models import Div
    
    # 读取你的HTML文件内容
    with open('/path/to/your/index.html', 'r', encoding='utf-8') as f:
        html_content = f.read()
    
    # 用Div组件嵌入HTML,宽度高度可以根据需求调整
    html_div = Div(text=html_content, width=1200, height=800)
    curdoc().add_root(html_div)
    
  2. 启动服务时加上--redirect-root参数,把根路径重定向到这个应用:
    bokeh serve --redirect-root /root_app root_app bokeh_app1 bokeh_app2 bokeh_app3
    

这样用户访问根路径时就会自动跳转到你的HTML页面了。

一些注意事项

  • 确保Bokeh Server进程有读取静态文件目录的权限
  • 如果HTML里引用了外部资源(比如图片、CSS),要把这些资源也放到对应的静态目录里,路径用相对路径(比如./style.css)或者基于/static/的绝对路径
  • 公开发布时,不要在静态目录里存放敏感文件,避免泄露

内容的提问来源于stack exchange,提问作者Cracken

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:17:42