By default Piwik uses the provider location to guess a visitor's country based on the language they use. This is not very accurate, so they recommend installing and using GeoIP.
- Ubuntu server
- libgeoip-dev
- Nginx
- Nginx minimal website
# block humans.txt scans | |
# http://perishablepress.com/protect-against-humans-txt-query-string-scans/ | |
<IfModule mod_rewrite.c> | |
RewriteCond %{QUERY_STRING} http\:\/\/www\.google\.com\/humans\.txt\? [NC] | |
RewriteRule .* - [F,L] | |
</IfModule> |
# This will be passed to all mysql clients | |
# It has been reported that passwords should be enclosed with ticks/quotes | |
# escpecially if they contain "#" chars... | |
# Remember to edit /etc/mysql/debian.cnf when changing the socket location. | |
[client] | |
port = 3306 | |
socket = /var/run/mysqld/mysqld.sock | |
# Here is entries for some specific programs | |
# The following values assume you have at least 32M ram |
<?php | |
/** | |
* Adding Custom post type counts in 'Right now' Dashboard widget. | |
* Acording this changes : | |
* - https://core.trac.wordpress.org/ticket/26571 | |
* - https://core.trac.wordpress.org/ticket/26495 | |
* now you can't use 'right_now_*' action API to show your custom post type count from your Dashboard. | |
* But if you running WP 3.8 or above, you can use 'dashboard_glance_items' instead. | |
* | |
* @package Wordpress |
# Automatically instal the latest nginx | |
wget -O - http://nginx.org/keys/nginx_signing.key | sudo apt-key add - | |
#Make a backup copy of your current sources.list file | |
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak | |
#Now copy the following repositories to the end of ` /etc/apt/sources.list` | |
echo "deb http://nginx.org/packages/mainline/ubuntu/ trusty nginx" | sudo tee -a /etc/apt/sources.list | |
echo "deb-src http://nginx.org/packages/mainline/ubuntu/ trusty nginx" | sudo tee -a /etc/apt/sources.list |
# You may add here your | |
# server { | |
# ... | |
# } | |
# statements for each of your virtual hosts to this file | |
## | |
# You should look at the following URL's in order to grasp a solid understanding | |
# of Nginx configuration files in order to fully unleash the power of Nginx. | |
# http://wiki.nginx.org/Pitfalls |
[wp-login] | |
enabled = true | |
filter = wp-login | |
action = iptables-multiport[name=wp-login, port="http,https"] | |
sendmail[dest="name@domain.com", sendername="Fail2Ban", sender="fail2ban", name="wp-login"] | |
logpath = /var/www/vhosts/system/*/logs/access*_log | |
maxretry = 5 | |
findtime = 60 | |
bantime = 1200 |
user ashley; | |
worker_processes 1; | |
pid /run/nginx.pid; | |
events { | |
worker_connections 1024; | |
multi_accept on; | |
} | |
http { |
server { | |
listen 80; | |
server_name example.com www.example.com; | |
return 301 https://$host$request_uri; | |
} | |
server { | |
listen 443 ssl; | |
server_name example.com www.example.com; |
.widget_woothemes_our_team .columns-2, | |
.widget_woothemes_our_team .columns-3, | |
.widget_woothemes_our_team .columns-4, | |
.widget_woothemes_our_team .columns-5, | |
.widget_woothemes_our_team .columns-6 { | |
overflow: hidden; | |
zoom: 1; | |
} | |
.widget_woothemes_our_team .columns-2 .team-member, | |
.widget_woothemes_our_team .columns-3 .team-member, |