PHP 生态里的自托管网站统计方案不多,Open Web Analytics(简称 OWA)算是一个有年头但依然能打的选择。它从 2006 年就开始了,走的是轻量路线——不追求成为全功能分析平台,而是专注做好基础统计这件事。

它是什么
OWA 是一个用 PHP + MySQL 写的开源网站分析工具。把代码放到服务器上,加一段追踪脚本,就能开始统计访问量、访客来源、页面热度这些基础数据。数据全部存在你自己的数据库里,不经过任何第三方服务。
和 Matomo 的核心区别在于体量和 philosophy:
| Matomo | OWA | |
|---|---|---|
| 语言 | PHP | PHP |
| 定位 | 全功能 GA 替代品 | 轻量统计工具 |
| 数据库表 | 100+ 张 | 十几张 |
| Docker 镜像 | ~500MB | 直接部署,无需 Docker |
| 插件生态 | 几百个 | 基本够用就行 |
| 学习成本 | 需要花时间熟悉 | 半小时上手 |
| 活跃维护 | 非常活跃 | 维护节奏较慢 |
| 许可协议 | GPL v3+ | GPL v2+ |
如果 Matomo 是瑞士军刀,OWA 就是一把顺手的水果刀——切不了那么多东西,但日常削苹果足够了。
核心功能
OWA 覆盖了大多数中小站点需要的分析能力:
- 访问量统计 — PV、UV、独立访客、回头访客
- 来源分析 — 搜索引擎、关键词、引荐网站、直接访问
- 页面追踪 — 最受欢迎的页面、入口页、退出页
- 访客行为 — 点击流(clickstream)、浏览路径、停留时间
- 实时数据 — 当前在线人数、最近访问
- 热力图 — 页面点击热力图(这个功能在轻量工具里不常见)
- 多站点管理 — 一个 OWA 实例管理多个网站
安装
OWA 的安装很简单,传统 PHP 部署方式就能跑,也可以用 Docker 一键启动。
前置要求
- PHP 7.4+(实测 PHP 8.x 有兼容性问题)
- MySQL / MariaDB
- 一个能跑 PHP 的 Web 服务器
- PHP 扩展:mysqli、pdo_mysql、json、session
实测踩坑:OWA 主分支对 PHP 8.x 支持不完善,安装向导在 PHP 8 下会因未定义常量和类加载问题报错。建议用 PHP 7.4 部署,或者用 CLI 方式完成安装。
Docker 部署(推荐)
OWA 没有官方镜像,但用 php:7.4-apache + mariadb:10.11 组合可以轻松跑起来:
# docker-compose.yml
services:
db:
image: mariadb:10.11
environment:
MYSQL_ROOT_PASSWORD: owa_root
MYSQL_DATABASE: owa
MYSQL_USER: owa
MYSQL_PASSWORD: owa_secret
volumes:
- owa_db_data:/var/lib/mysql
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 5s
timeout: 3s
retries: 10
web:
image: php:7.4-apache
ports:
- "8089:80"
volumes:
- ./owa:/var/www/html/owa
depends_on:
db:
condition: service_healthy
# 启动后需要手动安装 mysqli 扩展和配置 Apache
docker compose up -d
docker exec <web容器> docker-php-ext-install mysqli pdo_mysql

