如果需要统计博客访问的相关数据,一般会选择「百度统计」或是「谷歌分析」。前者面向中文用户,在数据展示上会更加直观;后者全球通用,功能丰富数据详细,只是需要一定的学习成本。

当然,你也可以尝试自己搭建一个统计工具,将数据完全掌握在自己的手里。比如使用「Umami」。

安装过程

首先,安装 Umami 需要一个基本的 LNMP 环境,然后再安装nodejsnpm

安装Nodejsnpm

curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
apt-get install -y nodejs
apt-get install -y npm

安装完毕之后,可以用node -vnpm -v检查版本。

下载 Umami

git clone https://github.com/mikecao/umami.git
cd umami
npm install

创建数据库

先创建一个空数据库,比如umami,然后在umami目录中输入:

mysql -u username -p databasename < sql/schema.mysql.sql

username一般是rootdatabasename就是你创建的空数据库的名字,具体例子是:

mysql -u root -p umami < sql/schema.mysql.sql

你也可以在 phpmyadmin 中手动导入到空数据库中。

创建配置文件

umami目录中新建一个.env的配置文件,填入:

DATABASE_URL=(connection url)
HASH_SALT=(any random string)

其中,connection url需要填入:

mysql://username:mypassword@localhost:3306/mydb

any random string填入的是随机字符串,完整的例子是:

DATABASE_URL=mysql://username:mypassword@localhost:3306/mydb
HASH_SALT=123456789

注意去掉括号

编译

npm run build

启动程序

通常使用npm start就可以直接启动,但是退出ssh之后就直接停止运行了,所以需要用一些工具保证后台运行,官方文档中的推荐是:

npm install pm2 -g
cd umami
pm2 start npm --name umami -- start 
pm2 startup
pm2 save

这样就可以用了。

Nginx 反代

因为可以使用ip:3000直接访问,但是有使用域名的话还可以反代一下,这里以Nginx举例。在server段加入配置:

server {
  server_name umami.yourdomain.com;

  location / {
    proxy_pass http://localhost:3000;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

更新 Umami

首先停止运行

pm2 stop umami

获取更新

git pull

可能会遇到获取更新失败。我也不知道为啥我这每次都失败,可以用这个命令git reset --hard,然后再执行上一步git pull
然后重新编译

npm install
npm run build

重新启动

pm2 restart umami

页尾版本号有发生变化,那就是更新成功了。

开始使用

进入后台,登录名是admin,密码我有些忘了,好像默认是umami。好像一开始登录还会要求修改密码,我也忘了……

登陆成功之后,第一件事自然是修改语言。右上角修改语言为中文,然后添加网站。注意域名处填写纯域名,开头不要带https://,结尾不要带/

之后将跟踪代码填入网站的相应位置,就可以开始数据记录了。

使用体验

「简洁」,是 Umami 的一大特色。首页以图表形式列出访问量、访问时长等基本信息,而柱状图则可以更直观地了解各个时间段网站的访问情况。

而更详细的数据如流量来源、着陆页,访客设备、地区等,可以在「查看更多」找到。美中不足的是,访客地区的统计并不准确。

在使用Umami之前,我也体验过一段时间的「Matomo」。Matomo 开启首页需要较长的加载时间,页面存在着无法关闭的开发者广告。功能丰富但略显臃肿。随着使用时间一长,统计数据量的增加,也会拖慢Matomo的运行效率,就需要更高规格的设备才能长期运行,总结下来就是整体使用体验不太好。Umami则不同,在设计上就主张简洁、快速,运行占用资源低,配置简单,因此在加载上更迅速,使用起来更轻松,只是简洁意味着众多功能的缺失。

不过对于小博客博主来说,这些基础功能就足够了。

哦差点忘了,这玩意对 PJAX 有影响,不知道怎么解决……

一些参考

  1. Linux发行版安装Nodejs
  2. Umami
  3. Umami文档