本站提供Linux服务器运维,自动化脚本编写等服务,如有需要请联系博主微信:xiaozme
2022年5月10日U-Web(CNZZ(友盟))对所有未付费账号关闭服务,参考:《关于友盟+ U-Web 统计分析产品功能调整的公告》。其实可替代的产品挺多的,比如国内的百度统计、51la,国外的Google Analytics。如果你都不爽,还可以自建网站统计,比如umami、Plausible、matomo,今天来聊一聊自建方案之一的umami。
关于Umami
官网是这样介绍的:
Umami 是一个简单、易于使用、自托管的网络分析解决方案。目标是为您提供一个更友好、注重隐私的 Google Analytics 替代方案,以及一个免费、开源的付费解决方案替代方案。Umami 只收集您关心的指标,所有内容都放在一个页面上。
使用Docker搭建Umami
前提条件:
-
已经部署了Docker:Linux安装Docker与Docker常用命令
-
需要MySQL或Postgresql数据库支持
我的场景:
因为每个人的环境可能不一样,所以这篇文章不一定适合所有人,但是可以用于参考。xiaoz已经在服务器本机安装了MySQL数据库,所以我在使用Docker部署的时候没有在额外安装MySQL服务,而是直接利用现有的MySQL
导入数据库:
-
您需要自行创建一个MySQL数据库用来给Umami使用
-
然后下载官方的初始数据导入到数据库中,这是初始SQL语句下载地址:https://raw.githubusercontent.com/mikecao/umami/master/sql/schema.mysql.sql
我这里已经创建好了一个名为umami
的数据库,并导入了初始数据schema.mysql.sql
docker-compose部署Umami
如果您还没有安装docker-compose,请先参考官方文档安装:https://docs.docker.com/compose/install/
使用docker-compose
部署的目的是方便后续维护和管理,您需要新建一个docker-compose.yaml
的文件,里面的内容如下:
---
version: '3'
services:
umami:
image: ghcr.io/mikecao/umami:mysql-latest
ports:
- "3000:3000"
environment:
DATABASE_URL: mysql://username:password@127.0.0.1:3306/umami
DATABASE_TYPE: mysql
HASH_SALT: replace-me-with-a-random-string
restart: always
network_mode: "host"
参数含义如下,请根据自己的情况修改:
-
username
:MySQL用户名 -
password
:MySQL密码 -
127.0.0.1:3306
:MySQL连接地址和端口 -
umami
:MySQL数据库名称
这里我使用了HOST网络,network_mode: "host"
,原因是我MySQL在宿主机上搭建的,如果不指定为HOST网络无法和Docker通信。
接着使用命令docker-compose up -d
启动即可。
访问Umami
搭建完毕后,Umami默认使用3000端口
,输入http://IP:3000
就可以访问了,默认用户名:admin
,密码为umami
默认为英文界面,登录后点右上角的"地球"图标,可以修改为中文。
Nginx反向代理
通过IP + 端口的访问方式只适合临时测试,显然不太适合用于生产,我们可以通过Nginx反向代理实现域名访问。
以下是nginx反向代理配置,仅做参考,请根据实际情况修改:
server
{
listen 80;
listen 443 ssl http2;
server_name domain.com;
index index.php index.html index.htm default.php default.htm default.html;
#SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
#error_page 404/404.html;
#HTTP_TO_HTTPS_START
if ($server_port !~ 443){
rewrite ^(/.*)$ https://$host$1 permanent;
}
#HTTP_TO_HTTPS_END
ssl_certificate /www/server/panel/vhost/cert/domain.com/fullchain.pem;
ssl_certificate_key /www/server/panel/vhost/cert/domain.com/privkey.pem;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
add_header Strict-Transport-Security "max-age=31536000";
error_page 497 https://$host$request_uri;
#SSL-END
#ERROR-PAGE-START 错误页配置,可以注释、删除或修改
#error_page 404 /404.html;
#error_page 502 /502.html;
#ERROR-PAGE-END
#PHP-INFO-START PHP引用配置,可以注释或修改
#清理缓存规则
location ^~ /
{
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
add_header X-Cache $upstream_cache_status;
#Set Nginx Cache
set $static_fileceZTfEud 0;
if ( $uri ~* "\.(gif|png|jpg|css|js|woff|woff2)$" )
{
set $static_fileceZTfEud 1;
expires 12h;
}
if ( $static_fileceZTfEud = 0 )
{
add_header Cache-Control no-cache;
}
}
access_log /www/wwwlogs/domain.com.log;
error_log /www/wwwlogs/domain.com.error.log;
}
如果是宝塔用户的话也可以直接使用宝塔提供的反向代理功能,按照截图设置即可。
Umami使用体验
Umami的功能比较简单,总共选项也不多,上手没有难度。功能上来说只能说够用,比较适合个人或者小公司使用。
总结
-
Umami的安装依赖MySQL或Postgresql数据库
-
安装前需要先导入初始数据
-
默认用户名为
admin
,密码为umami
-
Umami界面简洁美观,支持多种语言
-
Umami功能比较简单,但数据不够丰富,功能上比起百度统计、Google Analytics还差很远,想要替代这些商业统计还有很长的路要走
-
Umami Demo:https://app.umami.is/share/8rmHaheU/umami.is
-
Umami官网:https://umami.is/
-
Umami项目地址:https://github.com/mikecao/umami