在 Ubuntu 20.04 上安装 Matomo Web Analytics (Piwik) Apache/Nginx

本教程将向您展示如何安装 Matomo 网络分析 (以前称为 Piwik)在 Ubuntu 20.04 上 Apache 或 Nginx 网络服务器。 Matomo 是一个开源的替代方案 谷歌分析,这是使用最广泛的网络分析软件。

什么是网络分析?

网站使用网络分析软件来了解网站在一天/一周/一个月内有多少访问者、他们使用的网络浏览器等。它是帮助发展网站的关键软件。 谷歌分析很棒,但网站访问者的数据存储在谷歌的服务器上。 如果您不想与第三方共享您网站访问者的数据,您可以运行自己的网络分析软件。 它们是谷歌分析的许多自托管替代品,而 Matomo 是一个很好的选择。

Matomo 特点

开源(GPL v3+ 许可)自托管 Matomo 版本可以显示以下报告。

  • 热门关键字和搜索引擎、网站、社交媒体网站。
  • 首页 URL、页面标题、用户国家/地区、提供商、操作系统、浏览器市场份额、屏幕分辨率、桌面 VS 移动。
  • 参与度(网站停留时间、每次访问页面、重复访问)。
  • 热门活动、自定义变量、热门进入/退出页面、下载的文件等等。
  • 分为四个主要分析报告类别 – 访问者、操作、推荐人、目标/电子商务(30 多个报告)。
  • 统计电子邮件报告。
  • Web 服务器日志分析。
  • 跟踪禁用 JavaScript 的访问者。
  • 遵守 GDPR 的工具(例如 cookie 同意)
  • 安装免费或高级插件以扩展和扩展 Matomo 的功能。
  • 一个易于使用的基于 Web 的更新程序。 还可以使用命令行更新程序。
  • 和更多。

如需完整的功能列表,请查看 Matomo 功能页面。 我特别喜欢 Matomo 可以按页面浏览量列出我的所有网页,并显示每个网页的跳出率和退出率,以及实时访问者地图。

Matomo 实时访客地图

自托管 Matomo 的好处

  • 完全控制数据。 数据仅存储在您的服务器上,您可以选择服务器所在的国家/地区。
  • 没有数据限制。 您可以保存尽可能多的数据。
  • 完全可定制和可扩展。
  • Firefox 开始阻止跨站点跟踪 cookie,包括 Google 分析。 通过在您自己的域名下托管分析软件,您的跟踪 cookie 将不会被阻止。

云托管的 Matomo 具有额外的功能,但您可以在自托管的实例上安装高级插件以获得相同的功能。

在 Ubuntu 20.04 上安装 Matomo Web Analytics (Piwik) 的先决条件

要学习本教程,您将需要一个域名和一个服务器。 我在 NameCheap 注册了我的域名,因为价格低廉,而且他们提供终身免费的 whois 隐私保护。 具有 1G RAM 的服务器足以运行 Matomo,这里是我推荐的托管服务提供商。 我已经使用了所有这些。

  • Vultr(每月 2.5 美元起。需要信用卡)
  • DigitalOcean(每月 5 美元起。不需要信用卡。您可以使用 Paypal)。

拥有服务器后,在其上安装 Ubuntu 并按照以下说明进行操作。

Matomo 是用 PHP 编写的,使用 MySQL/MariaDB 数据库。 要学习本教程,假设您已经在 Ubuntu 20.04 上设置了 LAMP 或 LEMP 堆栈。 如果没有,请查看以下教程之一:

  • 如何在 Ubuntu 20.04 服务器上安装 LAMP 堆栈
  • 如何在 Ubuntu 20.04 服务器上安装 LEMP 堆栈

完成 LAMP 或 LEMP 堆栈设置后,请返回此处继续阅读。

第 1 步:在 Ubuntu 20.04 上下载 Matomo

通过 SSH 登录到您的服务器。 您始终可以使用以下命令在您的服务器上下载最新版本的 Matomo。

wget https://builds.matomo.org/matomo-latest.zip

下载后,使用以下命令解压缩存档 unzip.

sudo apt install unzip  sudo mkdir -p /var/www/  sudo unzip matomo-latest.zip -d /var/www/

-d 选项指定目标目录。 Matomo 网络文件将被提取到 /var/www/matomo/. 然后我们需要将该目录的所有者更改为 www-data 以便 Web 服务器可以写入此目录。

sudo chown www-data:www-data /var/www/matomo/ -R

第 2 步:在 MariaDB 中创建数据库和用户

使用以下命令登录到 MariaDB 数据库服务器。

sudo mysql

或者,您也可以使用此命令登录。

sudo mariadb

然后为 Matomo 创建一个数据库。 本教程命名数据库 matomo. 您可以使用任何您喜欢的名称。

create database matomo;

创建数据库用户。 同样,您可以为此用户使用您的首选名称。 代替 your-password 使用您的首选密码。

create user matomouser@localhost identified by 'your-password';

授予此用户所有权限 matomo 数据库。

grant all privileges on matomo.* to matomouser@localhost;

刷新权限并退出。

flush privileges;  exit;

第 3 步:创建 Apache 或 Nginx 配置文件

Apache

如果您更喜欢使用 Apache web服务器,然后在里面创建一个虚拟主机配置文件 /etc/apache2/sites-available/ 目录。

sudo nano /etc/apache2/sites-available/matomo.conf

