前言

由于不蒜子是公益项目,访问的人数相当之多,这也就导致了不蒜子的公共API经常咕咕咕,同时也影响了网站的加载,所以就打算自建一个不蒜子API。

github项目地址

https://github.com/soxft/busuanzi

环境要求

本次主要是使用docker部署,所以需要服务器上有docker环境。

安装过程

1)在任意目录下,新建docker-compose.yaml文件,输入以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
version: "3.8"

services:
redis:
image: "redis:alpine"
volumes:
- ./data/redis:/data

bsz:
image: "xcsoft/busuanzi:latest"
ports:
- "8080:8080" # 修改映射到宿主机的端口 host:container
volumes:
- ./data/bsz:/app/expose
links:
- redis
depends_on:
- redis
environment:
WEB_LOG: true # 是否开启日志
WEB_DEBUG: false # 是否开启debug模式
WEB_CORS: "*" # 跨域访问
BSZ_EXPIRE: 0 # 统计数据过期时间 单位秒, 请输入整数 (无任何访问, 超过这个时间后, 统计数据将被清空, 0为不过期)
BSZ_SECRET: "bsz" # 签名密钥 // 请设置为任意长度的随机值
API_SERVER: http:\/\/127.0.0.1:8080\/api # 填写你的 API 地址 需要转译 (即 用 `\/` 替代 `/`)
REDIS_ADDRESS: redis:6379 # redis 地址
BSZ_PATHSTYLE: true
BSZ_ENCRYPT: MD516

在上方的内容中,你需要修改API_SERVER为你自己的地址,例如:https:\/\/busuanzi.aimiliy.top\/api,上方的映射端口如果被占用,你可以修改成其他任意端口。

2)进入docker-compose.yaml所在目录,运行以下命令:

1
docker-compose up -d

3)以上操作完成后,对上方端口设置nginx代理即可。访问代理地址出现如下页面,即为安装完成。
img.png

使用方法

首先,需要将不蒜子的API替换为你的自建API,例如:https://busuanzi.aimiliy.top/js, 然后你需要将你主题中所有类似的busuanzi_page_value_pv替换为上方截图中显示的id。

数据迁移

虽然你已经完成了不蒜子API的建立,但是如果你不想放弃你原本的统计数据怎么办,所以这个时候你就需要对你原始的数据进行数据迁移了。项目地址:https://github.com/soxft/busuanzi-sync

迁移过程

1)首先停止运行不蒜子,输入以下命令:

1
docker-compose down

2)备份dump.rdb,如果你已经使用自建不蒜子一段时间了,还是建议提前做好数据备份。数据文件在data文件下,如下所示:
img_1.png

3)由于我的服务器无法访问不算子API。所以此次采用的是本地进行数据迁移,参考:如何将原版不蒜子busuanzi的数据迁移到自建不蒜子上

在本地行进数据迁移需要docker环境,请提前准备好相关环境。下面是具体的迁移步骤:
1、将你服务器上的不蒜子的数据文件dump.rdb放到你本地的任意文件下。例如:D:/busuanzi/data/dump.rdb
2、打开任意终端输入以下命令拉取最新的Redis镜像:

1
2
3
4
docker run -d --name redis-server \
-p 16379:6379 \
-v D:/busuanzi/data:/data \
redis

3、在D:/busuanzi/data目录下方创建.env文件,内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 在此处指定您的博客 sitemap 地址
SITEMAP_URL: https://you.blog.site/sitemap.xml

# 线程数 避免过高导致 QPS 限制 / 不要超过5
THREADS: 2
# 单 URL 最大重试次数
MAX_RETRY: 10

REDIS_ADDR: 127.0.0.1:16379
REDIS_DB: 0
REDIS_PWD: ""
REDIS_PREFIX: bsz
REDIS_TLS: false

# 路径样式 与加密方案
BSZ_PATH_STYLE: true
BSZ_ENCRYPT: MD516

4、将下载的转换工具放到D:/busuanzi/data下方,然后运行转换工具即可。转换的过程有点耗费时间,你原始不蒜子的访问量越高越耗时。转换完毕之后,我们可以在本地找到转换后的dump.rdb,替换服务器上的dump.rdb, 然后重新启动即可。