前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用 LightHouse 搭建 Umami 网站统计系统

使用 LightHouse 搭建 Umami 网站统计系统

原创
作者头像
猫猫摸大鱼
发布2022-07-20 12:30:02
1.4K1
发布2022-07-20 12:30:02
举报
文章被收录于专栏:摸鱼摸鱼

前言

本文基于 Umami in Docker 以及 腾讯云 MySQL 实例,故而参考性不强,更多的是作为防止我自己忘了怎么搭建的一个教程。


本来在使用的是 matomo 统计系统,但是由于 matomo 太过占用服务器(1c2g)资源,而且最近正在迁移网站到其他服务器上,于是就打算用 相对更加轻量化的matomo --- Umami 来代替我本来的 matomo ;再加上手里有一台腾讯云的 MySQL 实例,就打算使用 Umami in Docker 以及 腾讯云 MySQL 的方案来搭建 Umami 。

1. 配置MySQL

1.1 新建数据库账号

账号名为 umami ,主机为 % 或你的服务器的内网 / 外网 IP ,设置密码

1.2 新建数据库

命名为 umami ,字符集建议为 utf8mb4

1.3 导入数据库

将如下代码保存为 umami.sql 文件,导入数据库 umami

代码语言:javascript
复制
drop table if exists event;
drop table if exists pageview;
drop table if exists session;
drop table if exists website;
drop table if exists account;

create table account (
    user_id int unsigned not null auto_increment primary key,
    username varchar(255) unique not null,
    password varchar(60) not null,
    is_admin bool not null default false,
    created_at timestamp default current_timestamp,
    updated_at timestamp default current_timestamp
) ENGINE=InnoDB COLLATE=utf8_general_ci;

create table website (
    website_id int unsigned not null auto_increment primary key,
    website_uuid varchar(36) unique not null,
    user_id int unsigned not null,
    name varchar(100) not null,
    domain varchar(500),
    share_id varchar(64) unique,
    created_at timestamp default current_timestamp,
    foreign key (user_id) references account(user_id) on delete cascade
) ENGINE=InnoDB COLLATE=utf8_general_ci;

create table session (
    session_id int unsigned not null auto_increment primary key,
    session_uuid varchar(36) unique not null,
    website_id int unsigned not null references website(website_id) on delete cascade,
    created_at timestamp default current_timestamp,
    hostname varchar(100),
    browser varchar(20),
    os varchar(20),
    device varchar(20),
    screen varchar(11),
    language varchar(35),
    country char(2),
    foreign key (website_id) references website(website_id) on delete cascade
) ENGINE=InnoDB COLLATE=utf8_general_ci;

create table pageview (
    view_id int unsigned not null auto_increment primary key,
    website_id int unsigned not null,
    session_id int unsigned not null,
    created_at timestamp default current_timestamp,
    url varchar(500) not null,
    referrer varchar(500),
    foreign key (website_id) references website(website_id) on delete cascade,
    foreign key (session_id) references session(session_id) on delete cascade
) ENGINE=InnoDB COLLATE=utf8_general_ci;

create table event (
    event_id int unsigned not null auto_increment primary key,
    website_id int unsigned not null,
    session_id int unsigned not null,
    created_at timestamp default current_timestamp,
    url varchar(500) not null,
    event_type varchar(50) not null,
    event_value varchar(50) not null,
    foreign key (website_id) references website(website_id) on delete cascade,
    foreign key (session_id) references session(session_id) on delete cascade
) ENGINE=InnoDB COLLATE=utf8_general_ci;

create index website_user_id_idx on website(user_id);

create index session_created_at_idx on session(created_at);
create index session_website_id_idx on session(website_id);

create index pageview_created_at_idx on pageview(created_at);
create index pageview_website_id_idx on pageview(website_id);
create index pageview_session_id_idx on pageview(session_id);
create index pageview_website_id_created_at_idx on pageview(website_id, created_at);
create index pageview_website_id_session_id_created_at_idx on pageview(website_id, session_id, created_at);

create index event_created_at_idx on event(created_at);
create index event_website_id_idx on event(website_id);
create index event_session_id_idx on event(session_id);

insert into account (username, password, is_admin) values ('admin', '$2b$10$BUli0c.muyCW1ErNJc3jL.vFRFtFJWrT8/GcR4A.sUdCznaXiqFXa', true);

2. 运行Umami

先拉取镜像

代码语言:javascript
复制
docker pull ghcr.io/mikecao/umami:mysql-latest

如果国内机拉取速度慢的话,使用

代码语言:javascript
复制
docker pull ghcr.dockerproxy.com/mikecao/umami:mysql-latest

然后 docker run

代码语言:javascript
复制
docker run -d  --name umami  --net=host  -e DATABASE_URL=mysql://umami:password@Mysql_Address:Port/umami   -e DATABASE_TYPE=mysql  -e HASH_SALT=8K95dbd6UvQJxjP2xAek7vDLolirFwzpT8H9MgkYZq   ghcr.io/mikecao/umami:mysql-latest

其中的

HASH_SALT 为哈希加盐,随意输入即可

DATABASE_URL=mysql://username:password@Mysql_Address:Port/databasename

username 为步骤1.1添加的用户名 umami ,

password 为步骤1.1设置的密码,

Mysql_Address 为 MySQL 地址,

Port 为 MySQL 端口,

databasename 为步骤1.2添加的数据库名 umami,

输入以下命令查看日志

代码语言:javascript
复制
 docker logs -f umami

日志如下则代表搭建成功,umami 已经运行在 3000 端口上

3. 使用 Umami

如果有需要可以将 Umami 反代,这里不再赘述

访问 服务器IP:3000 或 反代后的域名,用户名为 admin 密码为umami ,登录

初始默认为英文,如下图所示设置为中文

然后依次点击设置 --- 账户 --- 编辑,修改用户名和密码

然后点击网站 --- 添加网站,填入你网站的信息,“启用共享链接”项随意

点击如图所示处,获取跟踪代码

将代码放到 <head> </head> 中,就可以开始统计你的网站访客信息了


腾云先锋(TDP,Tencent Cloud Developer Pioneer)是腾讯云 GTS 官方组建并运营的技术开发者群体。这里有最专业的开发者&客户,能与产品人员亲密接触,专有的问题&需求反馈渠道,有一群志同道合的兄弟姐妹。来加入属于我们开发者的社群吧 。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 1. 配置MySQL
    • 1.1 新建数据库账号
      • 1.2 新建数据库
        • 1.3 导入数据库
        • 2. 运行Umami
        • 3. 使用 Umami
        相关产品与服务
        轻量应用服务器
        轻量应用服务器(TencentCloud Lighthouse)是新一代开箱即用、面向轻量应用场景的云服务器产品,助力中小企业和开发者便捷高效的在云端构建网站、Web应用、小程序/小游戏、游戏服、电商应用、云盘/图床和开发测试环境,相比普通云服务器更加简单易用且更贴近应用,以套餐形式整体售卖云资源并提供高带宽流量包,将热门开源软件打包实现一键构建应用,提供极简上云体验。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档