Устанавливаем 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/;
}
}
Дополнительные материалы
- https://itc-life.ru/ustanovka-nginx-php7-fpm/
- https://hostpresto.com/community/tutorials/how-to-install-lighttpd-with-php-fpm-on-centos-7/
- https://piwik.org/docs/installation/
Спасибо за внимание!