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用户:27.29.*.*
1 小时前 Chrome Windows 7
IP用户:112.251.*.*
1 小时前 Firefox Windows 10
累计浏览次数:8
评论
点击登录
phpreturn,PHP武器库,专注PHP领域的项目和资讯,收录和介绍PHP相关项目。

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

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

鲁ICP备19027671号-2