Piwik 使用GeoIP 以及优化(一)

接上篇文章,开始给我的大部分网站使用piwik,但是使用piwik 首先需要的就是enable GeoIP

  1. GeoIP Module for Piwik

         Piwik 有四种方式来使用GeoIP, 分别是default, GeoIP(PHP), GeoIP(PECL), GeoIP(http or nginx)

        在高流量的网站,GeoIP PHP 就会显得速度慢很多,因此这里 GeoIP PECL 成为了piwik 的首选

      在piwik 的官方文档上有在ubuntu/debian 上安装pecl geoip 的办法,因此这里不再多说. 这篇文章主要说说如何安装GeoIP PECL 在RHEL系列的OS 上

      以CentOS为例,首先确保你的系统安装了PECL,如果没有的话就先google 一下安装PECL

     然后以root 执行下列命令

pecl install geoip

  然后有很大的可能性你会得到下面的error:

shtool at '/tmp/pear/temp/geoip/build/shtool' does not exist or is not executable.

  出现这个error 的原因在于/tmp 这个目录不允许执行可执行文件

  解决办法也很简单,就是更改pecl 的默认tmp 目录,比如改为/root/tmp

mkdir /root/tmp 
 pecl config-set temp_dir /root/tmp
 or
 pear config-set temp_dir /root/tmp

pecl config-set这个命令经常会出问题,因此建议使用pear config-set这个命令

更改完pecl 的tmp 默认目录以后,就可以顺利的执行pecl install geoip的命令了

安装完毕后,还剩下最后一件事: 配置php.ini, 添加geoip extension 和 目录

用你喜欢的编辑器,无论是是vi, vim 还是nano,编辑php.ini,添加如下代码:

[PHP]
 ;AFTER THE PHP SECTION NOT BEFORE
 extension=geoip.so

 

[gd] 
;AFTER THE gd SECTION NOT BEFORE 
geoip.custom_directory=/full/linux/path/to/piwik/misc

注意当使用pecl install geoip 的时候, extension=geoip.so 一般会自动添加到php.ini配置文件中,在这里你需要确定下

Leaseweb VPS 是一个大坑。。。

接上篇文章,因为决定不再使用histats,所以准备上线piwik,自己来host website counter

看上了leaseweb 的 washington DC 的 Cloud, 8GB RAM, 8 Core 才30刀,实在便宜的很,没想到这才是坑的开始

首先,在order 页面尽管标注的是SSD storage,但是实际上只是SSD 的SAN, 是一个shared remote storage,因此 IO rate 和 local disk 的 SSD相比差的太远了,只能达到80Mbps. 对于piwik 这种对数据库读写非常频繁的应用来说,这是一个最大的坑

其次,Leaseweb 的Cloud 都是使用的DHCP 的IP assignment,这个在cloud中很常见, no complaint.  个人习惯问题一般喜欢把DHCP 改成static。。。讨厌的是leaseweb 竟然不是使用标准的 gateway XX.XX.XX.1 ( CIDR 是 /25), 而是使用的是XX.XX.XX.126…

就为了这个问题我debug了整个晚上。。。差点把centos的配置文件全部重写一遍。。

慎用histats.com

对于正规站点来说, google analytics 无疑是最好的选择

但是对于很多做站群或者website farm 的同学来说, 使用google analytics 会增大被google 关联的机会

因此一直在使用histats,号称全免费

可是今天晚上再debug 源代码的时候发现,所有使用histats 的站点都被添加了 dtscout.com和 dtscdn.com 的CDN JS, 而dtscout.com则是一家数据发现公司

由此可见histats 的免费使用是建立在把数据卖给dtscout.com的基础上

发现了这个问题,就要进行改正

准备把使用histats.com的站点全部迁移到piwik上去

Revive Adserver 无法读取GEO Module

这两天用LNMP 1.3 来安装Revive Adserver,可是悲催的发现无法enable GEO Module。。。各种mysql 的格式都试了还是不行。。。

甚是苦恼。。。

然后啥都干不下。。一直在看Revive Adserver 的源码,想看看是怎么回事。。。没想到这套框架实在太复杂了。。。

今天中午无意间检查了一下debug log file, 无法里面有很多warning。。说是scandir这个功能无法使用。。。心里就大概知道怎么回事了。。

果然enable php scandir 以后,正常读取GEO module。。。

因为以前也是用LNMP 来安装revive adserver也一直没有什么问题。。就一直没有往环境这个问题去想。。

看来这又是LNMP1.3上新加的一个功能。。又是一个坑啊。。

Ubuntu 16.04 LTS 安装lavarel 环境, php7, nginx1.9, mysql5.7

最近有个小的项目是用laravel写的,本来想用虚拟机搞定,可是正好赶上朋友的公司淘汰一批12寸的本,有好多台跟新的差不多,就要了一台来安装ubuntu 来做开发.

Ubuntu 16.04 的repo 自带了最新版本的php7, nginx1.9, mysql5.7, 正合适laravel 的开发环境

下面是详细的安装过程,正好做一个备份方向以后查找

1.更新本地的repo index以及相关的程序

sudo apt-get update

sudo apt-get upgrade

更多

.htaccess 技巧

最近在开发站点时,为了让URL 好看有助于SEO, 仔细研究了一下 apache rewrite 的规则.

  1. mod_rewrite 需要在htaccess 或者 config 中启用FollowSymlinks, 这是rewrite引擎的安全要求
  2. mod_rewrite 可以重写URL ( rewrite) 或者 重定向 ( redirect) URL. 在对同一个domain 进行映射时,是重写, 如果需要重定向的话,需要在结尾加上FLAG R.  URL重写用于将页面映射到本站另一页面,若重写到另一网络主机(域名),则按重定向处理

 

更多

mobile traffic detection

这个应该算是老生常谈的问题了,再web design 上早就使用responsive design 来解决了,但是在在线广告领域,除了google 早早就开始使用自适应广告以外,其余的广告还是需要自己去判断的。

这里有两个类可以使用,但是我个人更加偏向于第一个

http://mobiledetect.net/

http://detectmobilebrowsers.com/

LNMP/A的open_basedir问题

军哥的LNMP/LNMPA的默认保护措施open_basedir挺不错的,就是无意中会错杀一些使用,95%的应用是不需要修改的,但是也有5%的例外

LNMP 1.2及更高版本防跨目录功能使用.user.ini,该文件在网站根目录下,可以修改open_basedir的值来设置限制目录的访问。
.user.ini文件无法直接修改,而且是隐藏文件可能在winscp下可能无法看到,建议使用vim编辑器或nano编辑器进行修改。
如要修或删除需要先执行:chattr -i /网站目录/.user.ini
修改完成后再执行:chattr +i /网站目录/.user.ini
.user.ini不需要重启一般5分钟左右生效。
如果要更改网站目录必须要按上述方法修改防跨目录的设置,否则肯定报错!!

LNMPA或LAMP 1.2上的防跨目录的设置使用的对应apache虚拟主机配置文件里的php_admin_value open_basedir参数进行设置。如果不需要设置可以在前面加 # 进行注释,或自行修改目录的限制。
重启apache生效。

The magic behind configure, make, make install

If you’ve used any flavour of Unix for development, you’ve probably installed software from source with this magic incantation:

./configure

make

make install

I know I’ve typed it a lot, but in my early days using Linux I didn’t really understand what it meant, I just knew that if I wanted to install software this was the spell to recite.

Recently I’ve been building my own Unix tools, and I wanted to tap into this standard install process; not only is it familiar to many Unix users, it’s also a great starting point for building a package for Homebrew and the various Linux and BSD package managers. It was time to dig into the Unix Grimoire and find out what the incantation does.更多