本教程將向您展示如何安裝 Matomo 網絡分析 Ubuntu 20.04(以前稱為 Piwik)上的 Apache 或 Nginx Web 服務器。 Matomo 是開源的替代品 谷歌分析這是使用最廣泛的網絡分析軟件。

什麼是網絡分析?

網站使用網絡分析軟件來了解網站每天/每週/每月有多少訪問者,他們使用的網絡瀏覽器等等。這是幫助您的網站發展的重要軟件。 谷歌分析很棒,但網站訪問者數據存儲在谷歌的服務器上。 如果您不想與第三方共享您的網站訪問者數據,您可以運行自己的網絡分析軟件。它們是谷歌分析的許多自託管替代品,而 Matomo 是一個很好的替代品。

Matomo 特點

Matomo 的開源(GPL v3 + 許可)自託管版本可以查看以下報告:

  • 熱門關鍵字和搜索引擎、網站、社交媒體網站。
  • 主頁 URL、頁面標題、用戶國家、提供商、操作系統、瀏覽器市場份額、屏幕分辨率、桌面和移動設備。
  • 參與度(在網站上花費的時間、每次訪問的頁面數、重複訪問)。
  • 熱門事件、自定義變量、熱門進入/退出頁面、下載文件等。
  • 它分為四個主要的分析報告類別:訪問者、操作、引薦來源和目標/電子商務(超過 30 份報告)。
  • 統計電子郵件報告。
  • Web 服務器日誌分析。
  • 禁用 JavaScript 以跟踪訪問者。
  • GDPR 合規工具(例如 cookie 同意)
  • 安裝免費或高級插件以擴展和擴展 Matomo 的功能。
  • 易於使用的基於 Web 的更新程序。該程序也可以使用命令行進行更新。
  • 更多的。

有關功能的完整列表,請參閱 Matomo 功能頁面。特別是,我喜歡 Matomo 按頁面瀏覽量列出所有頁面的能力,每個頁面的跳出率和退出率,以及實時訪問者地圖。

Matomo 現場觀眾地圖

自託管 Matomo 的好處

  • 完全控制您的數據。數據僅存儲在服務器上,您可以選擇服務器所在的國家/地區。
  • 沒有數據限制。您可以根據需要保存盡可能多的數據。
  • 完全可定制和可擴展。
  • Firefox 已開始阻止跨站點跟踪 cookie,包括 Google Analytics。通過在您自己的域名下託管您的分析軟件,跟踪 cookie 將不會被阻止。

託管在雲中的 Matomo 具有其他功能,但您可以在具有相同功能的自託管實例上安裝高級插件。

在 Ubuntu 20.04 上安裝 MatomoWebAnalytics (Piwik) 的先決條件

您將需要您的域名和服務器來學習本教程。我在 NameCheap 中註冊了我的域名。這是為了以低廉的價格提供終身免費的whois隱私保護。 1 GRAM 的服務器足以運行 Matomo。這是我推薦的託管服務提供商。我都用過。

  • Vultr(起價 2.50 美元/月,需要信用卡)
  • DigitalOcean(每月 5 美元起,無需信用卡,可使用 Paypal)。

擁有服務器後,在服務器上安裝 Ubuntu 並按照以下步驟操作:

Matomo 是用 PHP 編寫的,使用 MySQL / MariaDB 數據庫。要遵循本教程,我們假設您已經在 Ubuntu 20.04 上設置了 LAMP 或 LEMP 堆棧。如果沒有,請查看以下教程之一。

  • 如何在 Ubuntu 20.04 服務器上安裝 LAMP 堆棧
  • 如何在 Ubuntu 20.04 服務器上安裝 LEMP 堆棧

設置好 LAMP 或 LEMP 堆棧後,請返回此處繼續閱讀。

第 1 步:將 Matomo 下載到 Ubuntu 20.04

通過 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 Web 文件將被提取到 /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 Web 服務器,請在內部創建一個虛擬主機配置文件 /etc/apache2/sites-available/ 目錄。

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

