原生LEMP部署Matomo最稳妥可控,需满足PHP≥7.2.5及MySQL≥5.5等最低要求;必须安装php-fpm、php-mysql等扩展并验证加载;Nginx须正确配置子目录与query_string转发;数据库用户应授权localhost而非%;安装后务必删除或禁止访问install.php,并调优PHP、MySQL、Nginx及cron参数确保稳定运行。

不依赖 Docker,用原生 LEMP(Linux + Nginx + MySQL/MariaDB + PHP)部署 Matomo 是最稳妥、可控性最强的方式。只要系统满足最低要求(PHP ≥ 7.2.5、MySQL ≥ 5.5 或 MariaDB ≥ 10.1),就能跑起来,且后续调优和排查都更直接。
确认 PHP 版本和必需扩展是否就位
Matomo 对 PHP 模块有硬性依赖,缺一不可。常见报错如 Class 'PDO' not found 或安装页面卡在“PHP extension pdo_mysql is missing”就是典型信号。
- 运行
php -v确认版本 ≥ 7.2.5;Ubuntu/Debian 默认源通常只带 PHP 8.1+,CentOS 7 则需手动启用 Remi 或 Webtatic 源 - 必须安装的扩展:
php-fpm、php-mysql、php-mbstring、php-xml、php-curl、php-gd、php-zip、php-json - 验证是否加载成功:
php -m | grep -E "mysql|mbstring|curl";若pdo_mysql不在列表里,说明php-mysql没装对(不是php-mysqli) - 注意:PHP-FPM 进程用户(通常是
www-data或nginx)必须对 Matomo 目录有读写权限,否则安装向导无法写入config/config.ini.php
Nginx 配置要绕过 root location 的坑
Matomo 不是单页应用,它的后台路由(如 /index.php?module=CoreHome)依赖 PHP-FPM 正确转发,Nginx 默认配置容易漏掉 query string 或误判静态资源路径。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 不要把 Matomo 放在
/var/www/html下再用location /匹配——这会导致所有请求被 index.php 拦截,连/js/、/plugins/都 404 - 推荐做法:用子目录部署(如
/analytics/),并在 server 块中单独配location /analytics/ - 关键配置段必须包含:
try_files $uri $uri/ /analytics/index.php?$query_string;——$query_string不能省,否则后台跳转全失效 - 加一行
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;,否则$_SERVER['SCRIPT_FILENAME']为空,Matomo 会报 “The fileindex.phpdoes not exist.”
数据库权限别只给 localhost
Matomo 安装时默认连接 127.0.0.1,但实际走的是 socket(Unix domain socket),不是 TCP。如果创建用户时指定 'matomouser'@'localhost',多数情况下能连上;但如果 Nginx 和 PHP-FPM 运行在不同用户下,或你改过 MySQL 绑定地址,就可能失败。
- 安全起见,先用
sudo mysql -u root -p登录,执行:CREATE DATABASE matomo CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; - 创建用户时用
CREATE USER 'matomouser'@'localhost' IDENTIFIED BY 'your_strong_password';(不是%) - 授权必须显式指定库:
GRANT ALL PRIVILEGES ON matomo.* TO 'matomouser'@'localhost';,然后FLUSH PRIVILEGES; - 如果仍连不上,临时测试可改用
127.0.0.1并检查 MySQL 是否监听:ss -tlnp | grep :3306;若只监听127.0.0.1,则localhost用户走 socket,127.0.0.1用户走 TCP,二者权限独立
安装后第一件事:关掉 install.php
Matomo 安装完成后,console core:install 或网页向导都会生成 config/config.ini.php,但默认不会删掉 install.php ——这是严重安全隐患,任何人访问 /matomo/install.php 都能重装并覆盖现有数据。
- 最简单方式:
rm /path/to/matomo/install.php - 更稳妥的做法是在 Nginx 配置里直接 deny:
location = /matomo/install.php { deny all; } - 顺手检查
tmp/目录权限是否为755(不是777),config/目录是否不可写(644或444) - 如果用了宝塔等面板,注意它自动生成的 PHP 配置可能禁用了
exec、shell_exec——Matomo 的命令行工具(如console)需要这些函数,否则定时归档会失败
真正麻烦的从来不是装上,而是让 Matomo 在真实流量下稳定跑满一周:PHP 内存限制、MySQL 的 max_allowed_packet、Nginx 的 client_max_body_size(影响日志导入)、以及 cron 是否真按分钟级执行 console core:archive ——这些细节不调,数据就会慢慢积压、延迟、甚至丢点。

















