自建busuanzi统计API

温馨提示:本文适用于

署名-非商业性使用(BY-NC)

禁止商用-转载请标注出处

阅读量 EEROE awaae(player8635) 2024-03-24 08:03:41
Categories: Tags: 本文已启用fancybox灯箱
Cover Image

导入

目前网上的统计其实也挺多的,比如:51La、百度统计、微软清晰度。但它们都有一个通病:只有一个后台,无法在前端显示这篇文章(博文)的具体数据,也就无法让访客直观的看到这篇文章的访问量或者说是热度。

于是,不蒜子就诞生了

根据它的开发者的原话:

静态网站建站现在有很多快速的技术和平台,但静态是优点也有缺点,由于是静态的,一些动态的内容如评论、计数等等模块就需要借助外来平台,评论有“多说”,计数有“不蒜”!(多说即将关闭,不蒜子还活着涅,这是程序员对程序员的承诺。)

但,随着github page / verce 等项目的上线,静态博客公开API的访问量与日俱,回经常出现一些问题:

所以,互联网上就涌现了各种各样的busuanzi自建的版本,这也是本次教程的主题。

项目

本次的教程使用的是:https://github.com/soxft/busuanzi/
这个教程

外部链接【安全】:
Github-soxft/busuanzi-自建不蒜子
自建不蒜子,一个基于 Golang + Redis 的简易访问量统计系统,A simple visitor statistics system based on Golang + Redis,统计站点的,UV, PV统计子页面的 UV, PV,

它还有一个带管理后台的版本:https://github.com/yuantuo666/busuanzi

然后,这里有一个测试Demo可以使用:测试Demo

准备工作!

为了这篇教程,你必须准备以下的内容

部署

易错省流版

1.git clone https://github.com/soxft/busuanzi.git && cd busuanzi
go build -o busuanzi main.go

2.根据提示修改 config.yml

3.编辑 dist/busuanzi.js 替换链接为自己的, 也可以编辑ts文件自行编译

4.通过命令 ./busuanzi 启动程序


特殊编译环境准备:GO

后面需要用到GO环境的编译服务器busuanzi核心文件,在这里使用包管理器安装GO

1
2
sudo apt update
sudo apt install golang
1
sudo dnf install golang
1
sudo yum install golang

step-1 资源准备

打开你的宝塔面板 ,进入文件页面,点击新建目录,在文件夹的命名框中将文件夹命名为data,而后确定!
新建data

打开github仓库,点击<>code绿色按钮,在呼出的菜单中右键Download ZIP,在右键菜单中选择复制链接
获取链接

回到你的宝塔面板,此时,您应该在文件页面下的data目录里面,如果是的,那我们继续!

点击远程下载在呼出的下拉菜单中选择第一个从URL链接下载并在弹出的弹窗中输入在上一步获取的链接,注意:这个输入框已预填充了http://,请覆盖填充,确保链接开头是Https://

点击确定并等待下载完成!

下载完成后双击或者右键文件并在呼出的右键菜单中选择:解压缩,等待解压完成!

下载URL

目前为止,所有资源准备就绪!

记得把busuanzi-main更名为busuanzi!!!!!!

step-2 添加网站

接下来跳转到网站页面,点击添加站点在弹出的弹窗中选中域名输入框并在里面输入你的域名。然后,选中根目录输入框并点击后面的文件夹小图标。选择目录你安装busuanzi的地方,即/busuanzi

确认,安装!
添加站点

进入新网站的管理页面:
完成

在你的DNS服务商那里添加你域名的DNS记录方便访问。

因为DNS服务商太多了,这里不一一列举,我拿我用的Cloudflare举例子。
添加DNS
图片里面的busuanzi少打了一个a,不要学我。

记得提前配置SSL

step-3 数据库

完成网站的配置后进入宝塔面板的数据库页面,选择Redis数据库,如果你没有安装Redis数据库,它会提示您安装,点击点击安装并在弹出的弹窗中点击快速安装
安装redis

等待安装完成

step-4 进入配置

其实在等待数据库安装的时候我们就可以去调整配置了,这个步骤非常重要,将会影响到你的busuanzi可不可以正常使用,没搞好的话要重新下载,重新部署

进入你busuanzi的安装位置,在这个教程的安装位置应该是~/data/busuanzi,在宝塔面板中的文件页面中打开这个目录。

找到data/busuanzi/config.yaml配置文件,你也可以在SSH中输入

1
vim /data/busuanzi/config.yaml

来使用ssh进行配置

在这里,你只需要更改Redis的地址,将Redis下面的Address字段中Redis:6379更改为127.0.0.1:6379保存即可,当然,我也建议您将数据有效期关闭,原来的有效期是一个月,这有点短了。

编辑配置文件

宝塔面板按快捷键Ctrl+s保存,vim编辑器使用:wq保存并退出。

接着,保存并关闭配置文件,进入目录下面的/dist文件夹,找到里面名为/busuanzi.js的JavaScript文件,绝对路径是:/data/busuanzi/dist/busanzi.js,宝塔面板双击编辑,ssh使用命令:

1
vim /data/busuanzi/dist/busuanzi.js

进入编辑器,

http://127.0.0.1:8080/api改为https://你的域名/api,加入你要使用SSL的话,请必须将http改为https,否则,在生成后,你将无法修改http的属性,有可能要重新部署!
busaunzi-js

同样:
宝塔面板按快捷键Ctrl+s保存,vim编辑器使用:wq保存并退出。

