Установка Matomo на CentOS 7 с Nginx и Let's Encrypt

Matomo — это свободная и open‑source система веб‑аналитики, написанная на PHP и работающая с MySQL/MariaDB. Она служит альтернативой Google Analytics и включает функции: A/B тестирование, тепловые карты, воронки, API отслеживания и отчётов, интеграции с рекламными сетями и учёт затрат на клик (CPC). Код доступен на GitHub.
В этом руководстве рассматривается установка Matomo на CentOS 7 с Nginx как веб‑сервером, MariaDB в роли СУБД, PHP‑FPM и получением TLS‑сертификатов от Let’s Encrypt через acme.sh.
Кому полезно
- Системным администраторам и DevOps, которым нужен приватный аналитический стек.
- Веб‑разработчикам, желающим разместить Matomo на собственном сервере.
Быстрый план действий
- Обновить систему и установить базовые утилиты. 2. Установить MariaDB и создать базу данных/пользователя. 3. Установить PHP 7.x и расширения. 4. Получить сертификат Let’s Encrypt (acme.sh). 5. Установить и настроить Nginx. 6. Скачать Matomo и завершить веб‑установку.
Требования
- Сервер под управлением CentOS 7.
- Непривилегированный пользователь с sudo.
- Веб‑сервер: Nginx (или Apache/IIS).
- PHP 5.5.9+ (рекомендуется PHP 7+), с расширениями: pdo, pdo_mysql или mysqli, gd, xml, curl, mbstring.
- MySQL 5.5+ или MariaDB эквивалент (рекомендуется MariaDB/MySQL 5.7+).
Важные термины
- PHP‑FPM: менеджер процессов PHP для работы с Nginx.
- acme.sh: клиент для получения сертификатов Let’s Encrypt.
Предварительные шаги
Проверка версии CentOS:
cat /etc/centos-release Настройка часового пояса (замените ‘Регион/Город’ на нужный вам):
timedatectl list-timezones
sudo timedatectl set-timezone 'Region/City'Обновление системы:
sudo yum update -yУстановка утилит:
sudo yum install -y curl wget vim git unzip socat epel-releaseШаг 1 — Установка MariaDB и создание базы данных для Matomo
Matomo поддерживает как MySQL, так и MariaDB. В примере используем MariaDB.
Создайте YUM‑репозиторий MariaDB 10.2 для CentOS:
sudo vim /etc/yum.repos.d/MariaDB.repoВставьте в файл:
# MariaDB 10.2 CentOS repository list - created 2017-12-11 23:19 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name=MariaDB
baseurl=https://yum.mariadb.org/10.2/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1Установка MariaDB:
sudo yum install -y MariaDB-server MariaDB-clientПроверка версии:
mysql --version
# mysql Ver 15.1 Distrib 10.2.21-MariaDB, for Linux (x86_64) using readline 5.1Запуск и автозапуск службы:
sudo systemctl start mariadb.service
sudo systemctl enable mariadb.serviceПовысим безопасность и зададим пароль root:
sudo mysql_secure_installationПример ответов для сценария установки (следуйте подсказкам):
````Enter current password for root (enter for none): Press Enter
Set root password? [Y/n] Y
New password: your_secure_password
Re-enter new password: your_secure_password
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y````Подключитесь в shell MariaDB:
sudo mysql -u root -p
# Введите парольСоздайте базу данных и пользователя для Matomo (замените dbname/username/password):
MariaDB [(none)]> CREATE DATABASE dbname;
MariaDB [(none)]> GRANT ALL ON dbname.* TO 'username' IDENTIFIED BY 'password';
MariaDB [(none)]> FLUSH PRIVILEGES;Выйдите:
MariaDB [(none)]> exitШаг 2 — Установка PHP и необходимых расширений
Подключите репозиторий Webtatic и установите PHP 7.2 (пример):
sudo rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpmУстановка PHP и расширений:
sudo yum install -y php72w php72w-cli php72w-fpm php72w-common php72w-curl php72w-gd php72w-xml php72w-mbstring php72w-mysqlnd php72w-jsonПроверка модулей PHP:
php -m
ctype
curl
exif
fileinfo
. . .
. . .Проверка версии PHP:
php --version
# PHP 7.2.14 (cli) (built: Jan 8 2019 09:59:17) ( NTS )
# Copyright (c) 1997-2018 The PHP Group
# Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend TechnologiesЗапустите и включите PHP‑FPM:
sudo systemctl start php-fpm.service
sudo systemctl enable php-fpm.serviceШаг 3 — Получение сертификата Let’s Encrypt через acme.sh (опционально, рекомендовано)
HTTPS не обязателен, но настоятельно рекомендован. Acme.sh — лёгкий POSIX‑совместимый клиент для Let’s Encrypt.
Установка acme.sh:
sudo mkdir /etc/letsencrypt
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
sudo ./acme.sh --install --home /etc/letsencrypt --accountemail [email protected]
cd ~Проверка версии:
/etc/letsencrypt/acme.sh --version
# v2.8.0Выпуск RSA и ECDSA сертификатов (замените example.com на ваш домен):
# RSA 2048
sudo /etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d example.com --keylength 2048
# ECDSA
sudo /etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d example.com --keylength ec-256Сертификаты будут в:
- RSA: /etc/letsencrypt/example.com
- ECDSA: /etc/letsencrypt/example.com_ecc
Шаг 4 — Установка Nginx и базовая конфигурация для Matomo
Установка Nginx:
sudo yum install -y nginxПроверка версии и запуск:
sudo nginx -v
sudo systemctl start nginx.service
sudo systemctl enable nginx.serviceСоздайте файл конфигурации:
sudo vim /etc/nginx/conf.d/matomo.conf Вставьте следующий блок (замените example.com и пути к сертификатам на ваши):
`server {
listen [::]:443 ssl http2;
listen 443 ssl http2;
listen [::]:80;
listen 80;
server_name example.com;
root /var/www/matomo/;
index index.php;
ssl_certificate /etc/letsencrypt/example.com/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/example.com/example.com.key;
ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/example.com_ecc/example.com.key;
location ~ ^/(index|matomo|piwik|js/index).php {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
try_files $fastcgi_script_name =404;
set $path_info $fastcgi_path_info;
fastcgi_param PATH_INFO $path_info;
fastcgi_index index.php;
include fastcgi.conf;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param HTTP_PROXY "";
fastcgi_pass 127.0.0.1:9000;
}
location = /plugins/HeatmapSessionRecording/configs.php {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
try_files $fastcgi_script_name =404;
set $path_info $fastcgi_path_info;
fastcgi_param PATH_INFO $path_info;
fastcgi_index index.php;
include fastcgi.conf;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param HTTP_PROXY "";
fastcgi_pass 127.0.0.1:9000;
}
location ~* ^.+\.php$ {
deny all;
return 403;
}
location / {
try_files $uri $uri/ =404;
}
location ~ /(config|tmp|core|lang) {
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;
}
location ~ /(libs|vendor|plugins|misc/user) {
deny all;
return 403;
}
}`Примечание: для production‑настроек и дополнительных рекомендаций посетите репозиторий: https://github.com/matomo-org/matomo-nginx.
Проверка конфигурации и перезагрузка:
sudo nginx -t
sudo systemctl reload nginx.serviceШаг 5 — Установка Matomo
Создайте каталог и загрузите архив Matomo:
sudo mkdir -p /var/www/
cd /var/www/
sudo wget https://builds.matomo.org/matomo.zip && sudo unzip matomo.zip
sudo rm matomo.zipУстановите владельца на nginx (если используете nginx как пользователя процесса):
sudo chown -R nginx:nginx /var/www/matomoОткройте конфигурацию PHP‑FPM и установите пользователя/группу nginx:
sudo vim /etc/php-fpm.d/www.conf
# user = nginx
# group = nginxПерезапустите PHP‑FPM:
sudo systemctl restart php-fpm.serviceШаг 6 — Завершение установки через веб‑мастер
Откройте браузер и перейдите на https://example.com (замените на ваш домен). Следуйте мастеру установки Matomo.

