Arquivo da categoria: Analytics

Bora entender o que é Piwik! Piwioque?!?

Não, o Piwik não é uma fruta derivada do Kiwi e nem o aplicativo de perguntas e respostas! Brincadeiras a parte, no post de hoje falaremos sobre o Piwik, uma solução de web analytics open source disponível sob a licença GPL versão 3. Mas oras, o que tem de interessante nesse Piwik? Piwik é uma ferramenta madura e eficiente para medir a audiência em sites e blogs. Com o Piwik é possível monitorar desde a navegação de seus visitantes e clientes, qual os dispositivos que eles usaram para acessar seu site ou qual o navegador que eles utilizaram, até mesmo saber de qual região do mundo ou do país esse visitante esta através de geolocalização,, ajudando sua equipe de marketing ter uma visão mais abrangente sobre o perfil do seu público-alvo. Mas ele se limita a isso? Não!

Atualmente ainda muitas pessoas fazem uso do Google Analytics para análise de tráfego em seus web sites, no entanto o Piwik vem gradativamente ganhando seu merecido espaço e tendo se mostrado um concorrente a altura da ferramenta da gigante Google. Atualmente a ferramenta já possui mais de 3 milhões de downloads, isso quer dizer que cada vez mais profissionais vem adotando o Piwik e tendo um ótimo feedback sobre ele, além disso, empresas como a Forbes por exemplo, já a utilizam em seu ambiente, o que fica evidente o quanto a solução pode atender diversos nichos de mercado e empresas de diversos tamanhos.

Chega de ladainha! Vamos agora para a tela preta e por a mão na massa, entender de uma vez por todas como implementá-la em seu ambiente. Aqui neste post procuro explicar como implantar a solução nas duas famílias de distribuições Linux mais populares do mercado no segmento de servidores, ou seja, Debian e CentOS, atendendo tanto a “galera” Debian e a “Galera” Red Hat Enterprise Linux, sem deixar ninguém de fora dessa, afinal, existe um vasto público para as ambas as distribuições. Além disso, eu sei o quanto é sofrer para tirar aquela dúvida sobre uma determinada solução e durante a instalação dela, tem aquele pacote danado que muda de nome para cada distribuição, o que atrapalha e dificulta padronizar a instalação da maioria das soluções em todo o ecossistema Linux. rs

A instalação que faremos é em single-server, ou seja, faremos uma instalação do servidor web, aplicação piwik e a base de dados em um único servidor. Porque o intuito é esclarecer como funciona a instalação. No dia a dia você tem a liberdade de segmentar esse ambiente entre camada de aplicação e dados, até porque as boa prática recomendam esse tipo de implementação em um ambiente de produção.

Let’s go!

Primeiramente precisamos preparar o ambiente, no caso do CentOS por exemplo, precisamos instalar o repositório webtatic, porque ele possui o pacote php 5.5.38, compatível com a versão requerida pelo Piwik. Atualmente o Piwik exige a versão superior ao php 5.5.9 para seu perfeito funcionamento.

# yum install epel-release wget unzip -y
# wget https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
# rpm -ivh webtatic-release.rpm

Enquanto no Debian precisamos fazer o update para que o apt faça a ressincronização dos índices dos pacotes do repositório remoto e minimizar a possibilidade de ter algum erro no momento que o apt procurar pelo pacote no repositório.


No Debian, execute os passos:

# apt-get update
# apt-get install wget unzip -y

Com a preparação do ambiente iniciada, já podemos preparar o backend da nossa infraestrutura, ou seja, vamos instalar e configurar a nossa base de dados, onde será armazenados os dados dos visitantes e toda as funcionalidades necessárias para sustentar a aplicação piwik.

No CentOS faremos a instalação do mariadb, que nada mais é do que um fork do mysql criado pelo próprio fundador do projeto após sua aquisição pela Oracle. Apesar da mudança de nome, o mariadb é 100% compatível com as funcionalidades do mysql.