step-5 编译

在确保上面的配置均无异常以后,我们准备开始编译busuanzi服务器了,这一步比较简单,让我们开始吧!

回到busuanzi的根文件夹/data/busuanzi,你可以使用宝塔自带的ssh终端,也可以使用自己的终端,在宝塔终端中输入:

1
go build -o busuanzi main.go

在其他ssh软件中输入:

1
2
cd /data/busuanzi
go build -o busuanzi main.go

回车

build
223开头的是客户端IP哦

指令输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
go build -o busuanzi main.go
go: downloading github.com/gin-gonic/gin v1.7.7
go: downloading gopkg.in/yaml.v2 v2.4.0
go: downloading github.com/gomodule/redigo v1.8.8
go: downloading github.com/gin-contrib/sse v0.1.0
go: downloading github.com/mattn/go-isatty v0.0.12
go: downloading github.com/go-playground/validator/v10 v10.4.1
go: downloading github.com/golang/protobuf v1.3.3
go: downloading github.com/ugorji/go/codec v1.1.7
go: downloading golang.org/x/sys v0.15.0
go: downloading github.com/go-playground/universal-translator v0.17.0
go: downloading github.com/leodido/go-urn v1.2.0
go: downloading golang.org/x/crypto v0.17.0
go: downloading github.com/go-playground/locales v0.13.0

step-6 反向代理

我们的不蒜子是运行在8080端口的,所以,我们得让其他人可以不带端口的访问,这就是反向代理。

再次回到宝塔面板的网站控制,在你的不蒜子站点后面选择设置在弹窗中选项卡选择反向代理-添加反向代理接着,在创建反向代理弹窗中选择名称目标URL字段。

名称可以随便填

目标URL必须为:http://127.0.0.1:8080

点击提交

反向代理

回到busuanzi的根目录,在ssh中键入./busuanzi以启动服务器

访问【你的域名】即可看到不蒜子服务器成功启动!

守护进程参见:链接

使用

部署完成了,接下来是使用

你可以看到,自建不蒜子API页面已经有了使用的教程,但是,这里有一个小问题:它不是你部署的那个不蒜子,而是开发者的Demo。所以,你要使用的话,就必须将它给的api地址换成你的。

还有就是,你要看下面的访问量,有数据才是成功

use

疑难杂症

关闭ssh就退出-守护进程

目前还有一个问题,就是你一旦退出ssh,那么你的不蒜子就会退出,这边给你一个小方法来解决这个问题,那就是:创建系统守护进程

其实挺简单,在/usr/lib/systemd/system下面创建一个叫做:busuanzi.service的守护进程文件。

宝塔用户自己在文件页面找过去,双击编辑。喜欢用SSH的输入下面的指令:

1
vim /usr/lib/systemd/system/busuanzi.service

将下面的内容复制过去,在本教程中[你的busuanzi路径]均为/data/busuanzi

1
2
3
4
5
6
7
8
9
10
11
12
[Unit]
Description=busuanzi
After=network.target

[Service]
Type=simple
WorkingDirectory=[你busuanzi路径]
ExecStart=[你busuanzi路径]/busuanzi server
Restart=on-failure

[Install]
WantedBy=multi-user.target

同样:
宝塔面板按快捷键Ctrl+s保存,vim编辑器使用:wq保存并退出。

接下来,使用指令SSH:

1
systemctl daemon-reload

来重载服务器守护进程配置

守护进程

这样,守护进程就完成配置了

开机自启!

关闭ssh就退出-tumx服务

tmux是一种ssh持续化程序,它可以将你离开前的SSH服务保持为运行的状态,即使你关闭了ssh终端,你的命令依旧可以在服务器中运行,并不用担心你离开有服务就停止运行。

但它是命令行程序,所以不太适合那些喜欢用服务器面板的读者。

你可以使用

centOS

1
yum install tmux

debian

1
apt-get install tmux

安装后在shell终端输入

1
tmux

即可!

扩展阅读【安全】:
Tmux 使用教程
命令行的典型使用方式是,打开一个终端窗口(terminal window,以下简称"窗口"),在里面输入命令。用户与计算机的这种临时的交互,称为一次"会话"(session。会话的一个重要特点是,窗口与其中启动的进程是连在一起的。打开窗口,会话开始;关闭窗口,会话结束,会话内部的进程也会随之终止,不管有没有运行完。一个典型的例子就是,SSH 登录远程计算机,打开一个远程窗口执行命令。这时,网络突然断线,再次登录的时候,是找不回上一次执行的命令的。因为上一次 SSH 会话已经终止了,里面的进程也随之消失了。

最后的最后

不蒜子只是对于文章活跃度的指标,有盗刷的风险,本质上是给人看的东西,那应该也要搞好,是吧?

目前这个busuanzi演示站点将会很快关闭,大家如果真的不想自建的话可以使用这个:

1
2
3
4
5
<script async src="https://pv.m-c.top/js"></script>
本文总阅读量 <span id="busuanzi_page_pv"></span>
本文总访客量 <span id="busuanzi_page_uv"></span>
本站总访问量 <span id="busuanzi_site_pv"></span>
本站总访客数 <span id="busuanzi_site_uv"></span>

还有,感谢看到这里的你,谢谢!

本站评论因服务器问题,请要发图片的各位自行至 博主自建图床 上传再分享
欢迎阅读本站评论区 指南 再进行评论