惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 三生石上(FineUI控件)
Martin Fowler
Martin Fowler
月光博客
月光博客
AI
AI
B
Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
C
CXSECURITY Database RSS Feed - CXSecurity.com
WordPress大学
WordPress大学
GbyAI
GbyAI
L
Lohrmann on Cybersecurity
O
OpenAI News
Schneier on Security
Schneier on Security
P
Palo Alto Networks Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
T
Troy Hunt's Blog
V2EX - 技术
V2EX - 技术
W
WeLiveSecurity
L
LINUX DO - 最新话题
人人都是产品经理
人人都是产品经理
S
Security Affairs
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
A
Arctic Wolf
Recorded Future
Recorded Future
Microsoft Security Blog
Microsoft Security Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
G
GRAHAM CLULEY
N
Netflix TechBlog - Medium
TaoSecurity Blog
TaoSecurity Blog
C
Check Point Blog
Scott Helme
Scott Helme
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Apple Machine Learning Research
Apple Machine Learning Research
PCI Perspectives
PCI Perspectives
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Vercel News
Vercel News
The Hacker News
The Hacker News
Y
Y Combinator Blog
Latest news
Latest news
SecWiki News
SecWiki News
Hugging Face - Blog
Hugging Face - Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Google Online Security Blog
Google Online Security Blog
Webroot Blog
Webroot Blog
Google DeepMind News
Google DeepMind News
Recent Commits to openclaw:main
Recent Commits to openclaw:main
C
Cisco Blogs
博客园_首页
H
Hackread – Cybersecurity News, Data Breaches, AI and More
宝玉的分享
宝玉的分享
L
LINUX DO - 热门话题

文轩夜话

09-AI:技术,人与怜悯 | 文轩夜话 OpenClaw · 我们为什么没必要为小龙虾(AI)焦虑? | 文轩夜话 2025 · 亲故何在,游子何归? | 文轩夜话 挽歌:第一次相逢与离别 | 文轩夜话 08-AGI:算力洪流与未坍缩的星光 | 文轩夜话 ChatRoom.js-在文章流中分享你的聊天记录 | 文轩夜话 逐光 · 启航:愿领航员畅行无阻 | 文轩夜话 2024 · 共赴一场烟火绚烂 | 文轩夜话 彼方的她:一场跨越时空的对话,一段孤寂宇宙的回响 | 文轩夜话 07-剧终:故事的开端与终末 | 文轩夜话 EasyPub-轻量Kindle电子书格式转换工具 | 文轩夜话 【破事水】-对于未来的前瞻于回望 | 文轩夜话 Windows工具-让你的Windows锦上添花,添了又添 | 文轩夜话 一枝红信出墙来-steam假激活入库 | 文轩夜话 飞跃13号房-对网瘾治疗披露与反抗 | 文轩夜话 06-时代造青年,还是青年造时代? | 文轩夜话 hexo + github-action持续集成 | 文轩夜话 友链区JavaScript组件-重做版 | 文轩夜话 一周年-忽而回望,不知光阴几何 | 文轩夜话 饿殍:明末千里行-岁大饥,人相食 | 文轩夜话 【总结】井冈山研学-了解历史,明见未来 | 文轩夜话 【多图警告】井冈山研学D3 | 文轩夜话 【多图警告】井冈山研学D2 | 文轩夜话 【多图警告】井冈山研学D1 | 文轩夜话 06-《你想活出怎样的人生》-高塔、苍鹭、少年、人生 | 文轩夜话 05-过程与结果 | 文轩夜话 霸凌行为-地狱空荡荡,恶魔在人间! | 文轩夜话 04-写文章是为了什么? | 文轩夜话 03-早晚都得死,那我们为什么要活着? | 文轩夜话 02-成绩可以代表一切吗? | 文轩夜话 贵州消防栓事件的思考 | 文轩夜话 不要再带XXX回去了 | 文轩夜话 本站转移到云服务器了 | 文轩夜话 幻兽帕鲁-学习版-资源分享 | 文轩夜话 AI时代-汹涌而来 | 文轩夜话 十年之约-我与十年后的自己有一个约定 | 文轩夜话 01-我发现一件事 | 文轩夜话 image+onedrive 公益图床 | 文轩夜话 2023 · 年度总结 | 文轩夜话 00-少年:江湖走马,陪剑长行 | 文轩夜话 回声洞-开源html组件 | 文轩夜话 原神-米忽悠玩家预防针(厂商离谱行为)-世界树 | 文轩夜话 原神-李猛干语录MD版-世界树 Hello World | 文轩夜话
自建busuanzi统计API | 文轩夜话
awaae001 · 2024-03-24 · via 文轩夜话

导入

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

于是,不蒜子就诞生了

根据它的开发者的原话:

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

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

  • 速度慢,不稳定,经常会出现 502 错误。
  • 代码过时,使用的是 Referrer 方法进行统计,这种方法在移动端 / Firefox / Safari 上统计不准确。
  • 不蒜子的代码使用的是 JSONP 回调,这种方法容易受到 CSRF 攻击,威胁网站安全。

所以,互联网上就涌现了各种各样的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

准备工作!

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

  • 一台服务器
    • 1C1G
    • 10G硬盘
    • 安装宝塔面板环境
    • 安装GO环境
  • 一个自己的域名
  • 脑子 (这是喂奶级教程,不带也可以

tips:

本教程还有docker部署版本,但是我太懒了没有写所以请点击链接跳转到其他站点进行查阅,我不保证链接的可用性(不是我的站点

docker自部署busuanzi访问量统计服务-清羽飞扬

这篇文章介绍了作者如何自己部署busuanzi访问量统计服务。作者发现官方服务经常无法加载出来,影响网站加载速度,因此决定自己部署并管理访问数据。Busuanzi是一个轻量级的网站访问统计工具,可以统计页面浏览量、访客数量,并实时更新统计数据。它可以通过JavaScript代码轻松嵌入网站页面,并提供一些可定制的选项。作者通过使用开源代码和Redis数据库实现了类似于busuanzi的功能。

部署

易错省流版

  1. git clone https://github.com/soxft/busuanzi.git && cd busuanzi

  2. go build -o busuanzi main.go

2.根据提示修改 config.yml

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

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


特殊编译环境准备:GO

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

  • Ubuntu/Debian
sudo apt update
sudo apt install golang
  • Fedora
  • CentOS/RHEL

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中输入

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使用命令:

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终端,也可以使用自己的终端,在宝塔终端中输入:

go build -o busuanzi main.go

在其他ssh软件中输入:

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

回车

build 223开头的是客户端IP哦

指令输出:

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的输入下面的指令:

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

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

[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:

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

守护进程

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

  • 启动: systemctl start busuanzi
  • 关闭: systemctl stop busuanzi
  • 配置开机自启: systemctl enable busuanzi
  • 取消开机自启: systemctl disable busuanzi
  • 状态: systemctl status busuanzi
  • 重启: systemctl restart busuanzi

开机自启!

关闭ssh就退出-tumx服务

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

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

你可以使用

centOS

debian

安装后在shell终端输入

即可!

Tmux 使用教程

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

最后的最后

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

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

<script async src="https://pv.neosora.cc/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>

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