Блог Синявского
  • Разделы
  • Метки
  • Все статьи

Устанавливаем PIWIK

1

Устанавливаем PIWIK (ubuntu, lighttpd, php-fpm)

PIWIK система аналитики посещаемости, бесплатный аналог Google Analytics или Yandex Метрика. Это веб приложение на php, устанавливаем локальную систему аналитики на операционную систему Ubuntu, используем веб-сервер lighttpd и php7.0-fpm. Так же аналитика для хранения данных использует базу данных MySQL (MariaDb)

[flickr:id=35821869650]

Устанваливаем веб-сервер lighttpd, сервер баз данных mariadb, менеджер процессов php-fpm (Fastcgi Process Manager) и необходимые пакеты для работы piwik:

$ sudo apt-get install lighttpd mariadb-server php-fpm php7.0-mbstring php7.0-mysql php7.0-mysqli php7.0-gd php7.0-xml php7.0-dom unzip

ВАЖНО! php-fpm по умолчнию работает через unix-socket /run/php/php7.0-fpm.sock эта настройка меняется в файле /etc/php/7.0/fpm/pool.d/www.conf

Настраиваем php

$ sudo nano /etc/php/7.0/fpm/php.ini
cgi.fix_pathinfo=0

Настраиваем mariadb

$ mysql -uusername -p

где username имя пользователя при установке mariadb

CREATE DATABASE piwikdb CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE USER piwikadmin@localhost IDENTIFIED BY 'piwikpassword';
GRANT ALL PRIVILEGES ON piwikdb.* TO piwikadmin@localhost;
FLUSH PRIVILEGES;
exit

где название базы данных piwikdb, имя пользователя piwikadmin, пароль piwikpassword

Переходим в рабочую директорию веб-сервера

$ cd /var/www/

Скачиваем файлы piwik в директорию /var/www/ (17Mb) и распаковываем файлы. При распаковке создастся каталог piwik, который будет рабочим каталогом piwik.

$ cd /var/www/
$ wget http://builds.piwik.org/latest.zip
$ unzip latest.zip

Чистим ненужное

$ rm -f /var/www/How\ to\ install\ Piwik.html /var/www/latest.zip

Устанавливаем правильные права

$ sudo chown -R www-data:www-data /var/www/piwik
$ sudo chmod -R 0755 /var/www/piwik

Создаем файл для тестирования настройки php-fpm:

$ cd /var/www/piwik
nano info.php
<?php
phpinfo();
?>

Настраиваем lighttpd, включаем необходимые модули.

$ sudo nano /etc/lighttpd/lighttpd.conf
server.modules = (
        "mod_access",
        "mod_alias",
        "mod_compress",
        "mod_redirect",
        "mod_rewrite",
        "mod_accesslog",
        "mod_fastcgi",
        "mod_extforward"
)

Названия говорят сами за себя, особенно важны для наших задач mod_fastcgi и mod_extforward. Первый необходим для работы по протоколу fastcgi с php-fpm, а второй нужен для того. чтобы читать заголовки X-Forwarded-For or X-Real-IP из запросов, чтобы отличать пользователей в аналитике.

Создаем конфигурацию "виртуального" хоста

$ nano /etc/lighttpd/conf-available/piwik.conf
$SERVER["socket"] == ":80"{
    extforward.forwarder = ( "all" => "trust")
    accesslog.filename = "/var/log/lighttpd/piwik.log"
    server.document-root = "/var/www/piwik"

    fastcgi.server += ( ".php" =>
        ((
                "socket" => "/run/php/php7.0-fpm.sock",
                "max-procs" => 2,
                "broken-scriptfilename" => "enable"
        ))
    )
}

Переходим в каталог conf-enabled и создаем символическую ссылку

$ cd /etc/lighttpd/conf-enabled
$ ln -s ../conf-available/piwik.conf

Перезагружаем веб-сервер, тестируем настройку php и запускаем скрипт установки piwik.

service lighttpd restart
service php7.0-fpm restart

Тестируем через адресную строку браузера http://192.168.0.2/info.php и запускаем скрипт установки http://192.168.0.2/index.php

Ура! piwik настроен.

Интегрируем с внутрикорпоративными сайтами

Для этого можно в piwik сгенерировать js скрипт для добавления на сайт или прописать путь к логам. Я выбрал для себя js, но подгружаю его не с сервера а с текущего проекта и отправляю данные на текущий проект, поскольку многие проекты находятся под ssl сертификатом. Для этого на этих серверах я создал локейшен piwik и все запросы на него проксировал на сервер с установленным piwik. Рассмотрим на примере:

Типичный для piwik код отслеживания

<!-- Piwik -->
<script type="text/javascript">
  var _paq = _paq || [];
  // tracker methods like "setCustomDimension" should be called before "trackPageView"
  _paq.push(['trackPageView']);
  _paq.push(['enableLinkTracking']);
  (function() {
    var u="/piwik/"; // <------------------------ Поменять куда мы отправляем данные http://hostname/piwik/piwik.php
    _paq.push(['setTrackerUrl', u+'piwik.php']);
    _paq.push(['setSiteId', '1']);
    var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
    g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s);
  })();
</script>
<!-- End Piwik Code -->

Типичная настройка nginx

server {
        listen   192.168.0.1:80;
        server_name my_server_name;

        rewrite_log on;
        error_log /var/log/nginx/rewrite.log notice;

        location  / {
                ...
        }

        location /piwik/ {
                # Заголовки обязательны для опредения IP адреса
                proxy_set_header        Host            $host;
                proxy_set_header        X-Real-IP       $remote_addr;
                proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_pass http://piwik_hostname/;
        }
}

Дополнительные материалы

  1. https://itc-life.ru/ustanovka-nginx-php7-fpm/
  2. https://hostpresto.com/community/tutorials/how-to-install-lighttpd-with-php-fpm-on-centos-7/
  3. https://piwik.org/docs/installation/

Спасибо за внимание!



  • ← сюда
  • туда →

comments powered by Disqus

Опубликовано

25.01.2017

Обновление

05.05.2022

Категории

ubuntu

Тэги

  • lighttpd 7
  • php-fpm 2
  • piwik 1
  • ubuntu 36

Всегда на связи

  • Блог Синявского - Ничего не переносить на завтра, это тоже проблема с прокастинацией?
  • © Алексей Синявский, по лицензии CC BY-SA если не указано иное.
  • С использованием Pelican. Тема: Elegant от Talha Mansoor