将Matomo Analytics安装在自己的服务器上,以跟踪网站
Matomo是什么?
Matomo是领先的免费/自由开源分析平台。
Matomo是一款功能全面的PHP MySQL软件程序,您可以下载并安装在自己的网络服务器上。在五分钟的安装过程结束后,您将获得一段JavaScript代码。只需将此标签复制并粘贴到要跟踪和实时访问分析报告的网站上即可。
Matomo旨在成为Google Analytics的免费软件替代品,并已在超过1,400,000个网站上使用。隐私保护已内置!
以下是从GitHub摘录的。简单来说,这是一个采用GPLv3许可下的开源分析软件或平台。在功能方面也相当强大,并且提供针对不同语言和框架的软件开发工具包(SDK)。作者只接触了Web(ReactJS),但它似乎也支持iOS和Android。
对于希望拥有自己的分析数据或在无法使用Google Analytics的环境中的人来说,这是一个理想选择。
开篇
因为步骤相当复杂,所以就算做了多少次也总是有点忘记,经常处于类似这样的情况:“这里是对的吧?”为了避免这种情况,我将写下备忘录作为指南。
执行环境为Debian11 + mariadb10 + nginx1.18。
为了方便起见,我直接以 root 身份执行命令,如果您不是 root,请适当在命令之前加上 sudo。
准备工作
在安装之前,首先需要安装MySQL或者MariaDB,以及Nginx或者Apache。由于其他人已经写了很多相关文章,所以在这里我们就不再详述。
我使用Debian11 + mariadb10 + nginx1.18 + matomo4.15.1。
安装
首先,打开官方网页,获取Matomo的下载链接,获取到链接后,使用wget进行下载。
wget https://builds.matomo.org/matomo.zip
# wget ない人はまず入れてから再度上のコマンドを実行しましょう
apt install wget
我会输入必要的请求
apt install php php-curl php-gd php-cli php-mysql php-xml php-mbstring
一旦输入后,我会查看 PHP 的版本。
php --version
由于作者使用的是7.4.33版本,所以安装了php7.4-fpm。
apt install php7.4-fpm
现在前期准备工作已经完成了。
请先解压下载的 matomo.zip 文件。
# unzip 入ってないので一旦入れます
apt install unzip
# 解凍
unzip matomo.zip
解凍后,应该能看到”安装 Matomo.html”文件和 matomo 文件夹。
不需要之前下载的’matomo.zip’和’How to install Matomo.html’文件,将其删除。
rm 'How to install Matomo.html' matomo.zip
然后我们要更改nginx的配置文件。
vim /etc/nginx/sites-enabled/default
因为我习惯在 sites-enabled 文件夹下管理网站,其实直接在 /etc/nginx/nginx.conf 文件中管理也可以,所以可以在任意位置进行设置。
我已将这些内容添加进去。虽然设置了诸如安全等的配置,变得很长,但如果使用相同版本的Matomo,我认为直接复制粘贴应该也可以使用。(请将server_name和ssl配置更改为您自己的设置)
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name <your_server_name>;
access_log /var/log/nginx/matomo.access.log;
error_log /var/log/nginx/matomo.error.log;
ssl_certificate </path/to/ssl_certificate>;
ssl_certificate_key </path/to/ssl_certificate_key>;
ssl_protocols TLSv1.3;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;
add_header Referrer-Policy origin always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-XSS-Protection "1; mode=block" always;
root /var/www/matomo;
index index.php;
location ~ ^/(index|matomo|piwik|js/index|plugins/HeatmapSessionRecording/configs)\.php$ {
include snippets/fastcgi-php.conf;
fastcgi_param HTTP_PROXY "";
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}
location ~* ^.+\.php$ {
deny all;
return 403;
}
location ~ ^/(config|conf|tmp|core|lang) {
deny all;
return 403;
}
location ~ /\.ht {
deny all;
return 403;
}
location ~ js/container_.*_preview\.js$ {
expires off;
add_header Cache-Control 'private, no-cache, no-store';
}
location ~ \.(gif|ico|jpg|png|svg|js|css|htm|html|mp3|mp4|wav|ogg|avi|ttf|eot|woff|woff2)$ {
allow all;
expires 1h;
add_header Pragma public;
add_header Cache-Control "public";
}
location ~ ^/(libs|vendor|plugins|misc|node_modules) {
deny all;
return 403;
}
}
完成后保存,并确认是否有语法错误。
nginx -t
# root じゃない人は
sudo nginx -t
执行以下命令后,您将能够通过网络访问matomo。接下来的设置几乎都可以在网页上用鼠标完成,但是在最初设置完成之前,任何人都可以访问,所以建议您将白名单等内容先添加到nginx上,在所有设置完成后再解除白名单。不过,由于笔者比较懒,所以这里不会详细讲解。
如果没有问题的话,可以将解压出来的matono文件夹移动到/var/www/,然后重新启动nginx。
mv matomo /var/www && service nginx restart
# service cmdない人は
systemctl restart nginx
输入您先前写的到浏览器中,应该就可以访问 Matomo 网页了。如果无法访问,您可以检查 DNS 设置是否正确。
所以,只需要按照指示进行操作,作为作者,我看到了类似这样的页面。
因此,
chown -R www-data:www-data /var/www/matomo
进行执行。
点击后将进入系统检查,但很可能不会全部绿色。如果出现错误,请按照指示修复。
可以忽略nginx和php-fpm的警告而继续进行。因为在最初的nginx.conf文件中已经进行了安全设置。
当你完成全部内容后,点击进入下一步。
在这个页面上进行数据库设置,但是我还没有在MySQL中创建Matomo专用用户,所以我先回到终端进行操作。
# mysql へログイン
mysql -u root -p
# 入ったらまずなuserを作る、userとpasswordは自分のものに変えてください
> CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
# 同じ名前の db を作ります
> CREATE DATABASE newuser;
# 先作ったユーザーに新たに作った db の権限を付与します
> GRANT ALL PRIVILEGES ON newuser.* TO 'newuser'@'localhost';
# リロード
> FLUSH PRIVILEGES;
# 退出
> exit;
如果一切正常,那么应该自动创建表格。当表格创建成功后,请继续点击下一步。
请以恰当的方式创建一个 Super User,因为我懒得截图,就不提供截图了。
在创建Super User之后,您将被要求设置要跟踪的网页。请正确地进行设置。如果您不愿设置,可以点击下一步跳过,之后您可以随时再添加。
接下来是关于嵌入JS代码的指示,但同样可以跳过。稍后会添加进去。
恭喜恭喜!?
安装完成。如果在nginx上设置了白名单,现在可以解除白名单。
所有前来访问的人都必须先进行super user的登录,而且机密文件已经通过nginx层面阻止了所有访问,所以可以放心地进行公开。如果还感到不安,可以将白名单保持在开启状态。也可以添加其他动态安全措施。