使用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期间提供的证书。
现在应该获得证书并自动安装。
步骤6:在Web浏览器中完成安装
去 https://analytics.example.com
启动基于Web的安装向导。 然后点击 Next
按钮。
它将检查您的系统是否满足PHP扩展之类的要求。 如果满足所有要求,则单击 Next
。
在下一步中,输入您先前创建的MariaDB用户名,密码和数据库名称。 您可以在其他字段中使用默认值。
单击“下一步”后,安装向导将自动在数据库中创建一些表。 请点击 Next
接着说。
在下一个屏幕中,为Matomo Web界面创建一个管理员用户。
创建管理员用户后,您需要添加一个网站来收集分析数据。
然后,您需要将JavaScript跟踪代码添加到您的网站。
一旦完成。 单击下一步按钮,您的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)
单击保存按钮以保存您的设置。 在此页面的下部,您还可以输入下载URL,以便Matomo可以自动更新GeoIP数据库。
其他要做的事情
- 订阅Matomo changelog RSS提要,以在出现新版本时得到通知。
- 检查Matomo安全提示。
- 阅读Matomo性能调优技巧。
而已! 我希望本教程可以帮助您在具有Apache或Nginx的Ubuntu 18.04服务器上安装Matomo。 与往常一样,如果您发现这篇文章很有用,请订阅我们的免费新闻通讯以获取更多提示和技巧。 保重🙂