使用Apache / Nginx在Ubuntu 18.04上安装Matomo Web Analytics(Piwik)

本教程将向您展示如何在具有Apache或Nginx Web服务器的Ubuntu 18.04上安装Matomo Web分析(以前称为Piwik)。 Matomo是Google Analytics(分析)的一种开源替代方案,后者是使用最广泛的Web分析软件。

什么是Web Analytics?

网站使用Web分析软件来了解一天/一周/一个月中一个站点上有多少访问者,他们正在使用什么Web浏览器,等等。这是帮助其发展网站的重要软件。 Google分析功能很棒,但是网站访问者的数据存储在Google的服务器上。 如果您不想与第三方共享网站访问者的数据,则可以运行自己的网络分析。 它们是Google分析的许多自托管替代方案,而Matomo是一个很好的选择。

Matomo功能

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

  • 热门关键字和搜索引擎,网站,社交媒体网站。
  • 首页URL,页面标题,用户国家/地区,提供商,操作系统,浏览器市场份额,屏幕分辨率,台式机VS移动版。
  • 参与度(网站停留时间,每次访问页面,重复访问)。
  • 热门广告系列,自定义变量,热门进入/退出页面,下载的文件等等。
  • 分为四个主要的分析报告类别-访问者,操作,引荐来源,目标/电子商务(30多个报告)。
  • 统计电子邮件报告。
  • Web服务器日志分析。
  • 跟踪已禁用JavaScript的访问者。
  • 符合GDPR的工具(例如Cookie同意)
  • 安装免费或高级插件以扩展和扩展Matomo的功能。
  • 和更多。

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

Matomo实时访客地图

自托管Matomo的好处

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

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

在Ubuntu 18.04上安装Matomo Web Analytics(Piwik)的前提条件

要遵循本教程,您将需要一个域名和一台服务器。 我在NameCheap上注册了我的域名,因为价格低廉,并且终身免费提供Whois隐私保护。 具有512MB RAM的服务器足以运行Matomo,这是我推荐的托管服务提供商。 我已经用完了。

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

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

Matomo用PHP编写,并使用MySQL / MariaDB数据库。 为了遵循本教程,假定您已经在Ubuntu 18.04上设置了LAMP或LEMP堆栈。 如果没有,请查看以下教程之一:

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

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

第1步:在Ubuntu 18.04上下载Matomo

通过SSH登录到服务器。 您始终可以使用以下命令在服务器上下载Matomo的最新版本。 在撰写本文时,是Matomo 3.7的最新版本,它具有新功能–标记管理器。 这是Matomo在过去几年中最大的里程碑之一。

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

下载完成后,使用 unzip

sudo apt install unzip

sudo unzip matomo-latest.zip -d /var/www/

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

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

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

使用以下命令登录MariaDB数据库服务器。 由于MariaDB现在正在使用 unix_socket 身份验证用户登录的插件,无需输入MariaDB根密码。 我们只需要在 mysql 用命令 sudo

sudo mysql

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

sudo mariadb

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

create database matomo;

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

create user [email protected] identified by 'your-password';

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

grant all privileges on matomo.* to [email protected] identified by 'your-password';

刷新特权并退出。

flush privileges;

exit;

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

阿帕奇

如果您更喜欢使用Apache Web服务器,请在以下位置创建虚拟主机配置文件: /etc/apache2/sites-available/ 目录。

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

将以下文本放入文件中。 将红色文本替换为您的实际数据。 不要忘记为域名设置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>

保存并关闭文件。 然后启用此虚拟主机。

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

将以下文本放入文件中。 将红色文本替换为您的实际数据。 不要忘记为域名设置A记录。

server {
    listen [::]:80; # remove this if you don't want Matomo to be reachable from IPv6
    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.2-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.2-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;
    }
}

保存并关闭文件。 测试Nginx配置,然后重新加载Nginx以使更改生效。

sudo nginx -t

sudo systemctl reload nginx

步骤4:安装并启用PHP模块

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

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

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

sudo systemctl reload apache2

Nginx用户不需要重新加载。

现在,您应该能够访问Matomo基于Web的安装向导,网址为 http://analytics.example.com,但是在输入任何信息之前,让我们启用HTTPS。

