部署 Umami 访客统计系统

发布于 2024-03-09  1480 次阅读


Google Analytics 收集的信息过多且数据不在自己手里。这里就用 Umami 代替

【官网】https://umami.is/

【Github】https://github.com/umami-software/umami

安装

支持两个数据库:Mysql 和 Postgresql

mysql 5.7 版本的注意

部署 Umami 访客统计系统插图1

这个 sql 文件中的一些语句与 5.7 版本不兼容,在 run build 时会出错

可以参考 Github issues:https://github.com/umami-software/umami/issues/2118

需要将 migration.sql 中的

-- AlterTable
ALTER TABLE `event_data` RENAME COLUMN `event_data_type` TO `data_type`;
ALTER TABLE `event_data` RENAME COLUMN `event_date_value` TO `date_value`;
ALTER TABLE `event_data` RENAME COLUMN `event_id` TO `event_data_id`;
ALTER TABLE `event_data` RENAME COLUMN `event_numeric_value` TO `number_value`;
ALTER TABLE `event_data` RENAME COLUMN `event_string_value` TO `string_value`;

替换为

-- RenameColumns
ALTER TABLE `event_data` ADD COLUMN data_type INTEGER UNSIGNED AFTER event_data_type;
ALTER TABLE `event_data` ADD COLUMN date_value TIMESTAMP(0) AFTER event_date_value;
ALTER TABLE `event_data` ADD COLUMN event_data_id VARCHAR(36) AFTER event_id;
ALTER TABLE `event_data` ADD COLUMN number_value DECIMAL(19, 4) AFTER event_numeric_value;
ALTER TABLE `event_data` ADD COLUMN string_value VARCHAR(500) AFTER event_string_value;

UPDATE event_data
SET data_type = event_data_type,
    date_value = event_date_value,
    event_data_id = event_id,
    number_value = event_numeric_value,
    string_value = event_string_value;

ALTER TABLE `event_data` MODIFY data_type INTEGER UNSIGNED NOT NULL;
ALTER TABLE `event_data` MODIFY event_data_id VARCHAR(36) NOT NULL;

ALTER TABLE `event_data` DROP COLUMN event_data_type;
ALTER TABLE `event_data` DROP COLUMN event_date_value;
ALTER TABLE `event_data` DROP COLUMN event_id;
ALTER TABLE `event_data` DROP COLUMN event_numeric_value;
ALTER TABLE `event_data` DROP COLUMN event_string_value;

ALTER TABLE `event_data` ADD PRIMARY KEY(event_data_id);

在跟目录新建一个 .env 文件,里面填写数据库链接

DATABASE_URL=mysql://xxx:xxx@xxx:3306/umami
HASH_SALT=xxx

构建

yarn install

注意端口,默认是 3000,想改的化,记得在 package.json 中 scripts 中 start 命令后面加 -p xxxx

"scripts": {
  "dev": "next dev",
  "build": "npm-run-all check-env build-db check-db build-tracker build-geo build-app",
  "start": "next start -p 1111",

打包

yarn run build

后面会卡住一会儿,要下载 城市 IP 的数据【GeoLite2-City.mmdb】,有 60 MB 左右

运行

安装 pm2 方便管理

npm install -g pm2
// 然后执行
pm2 start npm --name umami -- start

使用

登陆账号和密码:admin     umami

创建网站信息

部署 Umami 访客统计系统插图2

然后把跟踪代码放到网站里面

例如(站主是 Nuxt 3)

部署 Umami 访客统计系统插图3