Umami是一款轻量级的开源网站统计工具,相比传统统计工具更注重用户隐私保护,不会收集过多的用户个人信息,适合对隐私有要求的站点使用。结合phpEnv本地集成环境,可以快速完成Umami的部署,还能通过PHP编写自定义统计接口,实现更灵活的数据统计需求。

前期环境准备
首先需要确保phpEnv已经正确安装并启动,phpEnv集成了PHP、MySQL、Nginx等服务,无需单独配置基础环境。需要确认以下服务处于运行状态:
- PHP版本建议选择7.4及以上,Umami的后端依赖需要较高版本的PHP支持
- MySQL服务正常运行,后续需要创建Umami专用的数据库
- Nginx服务正常启动,用于反向代理Umami的前端服务
安装Umami核心步骤
1. 下载Umami源码
从Umami的官方仓库下载最新版本的源码包,解压后放到phpEnv的网站根目录下,比如放到D:phpEnvwwwumami路径中。
2. 配置数据库
登录phpEnv自带的phpMyAdmin,创建一个新的数据库,比如命名为umami_db,字符集选择utf8mb4。然后修改Umami根目录下的.env配置文件,填写数据库连接信息:
# 数据库配置 DB_HOST=127.0.0.1 DB_PORT=3306 DB_USER=root DB_PASSWORD=phpEnv默认的MySQL密码 DB_NAME=umami_db
3. 初始化数据表
打开命令行工具,切换到Umami的源码目录,执行数据库迁移命令,创建Umami运行所需的数据表:
# 安装依赖 npm install # 执行数据库迁移 npm run migrate
4. 启动Umami服务
执行以下命令启动Umami的前端和后端服务:
# 启动开发环境服务,默认端口3000 npm run dev
此时访问127.0.0.1:3000就可以看到Umami的登录页面,默认管理员账号为admin,密码为umami,首次登录后建议修改密码。
配置Nginx反向代理
为了让Umami可以通过常规域名或端口访问,需要配置Nginx反向代理。在phpEnv的Nginx配置中添加如下规则:
server {
listen 8080;
server_name 127.0.0.1;
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 X-Forwarded-Proto $scheme;
}
}
重启Nginx服务后,访问127.0.0.1:8080就可以正常打开Umami管理页面。
配置PHP统计接口对接Umami
Umami本身提供了API接口,我们可以通过PHP编写自定义统计脚本,实现更灵活的数据上报。首先需要在Umami管理页面中创建一个网站,获取对应的Website ID和API Token。
以下是一个简单的PHP统计上报示例,用于上报页面访问数据:
<?php
// Umami API配置
$apiUrl = 'http://127.0.0.1:3000/api/collect';
$websiteId = '你的Umami网站ID';
$token = '你的Umami API Token';
// 收集访问数据
$data = [
'type' => 'pageview',
'website' => $websiteId,
'url' => $_SERVER['REQUEST_URI'],
'referrer' => $_SERVER['HTTP_REFERER'] ?? '',
'userAgent' => $_SERVER['HTTP_USER_AGENT'] ?? '',
'ip' => $_SERVER['REMOTE_ADDR']
];
// 发送POST请求上报数据
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $apiUrl);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Authorization: Bearer ' . $token
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
// 可选:记录上报结果
// file_put_contents('umami_log.txt', $response . PHP_EOL, FILE_APPEND);
?>
将上述代码放到你需要统计的PHP页面头部,就可以实现访问数据的自动上报,数据会同步到Umami的统计面板中。
隐私分析相关配置
Umami默认就具备隐私保护特性,不会存储用户的完整IP地址,也不会使用Cookie跟踪用户。如果需要进一步调整隐私配置,可以修改Umami的配置文件:
- 设置
DISABLE_IP_TRACKING=true可以完全禁止IP相关信息的收集 - 设置
DISABLE_COOKIE=true可以关闭所有Cookie的使用 - 可以在Umami管理页面中设置数据保留时长,自动清理过期的统计数据
这些配置可以让统计系统完全符合GDPR等隐私法规的要求,避免收集不必要的用户个人信息。
常见问题排查
如果部署过程中遇到问题,可以按照以下思路排查:
- 检查MySQL服务是否正常,数据库连接参数是否填写正确
- 查看Umami启动日志,确认是否有依赖安装失败或者端口占用的问题
- 检查Nginx反向代理配置是否正确,端口是否被其他服务占用
- PHP上报接口如果失败,检查curl扩展是否开启,API Token是否有效