dblp rss转换器部署
dblp默认的前100条只有xml和json格式,zotero识别不了,github上有个开源项目可以将DBLP的api返回结果转换成RSS格式,方便zotero识别。
并做了以下修改,以便适应小范围部署,满足实验室成员获取论文的需求~:
- 解决了部分bug问题。
- 增加了排序,dblp的api返回的结果不是按时间排序,本代码使用了稳定排序按照time>Volume>Number优先级排序,并保证了相对顺序不改变。
- 增加了缓存功能,24h内请求同一个keyword直接返回缓存结果,缓解服务器压力。
服务器配置过程
开启防火墙
如果是走cloudflarecdn的话只能是以下几个端口,这里使用8080:
Cloudflare 支持的 HTTP 端口:
- 80
- 8080
- 8880
- 2052
- 2082
- 2086
- 2095
Cloudflare 支持的 HTTPS 端口:
- 443
- 2053
- 2083
- 2087
- 2096
- 8443
使用firewalld,这里以甲骨文的vps为例
1 | sudo apt install firewalld |
- 查看防火墙状态:sudo firewall-cmd —zone=public —list-ports
- 查看防火墙当前规则:sudo firewall-cmd —list-all
- 确认特定端口是否开放:sudo firewall-cmd —zone=public —query-port=8080/tcp
使用x-ui自带的iptables管理工具
输入x-ui选择21,开启防火墙并放行端口,将上述端口放行即可
安装docker
使用runoob教程的方案,地址:Ubuntu Docker 安装 | 菜鸟教程
安装docker
1
2curl -fsSL https://test.docker.com -o test-docker.sh
sudo sh test-docker.sh测试Helloworld:
1
docker run ubuntu:15.10 /bin/echo "Hello world"
安装dblp-rss
克隆项目代码
1
git clone https://github.com/HPShark/dblp-rss.git
进入项目目录,构建 Docker 镜像
1
2cd dblp-rss
docker build -t dblp-rss .运行 Docker 容器
1
docker run -d -p 8080:8080 -v $(pwd)/cache:/app/cache --restart always --name dblp-rss dblp-rss
-p 8080:8080:将服务器的 8080端口映射到容器的 8080端口。--restart always:设置容器在意外退出时自动重启。--name dblp-rss:将容器命名为dblp-rss。验证运行状态
1
docker ps
确认
dblp-rss容器正在运行,并且PORTS列显示0.0.0.0:8080->8080/tcp。访问:
http://ip:8080/dblp/<keyword>keyword指q值的内容,比如这个网址:
https://dblp.org/search/publ/api?q=stream%3Astreams%2Fjournals%2Ftdsc%3A&h=1000&format=json其中keyword对应的就是q的参数
stream%3Astreams%2Fjournals%2Ftdsc%3A,故浏览器访问http://ip:8080/dblp/stream%3Astreams%2Fjournals%2Ftdsc%3A就可以访问tdsc这个期刊最近1000篇论文的rss转换结果,直接把这个域名添加进zotero等rss订阅链接里就能自动识别设置docker自动重启,当前docker运行时间长会崩溃,原因未知。
1
2
3crontab -e
添加以下任务,每天凌晨3点重启容器:
0 3 * * * docker restart dblp-rss
查看日志:docker logs dblp-rss
重启容器:docker start dblp-rss
停止容器:docker stop dblp-rss
删除容器,但不删除镜像和数据:docker rm dblp-rss
删除镜像:docker rmi dblp-rss
查看所有容器(包括停止的):docker ps -a
一键启动:
1
2
3 cd dblp-rss/
docker build -t dblp-rss .
docker run -d -p 8080:8080 -v $(pwd)/cache:/app/cache --restart always --name dblp-rss dblp-rss一键删除:
1
2
3 docker stop dblp-rss
docker rm dblp-rss
docker rmi dblp-rss
cloudflare配置ssl
一般情况下网站的SSL/TLS 全局加密模式为:完全(严格),这里通过特殊规则的形式为dblp rss配置单独ssl。
- dns设置域名,比如dblp.xxx.xxx,并开启cdn小云朵代理。
规则-origin rules里头新建一个dblp规则,进行如下配置,将页面访问的443端口重定向到8080:- 选择
自定义筛选表达式 - 字段:主机名
- 运算符:等于
- 值填写:dblp.xxx.xxx
- 目标端口重写到:8080
- 保存
- 选择
规则-页面规则里新建一个规则,将该域名的ssl配置修改为灵活:- URL:dblp.xxx.xxx
- 选取设置:SSL
- 选择 SSL/TLS 加密模式:灵活
- 保存页面规则
- 访问:
https://dblp.xxx.xxx/dblp/<keyword>




