前言

Busuanzi是一个轻量级的网站访问统计工具,可以跟踪每个页面的浏览量,记录访问网站的独立访客数量,旨在为网站管理员提供简单而有效的访问统计信息。

在搭建这个博客的时候,用到Hexo+Butterfly主题中默认配置的busuanzi来统计博客的访问量,发现一直访问不到,F12看发现是busuanzi提供的服务502了,搜罗了一圈,发现还是自己自建一个busuanzi服务比较方便,也不会占用vps太大的内存。

|400

我使用到了:一个备案的域名,一台vps

使用Docker搭建busuanzi服务

docker-compose.yml

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
version: "3.8"

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

bsz:
image: "xcsoft/busuanzi:latest"
ports:
- "8080:8080"
links:
- redis
depends_on:
- redis
environment:
WEB_LOG: true
WEB_DEBUG: false
WEB_CORS: "*"
BSZ_EXPIRE: 0
BSZ_SECRET: "bsz"
API_SERVER: http://127.0.0.1:8080
REDIS_ADDRESS: redis:6379
BSZ_PATHSTYLE: true
BSZ_ENCRYPT: MD516

这里需要配置的是:

  1. 端口号默认8080,可以更改为别的端口,例如:- "88:8080"
  2. BSZ_SECRET:签名密钥,设置为随机值
  3. API_SERVER:配置为busuanzi的地址,例如:https://busuanzi.enxiaohao.cn
  4. WEB_CORS:配置为博客的域名,例如:https://blog.enxiaohao.cn

使用docker compose up -d启动服务,使用ip访问出现这个界面,并且访问/api有json的返回就说明服务正常。

1
{"data":{"project":"https://github.com/soxft/busuanzi","usage":"https://github.com/soxft/busuanzi/wiki/usage"},"message":"invalid referer","success":false}

直接访问/api会因为referer等参数的不同失败,不过没关系,这里我们只是测试服务可以正常运行。

配置域名和Nginx反代

为busuanzi服务单独配置一个域名,写一个A记录到服务器ip。

我这里使用npm配置了nginx反代,比较方便(开启Block Common Exploits,配置SSL证书)

|300
现在就可以使用反代的域名对busuanzi服务进行访问了

配置静态博客网站

我使用的博客是hexo+butterfly主题,以这个为例,需要修改的是:

  1. CDN.option.busuanzi处,修改为:https://busuanzi.enxiaohao.cn/js
  2. 还有一个坑,我的butterfly主题使用的字段id是busuanzi_page_value_pv,而服务的id为busuanzi_page_pv,要去把id修改过来:

    有三处位置,分别对应的是博客浏览量,博客浏览人数和文章浏览量。

错误排除

如果出现一直转圈的错误,可以使用F12,进入网络处看看控制台有没有报错、请求包和状态码是否正常,最终正常运行:

参考文章

官方中文文档
自部署busuanzi访问量统计服务