Open Web Analytics — PHP 开源流量统计方案,够轻够用

2026-05-04 奥古斯宏

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

Open Web Analytics 官网

它是什么

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 一键启动。

版权声明:本文由phpreturn.com(PHP武器库官网)原创和首发,所有权利归phpreturn(PHP武器库)所有,本站允许任何形式的转载/引用文章,但必须同时注明出处。

前置要求

  • 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

OWA 登录页面

安装步骤

# 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 追踪代码:

版权声明:本文由phpreturn.com(PHP武器库官网)原创和首发,所有权利归phpreturn(PHP武器库)所有,本站允许任何形式的转载/引用文章,但必须同时注明出处。

<!-- 放在 </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 就是那个中间选项。

版权声明:本文由phpreturn.com(PHP武器库官网)原创和首发,所有权利归phpreturn(PHP武器库)所有,本站允许任何形式的转载/引用文章,但必须同时注明出处。

Dashboard 一览

登录后进入 Sites Roster 页面,可以看到已添加的站点列表:

OWA Sites Roster 页面

点击 "View Reports" 进入 Dashboard:

OWA 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、表格布局、蓝色链接——但信息密度不错,核心数据一目了然。

版权声明:本文由phpreturn.com(PHP武器库官网)原创和首发,所有权利归phpreturn(PHP武器库)所有,本站允许任何形式的转载/引用文章,但必须同时注明出处。

实测体验

优点

  • 真的轻。数据库就十几张表,一个普通虚拟主机就能跑
  • 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 生态里,它是一个实在的、不过度设计的、能把事情做好的工具。有时候这就够了。

参考资料

最近浏览
IP用户:57.141.*.*
5 小时前 Generic Bot
IP用户:116.31.*.*
5 小时前 Chrome Windows 10
IP用户:122.8.*.*
8 小时前 Microsoft Edge Windows 10
IP用户:120.230.*.*
10 小时前 Chrome Mac 10.15
IP用户:170.23.*.*
1 天前 Safari Mac 10.15
IP用户:166.88.*.*
1 天前 Chrome Mac 10.15
IP用户:120.241.*.*
2 天前 Chrome Windows 10
IP用户:112.23.*.*
3 天前 Chrome Mac 10.15
IP用户:116.31.*.*
3 天前 Chrome Windows 10
IP用户:43.164.*.*
3 天前 Mobile Safari iOS 13.2
IP用户:120.233.*.*
4 天前 Chrome Windows 10
IP用户:116.31.*.*
6 天前 Chrome Windows 10
累计浏览次数:590
评论
点击登录
phpreturn,PHP武器库,专注PHP领域的项目和资讯,收录和介绍PHP相关项目。
最近浏览 点击登录
累计浏览次数:379368
一周浏览次数:1863
今日浏览次数:1

本站所有权利归 phpreturn.com 所有

举报/反馈/投稿邮箱:phpreturn@ulthon.com

鲁ICP备19027671号-2