將以下文本放入文件中。交換 analytics.example.com 使用您自己的域名。 記得在 DNS Manager 中為您的域名設置 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 網絡服務器 matomo.conf 記錄 /etc/nginx/conf.d/ 目錄。

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

將以下文本放入文件中。交換 analytics.example.com 使用您自己的域名。 記得在 DNS Manager 中為您的域名設置 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;
    }
}

保存並關閉文件。 測試您的 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 用戶不需要重新加載。

您現在應該能夠訪問基於 Web 的 Matomo 安裝嚮導。 https://analytics.example.com但是,讓我們在輸入信息之前啟用 HTTPS。

第 5 步:啟用 HTTPS

您可以通過安裝 Let’s Encrypt 頒發的免費 TLS 證書來啟用 HTTPS,以在您訪問 Matomo Web 界面時加密 HTTP 流量。通過運行以下命令在 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 期間服務器提供的證書。

現在將自動獲取並安裝證書。

第 6 步:在 Web 瀏覽器中完成安裝

https://analytics.example.com 啟動基於 Web 的安裝嚮導。然後點擊 Next 按鈕。

在 ubuntu20.04LTS 上安裝 matomo

檢查您的系統是否滿足 PHP 擴展等要求。如果滿足所有要求,請單擊 Next..

matomo-ubuntu-20.04-php-extensions

下一步是輸入您之前創建的 MariaDB 用戶名、密碼和數據庫名稱。您可以對其他字段使用默認值。

matomo-mariadb-database-setup-ubuntu-20.04

[次へ]單擊時,安裝嚮導會自動在數據庫中創建一些表。點擊 Next 接下來我會說。

matomo-ubuntu-20.04-apache

在下一個屏幕上,為 Matomo Web 界面創建一個管理員用戶。

matomo-ubuntu-20.04-nginx

創建管理員用戶後,您需要添加一個網站來收集分析數據。

matomo-analytics-ubuntu-20.04

接下來,您需要將 JavaScript 跟踪代碼添加到您的網站。

matomo-安裝-ubuntu-20.04

當你完成時。[次へ]單擊按鈕完成 Matomo 安裝。您現在可以登錄到您的 Matomo 儀表板來查看您的訪問者數據。

matomo 儀表板

禁用 JavaScript 以跟踪用戶

在 Matomo Web 界面中,點擊右上角的齒輪圖標, 網站 -> 跟踪代碼您可以選擇禁用 JavaScript 並跟踪用戶。

matomo 跟踪啟用 JavaScript 的用戶

有一個新的跟踪代碼。您需要將現有的跟踪代碼替換為新的跟踪代碼。事實上,新的跟踪代碼只是在您現有的跟踪代碼中添加了以下行:

<noscript><p><img src="https://analytics.example.com/matomo.php?idsite=1&amp;rec=1" style="border:0;" alt="" /></p></noscript>

如果訪問者禁用或無法使用 JavaScript,訪問者的瀏覽器將下載圖像。

為中高流量網站設置 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 應用程序在您的操作系統上安裝 iRedMail 可能會失敗或損壞現有應用程序。

  • 如何使用 iRedMail 在 Ubuntu 20.04 上輕鬆設置全功能郵件服務器

如果您不想運行自己的電子郵件服務器,則可以改為設置 SMTP 中繼。請參閱下面的教程。

  • 如何在 Ubuntu 20.04 服務器上配置 Postfix SMTP 中繼

如何使用 GeoIP 設置準確的地理位置

默認情況下,Matomo 根據訪客所說的語言推斷訪客的位置。這是不准確的。例如,許多非美國訪問者選擇 En-US 作為其操作系統默認語言,因此 Matomo 報告顯示更多“美國訪問者”。為了更好地定位,您可以使用免費的 MaxMind GeoLite2 IP 數據庫。

首先,您需要使用 MaxMind 創建一個帳戶。 您將收到一封來自 Maxmind 的電子郵件。單擊電子郵件中的鏈接以設置密碼並登錄到您的 MaxMind 帳戶。下一個, My License Key 位於左側邊欄。

maxmind 許可證密鑰

點擊 生成新的許可證密鑰 按鈕。

maxmind 將生成一個新的許可證密鑰

