如何在线访问安装在Google Colab上的Apache Solr服务
核心原因
Google Colab 运行时为隔离的虚拟实例,内部服务的端口默认不会对外网公开映射,直接使用实例公网IP、colab.research.google.com域名加端口的方式访问必然失败,你之前本地调用返回正常说明Solr服务本身运行无问题,仅需解决端口暴露问题即可。
方法1:使用Colab内置端口代理(无需额外工具,仅同谷歌账号可访问)
直接在Colab代码块中运行以下代码,即可获取Solr服务的公开访问地址:
from google.colab.output import eval_js solr_url = eval_js("google.colab.kernel.proxyPort(8983)") print("Solr 访问地址:" + solr_url)
获取到的地址可直接在浏览器打开访问Solr管理界面,也可在代码中调用Solr API时使用该地址,访问时需登录运行当前Colab实例的谷歌账号。
如果你后续换端口启动Solr,只需把代码中的8983替换为你实际使用的端口即可。
方法2:使用ngrok隧道公开访问(支持任意设备访问,无需谷歌账号)
- 注册ngrok账号获取你的专属authtoken
- 在Colab中运行以下代码配置并启动隧道:
# 下载安装ngrok ! wget -q -c -nc https://bin.equinox.io/c/bNyj1mQVY4c/ngrok-v3-stable-linux-amd64.tgz ! tar -xvzf ngrok-v3-stable-linux-amd64.tgz # 配置你的authtoken ! ./ngrok config add-authtoken 替换为你自己的ngrok_authtoken # 后台启动隧道映射8983端口 ! ./ngrok http 8983 &
- 运行以下代码获取公网访问地址:
! curl -s http://localhost:4040/api/tunnels | python3 -c "import sys, json; print(json.load(sys.stdin)['tunnels'][0]['public_url'])"
拿到的地址即可直接对外访问Solr服务。
附加说明:端口占用问题处理
如果后续需要更换Solr启动端口,启动命令添加-p参数指定端口即可,示例:
! /content/drive/MyDrive/solr-8.5.0/bin/solr start -c -force -p 8984
后续代理、隧道配置对应修改为新端口即可。
内容的提问来源于stack exchange,提问作者Jawad Ali
相关产品推荐
相关产品推荐