将以下文本放入文件中。 代替 analytics.example.com 用你自己的域名。 不要忘记在您的 DNS 管理器中为域名设置 A 记录。

<VirtualHost *:80>         ServerAdmin [email protected]         ServerName analytics.example.com         DocumentRoot /var/www/matomo/          <Directory /var/www/matomo>            DirectoryIndex index.php            Options FollowSymLinks            AllowOverride All            Require all granted         </Directory>          <Files "console">            Options None            Require all denied         </Files>          <Directory /var/www/matomo/misc/user>            Options None            Require all granted         </Directory>          <Directory /var/www/matomo/misc>            Options None            Require all denied         </Directory>          <Directory /var/www/matomo/vendor>            Options None            Require all denied         </Directory>          ErrorLog ${APACHE_LOG_DIR}/matomo_error.log         CustomLog ${APACHE_LOG_DIR}/matomo_access.log combined  </VirtualHost> 

Save 和 close 文件。 然后启用这个虚拟主机。

sudo a2ensite matomo.conf

重新加载 Apache Web 服务器以使更改生效。

sudo systemctl reload apache2

nginx

如果您更喜欢使用 Nginx Web 服务器,则创建一个 matomo.conf 归档 /etc/nginx/conf.d/ 目录。

sudo nano /etc/nginx/conf.d/matomo.conf

将以下文本放入文件中。 代替 analytics.example.com 用你自己的域名。 不要忘记在您的 DNS 管理器中为域名设置 A 记录。

server {     listen [::]:80;     listen 80;     server_name analytics.example.com;      access_log /var/log/nginx/matomo.access.log;     error_log /var/log/nginx/matomo.error.log;      root /var/www/matomo/;           index index.php;              ## only allow accessing the following php files     location ~ ^/(index|matomo|piwik|js/index).php {         include snippets/fastcgi-php.conf;         fastcgi_param HTTP_PROXY ""; # prohibit httpoxy: https://httpoxy.org/         fastcgi_pass unix:/run/php/php7.4-fpm.sock;      }          ## needed for HeatmapSessionRecording plugin     location = /plugins/HeatmapSessionRecording/configs.php {          include snippets/fastcgi-php.conf;         fastcgi_param HTTP_PROXY "";         fastcgi_pass unix:/run/php/php7.4-fpm.sock;      }          ## deny access to all other .php files     location ~* ^.+.php$ {         deny all;         return 403;     }      ## serve all other files normally      location / {         try_files $uri $uri/ =404;     }          ## disable all access to the following directories      location ~ /(config|tmp|core|lang) {         deny all;         return 403; # replace with 404 to not show these directories exist     }     location ~ /.ht {         deny  all;         return 403;     }      location ~ .(gif|ico|jpg|png|svg|js|css|htm|html|mp3|mp4|wav|ogg|avi|ttf|eot|woff|woff2|json)$ {         allow all;         ## Cache images,CSS,JS and webfonts for an hour         ## Increasing the duration may improve the load-time, but may cause old files to show after an Matomo upgrade         expires 1h;         add_header Pragma public;         add_header Cache-Control "public";     }      location ~ /(libs|vendor|plugins|misc/user) {         deny all;         return 403;     }      ## properly display textfiles in root directory     location ~/(.*.md|LEGALNOTICE|LICENSE) {         default_type text/plain;     } } 

Save 和 close 文件。 测试 Nginx 配置,然后重新加载 Nginx 以使更改生效。

sudo nginx -t  sudo systemctl reload nginx

第 4 步:安装和启用 PHP 模块

运行以下命令安装 Matomo 需要或推荐的 PHP 模块。

sudo apt install php-imagick php7.4-mysql php7.4-fpm php7.4-common php7.4-gd php7.4-json php7.4-curl  php7.4-zip php7.4-xml php7.4-mbstring php7.4-bz2 php7.4-intl

如果您正在使用 Apache Web 服务器,您需要重新加载它以使其与这些 PHP 模块一起运行。

sudo systemctl reload apache2

Nginx 用户不需要重新加载。

现在您应该可以访问 Matomo 基于 Web 的安装向导了 https://analytics.example.com,但在输入任何信息之前,让我们启用 HTTPS。

步骤 5:启用 HTTPS

为了在您访问 Matomo 网络界面时加密 HTTP 流量,我们可以通过安装 Let’s Encrypt 颁发的免费 TLS 证书来启用 HTTPS。 运行以下命令在 Ubuntu 20.04 上安装 Let’s Encrypt 客户端 (certbot)。

sudo apt update sudo apt install certbot

如果使用 Nginx,还需要安装 Certbot Nginx 插件。

sudo apt install python3-certbot-nginx

然后运行以下命令获取并安装TLS证书。

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d analytics.example.com

如果你使用 Apache,你还需要安装Certbot Apache 插入。

sudo apt install python3-certbot-apache

然后运行此命令以获取并安装 TLS 证书。

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d analytics.example.com

解释:

  • --nginx: 使用nginx插件。
  • --apache: 使用 Apache 插入。
  • --agree-tos: 同意服务条款。
  • --redirect: 通过 301 重定向强制 HTTPS。
  • --hsts:将 Strict-Transport-Security 标头添加到每个 HTTP 响应。 强制浏览器始终对域使用 TLS。 防御 SSL/TLS 剥离。
  • --staple-ocsp:启用 OCSP 装订。 有效的 OCSP 响应被装订到服务器在 TLS 期间提供的证书。

现在应该获得并自动安装证书。