基于golang实现可私有部署的兼容不蒜子接口的服务
首先感谢 bruce sha 同学开发出 不蒜子 免费给大家使用,现在的很多主题都支持不蒜子统计。考虑到不蒜子官方的接口用户多压力大,于是就有了私有部署的想法, 于是就有了本项目。
Github项目地址 wangdan7245/busuanzi-golang
1 功能:
- 兼容不蒜子接口 v2.3
- 可以私有部署,支持docker
- 使用redis作为数据库,UA统计使用HyperLogLog[1]去重
- 自动生成 js 文件
[1] 基于 HyperLogLog 去重会损失部分精度,考虑到个人网站访问量不会太大,精度足够满足日常统计需求,加之其存储空间小去重效率高的优点,个人感觉用它是极好的
2 Docker 部署
以下两种选择其一即可,推荐直接使用构建好的镜像部署,简单方便
docker 镜像是基于 AMD64 环境构建的,ARM 环境的服务器可以自行使用源码编译构建镜像
2.1 使用构建好的镜像部署(推荐)
首先需要安装 docker 环境,教程很多不再赘述。
安装 docker-compose 环境,从 https://github.com/docker/compose/releases/tag/v2.12.1 下载安装即可, 具体过程可以百度/google,教程有很多不再赘述。
创建 docker-compose.yml 文件
1 |
|
修改 __YOU_DOMAIN__
为你的服务器域名即可,可以带路径,比如 example.com/bsz
,启动后会自动生成带有域名的js文件
执行部署和启动命令
1 |
|
2.2 使用源码构建镜像
1 |
|
修改 docker-compose.yml
中的 DOMAIN
为你的域名
执行以下命令编译运行
1 |
|
3 本地部署
首先需要安装 redis 服务,教程很多不再赘述
下载最新的二进制包
https://github.com/wangdan7245/busuanzi-golang/releases
将下载的 busuanzi-go-bin.tar.gz 文件解压
1 |
|
启动命令
1 |
|
4 获取js文件部署到前端
假设 DOMAIN
设置为 example.com/bsz
直接访问 你的IP:18080/bsz/busuanzi.pure.mini.js
即可获取到 js 文件
如果通过Nginx反代18080端口,需要添加如下配置,然后重载 Nginx 服务
1 |
|
访问 example.com/bsz/busuanzi.pure.mini.js
即可获取到 js 文件
将js文件内容替换原来的不蒜子js文件,或者将不蒜子 js 文件的引用链接替换为上面的链接即可正常使用