安装步骤
# 1. 下载源码
cd /var/www/html
git clone https://github.com/Open-Web-Analytics/Open-Web-Analytics.git owa
cd owa
# 2. 安装 Composer 依赖
composer install --no-interaction
# 3. 复制配置文件并填入数据库信息
cp owa-config-dist.php owa-config.php
# 编辑 owa-config.php,修改以下字段:
# OWA_DB_TYPE = 'mysql'
# OWA_DB_NAME = 'owa'
# OWA_DB_HOST = 'db' # Docker 内部主机名
# OWA_DB_USER = 'owa'
# OWA_DB_PASSWORD = 'owa_secret'
# OWA_PUBLIC_URL = 'http://localhost:8089/'
# 4. 创建必要目录
mkdir -p owa-data/{logs,caches}
chmod -R 777 owa-data/
mkdir -p modules/base/dist
# 5. CLI 完成安装(推荐,绕过 Web 向导的兼容性问题)
php cli.php cmd=install \
user_id=admin \
email_address=admin@example.com \
domain=localhost:8089 \
description="My Site"
如果 Web 安装向导正常工作(PHP 7.4 环境),也可以通过浏览器访问 http://your-domain/owa/install.php 按提示操作。
如果你用的是 WordPress,还有官方插件可以直接装:
# WordPress 后台 → 插件 → 新建 → 搜索 "Open Web Analytics"
# 或者
wp plugin install open-web-analytics --activate
接入追踪
登录 OWA 后台,进入 Sites Roster → Get Tracking Code 即可看到自动生成的追踪代码。页面会显示你的 Site ID 和 Domain,以及 JavaScript 和 PHP 两种追踪方式的代码片段。
JavaScript 追踪(常规方式)
安装完成后 OWA 会生成一段 JS 追踪代码:
<!-- 放在 </body> 前 -->
<!-- Start Open Web Analytics Tracker -->
<script type="text/javascript">
//<![CDATA[
var owa_baseUrl = 'http://your-host:8089/';
var owa_cmds = owa_cmds || [];
owa_cmds.push(['setSiteId', 'your-site-id']);
owa_cmds.push(['trackPageView']);
owa_cmds.push(['trackClicks']);
(function() {
var _owa = document.createElement('script'); _owa.type = 'text/javascript'; _owa.async = true;
owa_baseUrl = ('https:' == document.location.protocol ? window.owa_baseSecUrl || owa_baseUrl.replace('http:', 'https:') : owa_baseUrl );
_owa.src = owa_baseUrl + 'modules/base/dist/owa.tracker.js';
var _owa_s = document.getElementsByTagName('script')[0]; _owa_s.parentNode.insertBefore(_owa, _owa_s);
}());
//]]>
</script>
<!-- End Open Web Analytics Tracker -->
用法和主流统计工具差不多——一段 JS,放到页面底部。
PHP SDK 追踪(纯后端方式)
这是 OWA 相比其他轻量工具的一个亮点:它有官方的 PHP SDK,可以在后端直接上报数据,不需要前端 JS:
composer require open-web-analytics/owa-php-sdk
<?php
require 'vendor/autoload.php';
use OwaSdk\sdk;
// 初始化
$config = [
'instance_url' => 'https://your-domain.com/owa/',
'cookie_domain' => 'your-domain.com',
];
$sdk = new sdk($config);
$tracker = $sdk->createTracker();
$tracker->setSiteId('your-site-id');
// 追踪页面访问
$tracker->setPageTitle('订单详情');
$tracker->trackPageView();
// 也可以追踪自定义事件
$tracker->trackEvent('ecommerce', 'checkout', 'order_123', 99.99);
对于 API 服务、SPA 后端、或者需要和服务端逻辑绑定的场景,这个 PHP SDK 比 JS 追踪方便很多。
和另外两个"同赛道"工具对比
写完 Matomo 之后又聊了 Umami 和 Plausible,现在把四个放在一起看:
| Matomo | OWA | Umami | Plausible | |
|---|---|---|---|---|
| 语言 | PHP | PHP | Node.js | Elixir |
| 体量 | 重 | 中 | 轻 | 轻 |
| 功能 | 非常全面 | 够用 | 基础 | 基础 |
| PHP SDK | 有 | 有 | 无 | 无 |
| 热力图 | 有 | 有 | 付费 | 付费 |
| 多站点 | 支持 | 支持 | 支持 | 支持 |
| Docker 部署 | 官方镜像 | 不需要 | 一行命令 | 云版为主 |
| 维护状态 | 非常活跃 | 一般 | 活跃 | 商业公司 |
| 许可 | GPL v3+ | GPL v2+ | MIT | 源码可见 |
| 适合 | 中大型项目 | 中小型 PHP 项目 | 个人博客 | 不想运维的人 |
OWA 的独特位置:它是唯一一个同时满足 "PHP 写的"、"有 PHP SDK"、"带热力图"、"不需要 Docker" 这四个条件的开源统计工具。
如果你的技术栈是 PHP,不想引入 Node.js 服务(Umami),又觉得 Matomo 太重了,OWA 就是那个中间选项。
Dashboard 一览
登录后进入 Sites Roster 页面,可以看到已添加的站点列表:

点击 "View Reports" 进入 Dashboard:

Dashboard 分为几个区域:左侧导航包含 Dashboard、Content、Action Tracking、Visitors、Traffic、Goals 六个模块;主区域展示 Site Metrics(站点指标)、Top Content(热门内容)、Actions(操作)、Latest Visits(最近访问)、Visitor Types(访客类型)、Traffic Sources(流量来源)、Top Referrers(热门引荐)等数据面板;底部还有 OWA News(版本更新通知)。
界面风格确实比较复古——XHTML 1.0 的 DOCTYPE、表格布局、蓝色链接——但信息密度不错,核心数据一目了然。
实测体验
优点
- 真的轻。数据库就十几张表,一个普通虚拟主机就能跑
- PHP 原生。不需要额外装什么服务,现有的 PHP 环境直接用
- 有 PHP SDK。后端追踪这个能力在轻量工具里很少见
- GPL v2+。对商业使用友好
- WordPress 集成好。官方插件,支持按 WordPress 用户名追踪
需要注意的地方
- 更新频率不高。迭代节奏偏慢,不是那种每个月发版本的节奏
- 社区较小。遇到问题主要靠 GitHub Issues,没有庞大的论坛生态
- 界面比较老旧。UI 还停留在十年前的审美,功能不受影响但看着不太现代(XHTML 1.0 + 表格布局)
- 文档不够完善。部分高级功能的文档需要自己看源码摸索
- 移动端适配差。后台在手机上用的体验一般
- PHP 8.x 兼容性问题。主分支在 PHP 8 下有类加载错误,建议用 PHP 7.4
说白了,OWA 是一个能用、够用、但不惊艳的工具。它不会让你惊叹"哇这个功能太强了",但它也不会让你觉得"这东西怎么这么复杂"。
适用场景
适合用 OWA 的:
- PHP 技术栈的中小型网站或应用
- 想要自托管统计又不想搞太重的方案
- 需要 PHP 后端追踪能力的项目(API 服务、混合应用)
- 对 UI 要求不高、只关心数据的实用主义者
不太适合的:
- 需要电商分析、转化漏斗等高级功能的项目(上全功能分析平台)
- 追求现代化 UI 和丰富可视化的大团队
- 非 PHP 技术栈的项目(Node.js 生态有更合适的)
OWA 可能不是最 flashy 的选择,但在 PHP 生态里,它是一个实在的、不过度设计的、能把事情做好的工具。有时候这就够了。
参考资料
- https://www.openwebanalytics.com/
- https://github.com/Open-Web-Analytics/Open-Web-Analytics
- https://github.com/Open-Web-Analytics/owa-php-sdk — PHP SDK
- 相关文章:Matomo -- 开源网站流量统计平台
原文标题: Open Web Analytics — PHP 开源流量统计方案,够轻够用
原文地址: https://phpreturn.com/index/a69f85448db15d.html
原文平台: PHP武器库
版权声明: 本文由phpreturn.com(PHP武器库官网)原创和首发,所有权利归phpreturn(PHP武器库)所有,本站允许任何形式的转载/引用文章,但必须同时注明出处。