步骤5:启用HTTPS

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

sudo apt install software-properties-common
sudo add-apt-repository ppa:certbot/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期间提供的证书。

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

matomo安装ubuntu

步骤6:在Web浏览器中完成安装

https://analytics.example.com 启动基于Web的安装向导。 然后点击 Next 按钮。

Matomo安装Ubuntu 18.04

它将检查您的系统是否满足PHP扩展之类的要求。 如果满足所有要求,则单击 Next

matomo ubuntu php扩展

在下一步中,输入您先前创建的MariaDB用户名,密码和数据库名称。 您可以在其他字段中使用默认值。

matomo mariadb数据库

单击“下一步”后,安装向导将自动在数据库中创建一些表。 请点击 Next 接着说。

Matomo Ubuntu中文

在下一个屏幕中,为Matomo Web界面创建一个管理员用户。

matomo ubuntu nginx

创建管理员用户后,您需要添加一个网站来收集分析数据。

Matomo Analytics Ubuntu 18.04

然后,您需要将JavaScript跟踪代码添加到您的网站。

matomo安装

一旦完成。 单击下一步按钮,您的Matomo安装完成。 现在,您可以登录Matomo仪表板并查看访问者数据。

matomo仪表板

为中,高流量网站设置Cron职位

如果您的网站每天有数千个页面浏览,则有必要设置cron作业以自动存档Matomo报告。 使用以下命令创建Cron作业文件。

sudo nano /etc/cron.d/matomo-archive

然后将以下行添加到文件中。

MAILTO="[email protected]"
5 * * * * www-data /usr/bin/php /var/www/matomo/console core:archive --url=https://analytics.example.com > /dev/null

标准输出将发送到/ dev / null,标准错误将发送到您的电子邮件地址。 保存并关闭文件。 该Cron作业将在每小时5分钟后每小时运行一次。

如何设置电子邮件通知

如果用户不止一个,那么最好使Matomo能够发送电子邮件通知(例如密码重置电子邮件)。 有关如何设置电子邮件服务器的信息,请查看以下教程。 注意 我强烈建议在全新的干净操作系统上运行iRedMail邮件服务器。 在具有其他Web应用程序的OS上安装iRedMail可能会失败,并可能破坏现有应用程序。

  • 如何使用iRedMail在Ubuntu 18.04上轻松设置功能齐全的邮件服务器

如果您不想运行自己的电子邮件服务器,则可以设置SMTP中继。 请参阅以下教程。

  • 如何在Ubuntu 18.04服务器上设置Postfix SMTP中继

如何使用GeoIP设置准确的地理位置

默认情况下,Matomo根据访问者使用的语言来猜测其位置。 这是不准确的。 例如,许多非美国访客选择En-US作为其操作系统的默认语言,因此Matomo报告中将有更多“美国访客”。

为了获得更好的地理位置,请在Matomo中单击齿轮图标(管理),然后转到 System -> Geolocation。 然后将最新的Maxmind GeoIP数据库下载到您的服务器。

wget https://geolite.maxmind.com/download/geoip/database/GeoLite2-City.tar.gz

提取压缩包。

tar xvf GeoLite2-City.tar.gz

压缩包将被解压缩到这样的目录中 GeoLite2-City_20190226。 然后将GeoLite2-City.mmdb文件移动到 /var/www/matomo/misc/ 目录。

sudo mv GeoLite2-City_20190226/GeoLite2-City.mmdb /var/www/matomo/misc/

现在,重新加载Matomo地理位置设置页面。 选择第二个位置提供商:GeoIP 2(Php)

Matomo Geoip

单击保存按钮以保存您的设置。 在此页面的下部,您还可以输入下载URL,以便Matomo可以自动更新GeoIP数据库。

Matomo Analytics Maxmind Geoip Lite

其他要做的事情

  • 订阅Matomo changelog RSS提要,以在出现新版本时得到通知。
  • 检查Matomo安全提示。
  • 阅读Matomo性能调优技巧。

而已! 我希望本教程可以帮助您在具有Apache或Nginx的Ubuntu 18.04服务器上安装Matomo。 与往常一样,如果您发现这篇文章很有用,请订阅我们的免费新闻通讯以获取更多提示和技巧。 保重🙂

Sidebar