Piwik配置 - 网站统计替代方案(已更名为matomo)
環境: Debian 7
安裝必要套件(PHP運行環境)-略
Piwik下載:http://builds.piwik.org/latest.zip
瀏覽器連入 http://logs.sec.ht/ 開始進行 Web 介面的安裝程序, 過程重點摘錄如下: ↓ 依 mysql 資料庫設置填入相關資料, database server 要由 127.0.0.1 改成 localhost
↓ 設置 Piwik 管理員帳號密碼, 稍後必須使用這組帳密登入 Piwik Web 管理介面
↓ 設置第一組 Web 站台資訊, 若有多個站台需要進行訪客分析, 可在登入 Piwik Web 管理介面後再行增添
讓 Piwik 使用 GeoIP 資料庫
cd /var/www/html/piwik/misc
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
gunzip GeoLiteCity.dat.gz
登入 Piwik, 依序點入 Settings → Geolocation → (選取) GeoIP (Php)
Piwik URL: http://logs.sec.ht/
Auth token: 貼上從 Piwik 後台 API 項目中取得的 token_auth 字串
取消勾選 Auto config, 將畫面捲動到底並點選 Save Settings
點選 Tracking, 勾選 Add tracking code, 捲動到畫面底部點選 Save Settings
限制來源 IP 防護 Piwik 登入介面
方式一: 修改 Web Server 設定檔限制連入 /piwik/index.php
server
{
listen 80;
server_name logs.sec.ht; #server_name end
index index.html index.htm index.php; #index end
deny 10.0.1.25/29;
allow 10.0.1.0/27;
deny all;
方式二: 修改 /var/www/html/piwik/index.php, 步驟如下:
建立判斷是否為私有 IP 的 function
# vi /var/www/html/piwik/ip_is_private.php
<?php
//程式來源: https://mebsd.com/coding-snipits/check-private-ip-function-php.html
function ip_is_private($ip)
{
$pri_addrs = array(
'10.0.0.0|10.255.255.255',
'172.16.0.0|172.31.255.255',
'192.168.0.0|192.168.255.255',
'169.254.0.0|169.254.255.255',
'127.0.0.0|127.255.255.255'
);
$long_ip = ip2long($ip);
if($long_ip != -1) {
foreach($pri_addrs AS $pri_addr)
{
list($start, $end) = explode('|', $pri_addr);
// IF IS PRIVATE
if($long_ip >= ip2long($start) && $long_ip <= ip2long($end))
return (TRUE);
}
}
return (FALSE);
}
?>
修改 index.php, 於檔頭加入來源 IP 判斷條件
# vi /var/www/html/piwik/index.php
//在 <?php 底下插入:
include 'ip_is_private.php';
$ip = $_SERVER['REMOTE_ADDR']; //取得登入者 IP Address
$valid = '111.111.111.111,222.222.222.222,123.123.123.123'; //允許連入的 Internet IP
if ( strpos($valid,$ip) === false && ! ip_is_private($ip) ) {
//只有 $valid 定義的外部 IP 以及內部 IP 可以登入, 否則觸發 403 錯誤
header('HTTP/1.1 403 Forbidden');
echo '<h1>403 Forbidden</h1>';
exit;
}
清除帶有政治意圖的字眼
cd /var/www/html/piwik
sed -i 's/, Province of China//' lang/en.php
sed -i 's/台灣共和國/台灣/' lang/zh-tw.php
sed -i 's/台湾地区/台湾/' lang/zh-cn.php
#### 2018年12月25日更新:
- 启用LOAD DATA INFILE:数据库用户赋予FILE权限
- 安装GeoIP库(否则无法安装GeoIP PECL扩展)
wget http://geolite.maxmind.com/download/geoip/api/c/GeoIP.tar.gz
tar -zxvf GeoIP.tar.gz
cd GeoIP-1.4.8
./configure
make && make install
刚才安装的库自动安装到 /usr/local/lib 下,所以这个目录需要加到动态链接配置里面以便运行相关程序的时候能自动绑定到这个 GeoIP 库:
echo '/usr/local/lib' > /etc/ld.so.conf.d/geoip.conf
ldconfig
cd geoip-1.1.1
phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-geoip
make
make install
完成后extensions目录下会生成geoip.so链接库,在 php.ini 里加上
extension=geoip.so
- 在Nginx下安装GeoIP2——HTTP 服务器模块(未完成)
cd libmaxminddb-1.3.2/
./configure && make && make install
再安装MaxMind-DB-Reader-php
cd ext
phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
Nginx添加ngx_http_geoip2_module模块,重新编译
' --add-module=/root/lnmp1.5/src/ngx_http_geoip2_module-3.2'