# yum install mariadb-server -y
# systemctl enable mariadb
# systemctl start mariadb
# mysql
mariadb> CREATE DATABASE piwikdb;
mariadb> GRANT ALL PRIVILEGES ON piwikdb.* To 'piwik'@'localhost' IDENTIFIED BY '4linux';

No Debian é necessário ficar atento após a instalação, porque o debconf vai questionar qual a senha você deseja configurar para o root (administrador da base de dados), sinta-se livre para escolher a senha.

Instalado o mysql com sucesso, precisamos iniciá-lo e incluí-lo na inicialização do sistema operacional em caso de reboot. E obviamente precisamos criar a base de dados e as credenciais de acesso do usuário da aplicação piwik.

# apt-get install mysql-server -y # Forneça a senha de root do mysql
# systemctl enable mysql
# systemctl start mysql
# mysql
mysql> CREATE DATABASE piwikdb;
mysql> GRANT ALL PRIVILEGES ON piwikdb.* To 'piwik'@'localhost' IDENTIFIED BY '4linux';

Com a nossa infraestrutura de backend configurada e pronta para uso, agora precisamos configurar o servidor http que irá sustentar a aplicação web Piwik atuando dentro da camada de apresentação, no caso iremos instalar o mito, a lenda, o clássico… O bom e velho apache. Uma solução de servidor http que ganhou seu reconhecimento e se mantém até os dias atuais no topo da cadeia alimentar dos servidores http mais populares e estáveis do mundo.

Em conjunto precisamos instalar também o pacote php, afinal, é a linguagem nativa da aplicação piwik, e obviamente também precisamos instalar todos as bibliotecas e extensões para que a aplicação piwik funcione corretamente.

# yum install httpd php55w php55w-cli php55w-common php55w-gd php55w-mysql php55w-xml php55w-mbstring -y

# apt-get install apache2 libapache2-mod-php5 php5 php5-curl php5-gd php5-cli php5-mysql php-xml php-mbstring -y

Agora precisamos fazer o download da versão mais recente do piwik através do site oficial da solução. Após a conclusão do download extraia o arquivo dentro do diretório raiz web do servidor web,, conforme o comando abaixo, este mesmo comando e aplica a ambas as distribuições.

# wget https://builds.piwik.org/piwik.zip
# unzip piwik.zip -d /var/www/html/

Agora que a aplicação piwik já esta disponível para o servidor web, precisamos configurar o Virtual Host para o piwik , mas pera lá, o que é Virtual Host? Virtual Host é um recurso padrão dos servidores web que fornece a possibilidade de hospedar mais do que um web site ou aplicação num único servidor, com um endereço IP ou mais. Mas poxa, por que fazer Virtual Host sendo que este servidor não terá nenhum outro site ou aplicação, além do próprio Piwik? Porque é uma boa prática, simples assim.

# vim /etc/httpd/conf.d/piwik.conf
<VirtualHost *:80>
ServerAdmin admin@linuxsysadmin.com.br
DocumentRoot "/var/www/html/piwik"
ServerName piwik.linuxsysadmin.com.br
ErrorLog "/var/log/httpd/piwik.linuxsysadmin.com-error_log"
CustomLog "/var/log/httpd/piwik.linuxsysadmin.com-access_log" common
</VirtualHost>

Note que existe uma diferença sútil em relação aos diretórios do apache nas duas distribuição, mas em suma, o serviço é o mesmo, então faça com confiança, sem medo de ser feliz!

# vim /etc/apache2/sites-available/piwik.conf
<VirtualHost *:80>
ServerAdmin admin@linuxsysadmin.com.br
DocumentRoot "/var/www/html/piwik"
ServerName piwik.linuxsysadmin.com.br
ErrorLog "/var/log/apache2/piwik.linuxsysadmin.com-error_log"
CustomLog "/var/log/apache2/piwik.linuxsysadmin.com-access_log" common
</VirtualHost>