Вы увидите страницу проверки системы. Устраните предупреждения до зелёного статуса и нажмите “Next”:

Ввод параметров базы данных:

Если таблицы созданы успешно, увидите сообщение об успехе:

Создайте суперпользователя и продолжите:

Добавьте первый сайт для отслеживания:

Скопируйте JavaScript код отслеживания на ваш сайт:

После завершения вы увидите экран успешной установки:

Поздравляем — Matomo установлено.
Критерии приёмки
- Веб‑интерфейс Matomo доступен по вашему домену через HTTPS.
- База данных и таблицы созданы; веб‑мастер успешно подключён.
- Отслеживание работает: данные о посещениях появляются в интерфейсе в течение 24 часов.
- Службы nginx и php-fpm запущены и настроены на автозапуск.
Рекомендации по безопасности и жёсткая настройка
- Отключите доступ к папкам config, tmp, core и другим конфиденциальным через Nginx (уже включено в конфиг выше).
- Используйте отдельного пользователя СУБД с минимальными правами и уникальный сложный пароль.
- Регулярно обновляйте Matomo и все пакеты ОС.
- Ограничьте доступ к phpMyAdmin/административным интерфейсам по IP или VPN.
- Настройте бэкапы базы данных и каталога /var/www/matomo.
- Включите HTTP Strict Transport Security (HSTS) и современные наборы шифров в nginx для TLS.
Пример заголовка HSTS в конфигурации nginx:
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;Роли и контрольные списки
Для системного администратора:
- Проверить обновления системы и установить безопасные пакеты.
- Настроить SELinux/iptables/Firewalld при необходимости.
- Настроить ротацию логов и мониторинг.
Для DevOps:
- Автоматизировать развёртывание через Ansible/Chef/Terraform.
- Настроить CI для обновления Matomo и тестирования конфигураций.
Для специалиста по безопасности:
- Провести аудит директорий Matomo и прав доступа.
- Проверить конфигурацию TLS и применить рекомендуемые параметры.
Диагностика и распространённые проблемы
- “502 Bad Gateway” после настройки Nginx: проверьте, запущен ли php‑fpm и совпадает ли fastcgi_pass с адресом/портом.
- Ошибки доступа к файлам: проверьте права владельца каталога /var/www/matomo и контекст SELinux (если включён).
- Сертификат не выдан acme.sh: убедитесь, что порт 80 свободен для валидации standalone или используйте DNS‑верификацию.
Советы по миграции и совместимости
- При переходе с Google Analytics на Matomo: планируйте переход отслеживания и настройте параллельный сбор данных для сравнения.
- При обновлении Matomo следуйте официальным заметкам о релизе и делайте бэкап перед обновлением.
- Если используете старые версии PHP, обновите до поддерживаемой ветки (PHP 7.4+ рекомендуется).
Быстрая методология развёртывания (мини‑план)
- Подготовка ОС: обновления, базовые пакеты.
- Установка СУБД и создание базы данных.
- PHP + PHP‑FPM + необходимые расширения.
- Nginx и TLS (acme.sh).
- Размещение файлов Matomo, права и тесты.
- Завершение через веб‑мастер, проверка отслеживания и настройка мониторинга.
Ключевые числа и ограничения
- Рекомендуемая PHP‑версия: 7.2–8.x.
- Рекомендуемая MariaDB/MySQL: 5.7+ или MariaDB 10.x.
- Для больших нагрузок: выделите отдельный сервер для базы данных и оптимизируйте конфигурации MySQL/MariaDB.
Краткий глоссарий (1 строка каждый)
- Matomo: self‑hosted система веб‑аналитики на PHP.
- PHP‑FPM: FastCGI Process Manager для PHP.
- acme.sh: клиент для Let’s Encrypt.
- MariaDB: форк MySQL — СУБД.
Ссылки
Краткое резюме
- Matomo легко развернуть на CentOS 7 с Nginx и PHP‑FPM.
- Обязательно настройте безопасность: HTTPS, права файлов, бэкапы и обновления.
- Используйте приведённые чек‑листы и критерии приёмки для контроля качества развёртывания.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента