Установка Matomo на Fedora 29 с Nginx и SSL

Кому это руководство
- Системным администраторам и инженерам DevOps, настраивающим автономную аналитическую платформу.
- Веб‑разработчикам, которым нужно альтернатива Google Analytics для приватных размещений.
Краткое определение: Matomo — свободный веб‑аналитический пакет на PHP/MySQL, собирающий и визуализирующий посещения сайтов.
Основные шаги руководства
- Подготовка системы и обновление пакетов.
- Установка MariaDB и создание базы данных.
- Установка PHP и расширений.
- Получение сертификата Let’s Encrypt с помощью acme.sh (опционально).
- Установка и конфигурация Nginx для Matomo.
- Загрузка Matomo, настройка прав и запуск веб‑мастера установки.
Требования к системе
- Операционная система: Fedora 29.
- Непривилегированный пользователь с sudo.
- Веб‑сервер: Nginx, Apache или IIS. Это руководство использует Nginx.
- PHP 5.5.9+ (рекомендуется PHP 7+) с расширениями pdo, pdo_mysql или mysqli, gd, xml, curl, mbstring.
- MySQL 5.5+/MariaDB 5.5+ (рекомендуется MySQL 5.7+/MariaDB 10+).
Важно: используйте актуальные версии PHP и СУБД для безопасности и производительности.
Подготовка системы
Проверьте версию Fedora:
cat /etc/fedora-release
# Fedora release 29 (Twenty Nine)Установите часовой пояс:
timedatectl list-timezones
sudo timedatectl set-timezone 'Region/City'Обновите пакеты:
sudo dnf check-update; sudo dnf update -yУстановите вспомогательные утилиты:
sudo dnf install -y curl wget vim git unzip socatШаг 1 — Установка MariaDB и создание базы данных
Установите MariaDB:
sudo dnf install -y mariadb-serverПроверьте версию:
mysql --version
# mysql Ver 15.1 Distrib 10.3.11-MariaDB, for Linux (x86_64) using readline 5.1Запустите и включите сервис:
sudo systemctl start mariadb.service
sudo systemctl enable mariadb.serviceУсилите безопасность и задайте пароль root:
sudo mysql_secure_installationОтветьте на вопросы (пример):
- Would you like to setup VALIDATE PASSWORD plugin? N
- New password: your_secure_password
- Re-enter new password: your_secure_password
- Remove anonymous users? Y
- Disallow root login remotely? Y
- Remove test database and access to it? Y
- Reload privilege tables now? Y
Подключитесь к MariaDB и создайте базу и пользователя для Matomo:
sudo mysql -u root -p
MariaDB> CREATE DATABASE dbname;
MariaDB> GRANT ALL ON dbname.* TO 'username' IDENTIFIED BY 'password';
MariaDB> FLUSH PRIVILEGES;
MariaDB> exitЗамените dbname, username и password на свои значения.
Шаг 2 — Установка PHP и расширений
sudo dnf install -y php php-cli php-fpm php-common php-curl php-gd php-xml php-mbstring php-mysqlnd php-jsonПроверьте версию PHP:
php --version
# PHP 7.2.14 (cli) (built: Jan 8 2019 09:59:17) ( NTS )Запустите и включите PHP‑FPM:
sudo systemctl start php-fpm.service
sudo systemctl enable php-fpm.serviceВажно: убедитесь, что php.ini и pool‑конфигурация соответствуют потребностям Matomo (memory_limit, max_execution_time, upload_max_filesize).
Шаг 3 — Получение сертификата Let’s Encrypt через acme.sh (опционально)
Защищать сайт с HTTPS рекомендуется. Для получения сертификата используем acme.sh (написан на POSIX shell, без внешних зависимостей).
Установка 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:
# 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После успешной выдачи сертификаты окажутся в:
- /etc/letsencrypt/example.com
- /etc/letsencrypt/example.com_ecc
Примечание: если сервер уже использует Nginx, остановите Nginx на время выдачи (acme.sh в режиме –standalone использует порт 80). Либо используйте DNS‑валидацию.
Шаг 4 — Установка и настройка Nginx для Matomo
Установите Nginx:
sudo dnf install -y nginxПроверьте версию:
sudo nginx -v
# nginx version: nginx/1.14.1Запустите и включите сервис:
sudo systemctl start nginx.service
sudo systemctl enable nginx.serviceСоздайте файл конфигурации:
sudo vim /etc/nginx/conf.d/matomo.confЗаполните его следующим блоком (пример):
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 unix:/run/php-fpm/www.sock;
}
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 unix:/run/php-fpm/www.sock;
}
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‑окружения дополнительно настройте HSTS, современные шифры, OCSP stapling и редирект с HTTP на HTTPS.
Проверьте синтаксис и перезагрузите 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Установите права на каталог:
sudo chown -R nginx:nginx /var/www/matomoНастройте пул PHP‑FPM для использования пользователя nginx: откройте /etc/php-fpm.d/www.conf и измените значения user и group на nginx. Затем перезапустите php-fpm:
sudo vim /etc/php-fpm.d/www.conf
# user = nginx
# group = nginx
sudo systemctl restart php-fpm.serviceШаг 6 — Завершение установки через веб‑мастер
Откройте https://example.com в браузере и следуйте шагам установки.

На странице проверки системы убедитесь, что все зависимости отмечены как “OK”. Если что‑то отсутствует — установите или настройте соответствующие модули PHP.

Заполните параметры базы данных и продолжите.

Если таблицы успешно созданы, увидите подтверждение.

Создайте суперпользователя и добавьте первый сайт для отслеживания.


Скопируйте JavaScript‑код отслеживания на страницы вашего сайта.

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

Поздравляем — Matomo установлена и готова к использованию.
Рекомендации по безопасности
- Ограничьте доступ к административной панели по IP, если возможно.
- Используйте только HTTPS и включите HSTS.
- Ограничьте права на файлы: владельцем должен быть процесс веб‑сервера, а запись — только там, где требуется (tmp, config).
- Регулярно обновляйте Matomo и плагины.
- Отключите или удалите неиспользуемые плагины.
Отладка и распространённые ошибки
- 500 Internal Server Error: проверьте логи Nginx (/var/log/nginx/error.log) и логи PHP‑FPM (/var/log/php-fpm/www-error.log).
- Проблемы с подключением к базе: убедитесь в правильности хоста, порта и привилегий пользователя.
- Ошибки прав файлов: проверьте владельца и права /var/www/matomo и вложенных каталогов.
- Сертификат не выдан: проверьте, не занят ли порт 80, и корректность DNS.
Что делать, если Matomo медленно работает
- Проверьте нагрузку CPU и I/O.
- Включите кэширование (Redis / APCu) для уменьшения нагрузки PHP.
- Оптимизируйте базу данных и настройте периодические задачи архивации.
Миграция с Google Analytics или других систем
- Matomo позволяет импортировать данные через API и плагины; полный перенос исторических данных обычно требует кастомных скриптов.
- Для легкой замены начните параллельный сбор данных (тег Matomo и GA одновременно) и постепенно переключайтесь.
Чеклист перед вводом в продакшен
- Обновлены пакеты ОС и PHP.
- Настроены и защищены сертификаты SSL.
- Создана отдельная база и пользователь для Matomo.
- Проверены права на файлы и директории.
- Настроен регулярный бэкап базы данных.
- Настроено логирование и ротация логов.
Роль‑ориентированные задачи
- Системный администратор: установка OS, настройка бэкапов, мониторинга и обновлений.
- DevOps: CI/CD для конфигурации Nginx, автоматическое обновление сертификатов acme.sh.
- Веб‑разработчик: вставка кода отслеживания, тесты событий и целей.
- Аналитик: проверка корректности данных и настройка отчётов.
Краткая методология установки (мини‑SOP)
- Подготовка ОС и установка зависимостей.
- Настройка СУБД и учётных записей.
- Установка PHP и проверка расширений.
- Настройка веб‑сервера и получение SSL.
- Установка Matomo, настройка прав, запуск веб‑мастера.
- Тестирование отслеживания и оптимизация.
Факты и рекомендации
- Рекомендуемая версия PHP: 7.2+ или 7.4+, для производительности и безопасности.
- База данных: MariaDB/MySQL с регулярной оптимизацией и бэкапами.
- SSL: используйте ECDSA сертификат для лучшей производительности на современных клиентах.
Критерии приёмки
- Доступность сайта по HTTPS и корректный сертификат.
- Веб‑мастер Matomo завершил все шаги и отображает панель администратора.
- Запись первых посещений на тестовом сайте.
- Автоматическое обновление сертификатов acme.sh настроено и протестировано.
Ссылки и ресурсы
- https://matomo.org/
- https://github.com/matomo-org/matomo
- https://github.com/matomo-org/matomo-nginx
- https://github.com/Neilpang/acme.sh
Краткое резюме
Установка Matomo на Fedora 29 с Nginx включает подготовку системы, установку MariaDB и PHP, получение сертификата Let’s Encrypt (опционально) и тщательную настройку прав и конфигураций. После установки через веб‑мастер проверьте отслеживание и безопасность.
Важно: тестируйте в staging перед вводом в продакшен и обеспечьте регулярное резервное копирование данных.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента