隐约雷鸣,阴霾天空,但盼风雨来,能留你在此。 隐约雷鸣,阴霾天空,即使天无雨,我亦留此地。 ——《万叶集》
序
一直以来就有想要给无人问津的博客添加一个访问统计。在尝试过百度统计、Google Analytics后发现总是会被Adblock Plus拦截,且本身的需要仅仅是需要一个简单的访问统计和来源分析,用不着太复杂的功能,于是准备自建站点访问统计。
Umami
Umami是一个简介且易于使用的自建网站访问分析系统,基于Node.js构建且支持PostgreSQL与MySQL数据库。实测能够很好的解决被Adblock插件屏蔽的问题。
GitHub:https://github.com/mikecao/umami
安装与配置
安装环境
- 宝塔 7
- Nginx 1.21
- MySQL 5.6
- Docker-compose
数据库配置
首先从https://github.com/mikecao/umami/blob/master/sql/schema.mysql.sql
获取SQL文件,在宝塔中新建数据库,在这里选择utf8mb4
字符集。
然后通过宝塔导入SQL文件。
Docker与docker-compose安装
在宝塔【软件管理】 - 【运行环境】中安装 Docker管理器
自动配置好Docker环境,之后在终端中执行以下指令获取最新版docker-compose:
# curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# chmod +x /usr/local/bin/docker-compose
# ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
# docker-compose --version
如果最后成功输出版本信息则代表成功安装。与此同时如果正确配置了pip
,也可以执行以下指令进行安装:
# pip install docker-compose
docker-compose.yml
由于宝塔环境已经带有MySQL环境,在这里我们仅需要使用Umami的Docker镜像即可,在这里提供一份我魔改后的docker-compose.yml
文件,将以下的数据库信息修改后保存至本地即可,我选择保存至/home/umami
目录中。
version: '3'
services:
umami:
image: ghcr.io/mikecao/umami:mysql-latest
network_mode: "host"
environment:
DATABASE_URL: mysql://[用户名]:[密码]@localhost:3306/[数据库名]
DATABASE_TYPE: mysql
HASH_SALT: [随便编写一段字符串]
restart: always
接下来使用docker-compose构建容器,若下载速度较慢,请参考本文章:使用代理为docker-compose加速
# cd /home/umami
# docker-compose up -d
至此容器构建完成,Umiami运行在http://127.0.0.1:3000
下。
使用Nginx进行反向代理与跨域配置
在宝塔中新建网站,配置SSL后选择反向代理,配置如下:
之后在【配置文件】第7行后添加以下内容来配置跨域:
...
root /www/wwwroot/xxx;
add_header Access-Control-Allow-Origin * always;
add_header Access-Control-Allow-Methods GET,POST,DELETE;
add_header Access-Control-Allow-Header Content-Type,*;
#SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
...
若使用CDN服务,也需要在CDN处配置跨域。
添加站点与使用
访问刚才配置好的站点,使用默认账户名admin
与密码umami
进行登录。(题外话:写到这里被老师点起来回答CRC的过程了,记录一下,吓死去...)
选择【Settings】-【Websites】-【Add website】,填写网站名称与域名后,将获得的代码添加至网站</head>
标签之前。如果以上步骤未出现差错的话,刷新Umami即可获得访问记录。(右上角球形图标可以切换语言)
结
类似于Umami这类网站访问统计系统还有很多,但它简单与轻量的特性非常符合我的需求。本博客已经使用Umami一段时间,整体非常稳定,合理的配置后并不会拖慢网站整体访问速度。在高并发下如果配置多容器做负载均衡也是不错的解决方案。