Neste ponto a aplicação já estaria disponível para acessarmos e terminarmos a instalação. Mas existem alguns pontos cruciais, a permissão do diretório piwik, é necessário que o usuário do serviço apache seja proprietário deste diretório, afinal durante a instalação o piwik precisa escrever suas configurações em um arquivo dentro deste diretório, e sem elas, não seria possível prosseguir com a instalação.

# chown -R apache:apache /var/www/html/piwik

No Debian temos dois diferenciais, um que o Virtual Host precisa ser habilitado através do comando a2ensite, caso contrário nosso piwik ainda não estara disponível para uso. Além disso, o arquivo php.ini precisa ser editado, alterando o parâmetro always_populate_raw_post_data, este parâmetro já esta obsoleto no php, por essa razão precisamos passar o valor -1, assim o php mantém este recurso funcionando mas sem as implementações novas feitas nele a partir das novas versões do php.

# chown -R www-data:www-data /var/www/html/piwik
# a2ensite piwik.conf
# vim /etc/php5/apache2/php.ini
always_populate_raw_post_data = -1

E por fim, mas não menos importantes, podemos reiniciar o serviço do apache e obviamente adicionar o serviço na inicialização do sistema operacional.

# systemctl enable httpd
# systemctl restart httpd

# systemctl enable apache2
# systemctl reload apache2

Agora abra seu navegador favorito e acesse o endereço http://piwik.linuxsysadmin.com.br e vamos concluir a instalação via web. Ao acessar você será recebido com boas vindas, clique em “seguinte” para avançar na instalação.

Nessa tela será apresentada todas dependências do piwik, caso todas estejam instaladas corretamente o piwik informa um checkbox verde confirmando que aquela dependência esta ok.

 

Prosseguindo com a instalação será necessário informar as credenciais de acesso ao banco conforme fizemos na etapa de instalação e configuração do mysql/mariadb.

Ao avançar o piwik faz a carga inicial do banco e dados piwikdb, populando a base com os dados e as estruturas iniciais para seu funcionamento inicial.

Em seguida crie as credenciais do usuário administrador da ferramenta para que você possa acessa-la após a conclusão da instalação.

Nesta etapa é obrigatória a configuração do primeiro site que o piwik ira monitorar. Passe todas as informações corretamente, como nome, o endereço, localidade e a informe se é um blog, site ou e-commerce.

Após configurar o seu site o piwik gera o código Javascript que você irá adicionar dentro do cabeçalho html do seu site. Esse código javascript deve ficar dentro das tags head da sua página. Caso você tenha dificuldade, por favor contate sua equipe de desenvolvimento responsável pelo seu web site para te dar o apoio necessário. Caso você não faça esta etapa, após concluir a instalação e se autenticar na ferramenta, o piwik não vai te direcionar para o dashboard principal, já que ele não possui estatísticas de visitantes para exibir.

Abaixo, segue um exemplo de como seria em uma página html simples com a inclusão do código javascript.

		<!-- 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.linuxsysadmin.com.br/";
			_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 -->
 
 
		Página de teste

Editado o cabeçalho html da sua página, avance a instalação e você sera parabenizado pelo piwik por concluí-la.

Você sera direcionado para a página de autenticação do piwik, informe as credenciais e clique no botão entrar.

Parabéns, você acabou de concluir a instalação do Piwik com sucesso. Você provavelmente esta no dashboard principal da ferramenta, agora você pode desfrutar de todos os recursos que a ferramenta oferece. Sua tela de apresentação é extremamente linda e muito simples, com todos os detalhes necessários para tornar a ferramenta atrativa aos profissionais não só técnicos mas principalmente da área de negócios da sua empresa.

Pessoal, fico por aqui, agradeço pela atenção e a paciência em ler todo esse artigo em conjunto com um leve “how-to” focado para quem deseja ter o primeiro contato com a ferramente. Em breve pretendo escrever mais sobre o Piwik, e quem sabe não criamos num outro artigo, algo mais focado em uma arquitetura piwik de alto tráfego para portais web com grande volume de acessos. Enfim, forte abraço a todos e sucesso!

See ya!