為您的許可證密鑰命名,[No「」は「このキーはGeoIPの更新に使用されますか?」という意味です。 “次にクリック Confirm ボタン。ライセンスキーが表示されます。ライセンスキーは1回しか表示されないため、クリップボードにコピーしてください。

matomomaxmindジオロケーション

次に、Matomo Webインターフェースの歯車アイコン(管理者)をクリックし、に移動します。 System -> Geolocation次に、最新のMaxmindGeoIPデータベースをサーバーにダウンロードします。 your_license_keyを実際のライセンスキーに置き換えます。

wget -O GeoLite2-City.tar.gz 'https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-City&suffix=tar.gz&license_key=your_license_key'

圧縮されたパッケージを抽出します。

tar xvf GeoLite2-City.tar.gz

tarballは、次のような名前のディレクトリに解凍されます GeoLite2-City_20200814次に、GeoLite2-City.mmdbファイルをに移動します /var/www/matomo/misc/ 目次。

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

次に、Matomoジオロケーション設定ページをリロードします。 2番目のロケーションプロバイダーを選択します。 GeoIP 2 (Php)

matomo geoip

[保存]單擊按鈕以保存您的設置。在此頁面的下方,您還可以輸入下載 URL 以允許 Matomo 自動更新 GeoIP 數據庫。

  • MaxMind的下載地址是: https://download.maxmind.com/app/geoip_download? edition_id = GeoLite2-City & 後綴 = tar.gz & license_key =your_license_key
  • 該數據庫每週更新一次。

matomo-analytics-maxmind-geoip-lite-update

在 Cloudflare CDN 後面運行 Matomo

如果 Matomo 在 Cloudflare CDN 後面運行,則 Matomo 只知道 Cloudflare 服務器的 IP 地址。要在 Nginx 中查看訪問者的實際 IP 地址,請編輯 Nginx 主配置文件。

sudo nano /etc/nginx/nginx.conf

將以下指令添加到 http 部分。

set_real_ip_from 103.21.244.0/22;
set_real_ip_from 103.22.200.0/22;
set_real_ip_from 103.31.4.0/22;
set_real_ip_from 104.16.0.0/12;
set_real_ip_from 108.162.192.0/18;
set_real_ip_from 131.0.72.0/22;
set_real_ip_from 141.101.64.0/18;
set_real_ip_from 162.158.0.0/15;
set_real_ip_from 172.64.0.0/13;
set_real_ip_from 173.245.48.0/20;
set_real_ip_from 188.114.96.0/20;
set_real_ip_from 190.93.240.0/20;
set_real_ip_from 197.234.240.0/22;
set_real_ip_from 198.41.128.0/17;
set_real_ip_from 199.27.128.0/21;
set_real_ip_from 2400:cb00::/32;
set_real_ip_from 2606:4700::/32;
set_real_ip_from 2803:f800::/32;
set_real_ip_from 2405:b500::/32;
set_real_ip_from 2405:8100::/32;
set_real_ip_from 2c0f:f248::/32;
set_real_ip_from 2a06:98c0::/29;

# use any of the following two
real_ip_header CF-Connecting-IP;
#real_ip_header X-Forwarded-For;

set_real_ip_from 定義了一個已知可發送正確備用地址的可信地址(在本例中為 Cloudflare IP 地址)。保存並關閉文件。然後重新加載 Nginx 以使更改生效。

sudo systemctl reload nginx

您可以在 Matomo 上查看訪問者的 IP 地址 儀表板 -> 遊客 -> 訪問日誌..

您還可以查看 Cloudflare 當前的 IP 範圍。

其他活動

  • 訂閱 Matomo Changelog RSS 提要,以便在新版本發佈時收到通知。
  • 請參閱 Matomo 的安全提示。
  • 閱讀 Matomo 的性能調優技巧。

而已!我們希望本教程能幫助您在 Ubuntu 20.04 服務器上安裝 Matomo Apache 或 Nginx。與往常一樣,如果您覺得本文有用,請訂閱我們的免費新聞通訊以獲取更多提示和技巧。照顧好自己?