如果需要统计博客访问的相关数据,一般会选择「百度统计」或是「谷歌分析」。前者面向中文用户,在数据展示上会更加直观;后者全球通用,功能丰富数据详细,只是需要一定的学习成本。
当然,你也可以尝试自己搭建一个统计工具,将数据完全掌握在自己的手里。比如使用「Umami」。
安装过程
首先,安装 Umami 需要一个基本的 LNMP 环境,然后再安装nodejs
和npm
。
安装Nodejs
、npm
curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
apt-get install -y nodejs
apt-get install -y npm
安装完毕之后,可以用node -v
和npm -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
一般是root
,databasename
就是你创建的空数据库的名字,具体例子是:
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则不同,在设计上就主张简洁、快速,运行占用资源低,配置简单,因此在加载上更迅速,使用起来更轻松,只是简洁意味着众多功能的缺失。
不过对于小博客博主来说,这些基础功能就足够了。
Docker 部署
其实自己构建很麻烦的,最简单的方法还是用 Docker 来部署 Umami。
参考「Docker -- 从入门到实践」中的教程安装完 Docker-ce 和 docker-compose 后,创建docker-compose.yml
文件。填入以下内容:
version: '3.4'
services:
umami:
image: ghcr.io/mikecao/umami:mysql-latest
network_mode: "host"
environment:
DATABASE_URL: mysql://root:密码@127.0.0.1:3306/数据库名称
DATABASE_TYPE: mysql
HASH_SALT: 随机字符
restart: always
container_name: umami
和自己构建安装 umami 的方法类似,因为我是用 lnmp 安装的 mysql,不用再重复安装 docker mysql,所以 network_mode
是直接用的host
。
之后控制台执行docker-compose up -d
启动即可。
从 V1 迁移至 V2
Umami 最近更新到了 V2
版本,数据库连接方式发生了改变,需要手动执行一下迁移命令。如果是使用 Docker 的话,可以这么迁移。
这里参考了 Github 上的 Issue:https://github.com/umami-software/umami/issues/1887
在确保设置好 DATABASE_URL
的前提下执行以下操作。
首先,将 Umami 的镜像修改成 V1
版本,例如:
image: ghcr.io/umami-software/umami:mysql-v1.40
启动后,进入到 容器内部终端:
docker exec -ti -u 0 umami sh
其中,umami
是你设置的容器的名字,请注意修改。
接着,执行如下命令:
apk add git
如果安装不动,可以再执行一下换源命令:
sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories
然后再安装 git
。
接着,拉取迁移脚本:
git clone https://github.com/umami-software/migrate-v1-v2.git
如果拉去不动,可以在链接前加入 https://ghproxy.com/
加速:
git clone https://ghproxy.com/https://github.com/umami-software/migrate-v1-v2.git
拉取完成后,进入该脚本内:
cd migrate-v1-v2
执行以下命令:
yarn install
接着依次执行以下命令:
yarn build
脚本会提示「Which database are you using?」 请选择你使用的数据库类型,按方向键选择。
接着执行:
yarn start
运行到最后,脚本会提示「Do you want to delete V1 database tables? (Y/N)」是否删除 V1 数据?我是删了的,因为数据库太大了。
然后输入 exit
退出终端,将镜像修改回 mysql-latest
,重新启动容器,即可完成升级工作。
新版界面长这样:
最后,你还要修改一下脚本代码,因为从 umami.js
改成 script.js
了,大概是为了防那些广告插件。毕竟 umami.js
已经进黑名单了。
一些参考
- Linux发行版安装Nodejs
- GitHub:Umami
- Umami文档
本文作者:mikusa
本文链接:https://www.himiku.com/archives/umami.html
封面出处:夜さり / mono84 #Pixiv
版权声明:所有文章除特别声明外均系本人自主创作,转载及引用请联系作者,并注明出处(作者、原文链接等)。
我用docker安装后,一开始没问题的,这几天不知道怎么回事突然没有数据了,我重新安装了好几次也不行,无语了 哎~~
博主你好,为什么搭建完成之后用户访问的地区是显示未知
api调通 网站统计 stats这个接口 这些参数是怎么使用的
跳出率 平均时间 + - 有两种是如何计算出来的
这个问题你应该去问 umami 作者(
博主你好,docker compose安装之后,查看日志显示,数据库链接成功,数据库也有数据表,但是显示什么迁移错误
会不会是数据库太大了迁移失败?
博主,构建错误为什么呢
试试用docker部署吧!
行吧,我的本意就是不想用docker,我在本地和服务器都试了,都没用
那贴一下构建错误的具体报错
这里不能贴嘛,不能提交
完整错误:
你改动了默认的构建代码?
没有,我本地和服务器都试了,没用
等我下班回去部署一下看看,你先自己排查一下原因。还是推荐用docker省事
不用了,谢谢,我知道什么问题了
所以是什么原因?
修改yarn的镜像源
npm install 命令运行一会后报错,求解决方法。谢谢。:
npm ERR! code EINTEGRITY
npm ERR! Integrity checksum failed when using sha512: wanted sha512-TvB3LqF2VtP6yI6HXlRT5TxX98HKha6hCcrg9dwlPwNaedVNuQA9KgBdtWKgiyakyCTYHQ+KJeFEstNKfZr64w== but got sha512-VHu6UWgWLJykaSeI1M2DpZMVRLuGCOV91i5I81xnJuAI0MKHP7ZJ3my5naOQkzG10ris3hBr+o5RElF1wQ5IXA==.
npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2022-02-06T05_39_15_397Z-debug-0.log
试试看
npm cache clean --force
?具体看这个
https://stackoverflow.com/questions/47545940/when-i-run-npm-install-it-returns-with-err-code-eintegrity-npm-5-3-0
谢谢,安装好了,但是登陆界面输入账户密码后点击login提示:Internal Server Error
麻烦帮忙看看怎么解决?
这个就有很多种可能了,nginx配置没写好,或者是数据库配置
盲猜数据库没有配置好
为什么我手机打开网页,没有统计,只统计了电脑哎 ∠( ᐛ 」∠)_
我这边测试是正常的
之前为了方便,就选了php实现的matomo,后来发现这东西有点。。怎么说呢,有点费数据库,而且感觉有点臃肿。现在想来装个nodejs其实也不耗多少资源,我又心动了
可以安一个试试,挺不错的
安装了一下,还蛮清爽的。准备和matomo并存,看看后期数据量大了性能如何,要是性能不错还省内存的话,就把matomo那一大坨从数据库里面扔出去。
对了,关于开机启动的话,可以通过 pm2 startup 来实现,一般Debian那些都是systemd的,所以探测到之后会自动生成启动脚本并启动,之后似乎也可以再重启后自动拉起umami,还挺方便的
docker-compose写好跟随docker启动不是更舒服么?
已经安装好了。输入amdin,和umami 登不进去,显示服务器错误,是什么鬼啊
服务器错误…这我没遇到过啊
.env这个文件用命令怎么创建啊,求告知
用宝塔找到umami的文件夹然后手动创建一个…