ติดตั้ง Piwik บน Ubuntu 16.04

ถ้าอยากมี Web Analytic ใช้เอง ทำไงได้บ้าง

            PIWIK [1] เป็นโปรแกรมที่เป็น Opensource ใช้สำหรับทำ Web Analytic โดยมีจุดเด่นใหญ่ ๆ คือมีข้อมูลอยู่ในองค์กรเอง และรองรับมุมมองต่าง ๆ ครบถ้วนตามที่ควรจะมี (จริง ๆ ใช้ Google Analytic ก็ได้ครับ ขอเสนอเป็นทางเลือกในกรณีที่ต้องการอะไรที่ private หน่อย) การติดตั้งลักษณะก็จะเป็นการติดตั้ง mysql (หรือ mariadb), php, apache (หรือ nginx) ดังนี้ครับ

  1. ทำการติดตั้ง Ubuntu 16.04[2]
  2. ทำการติดตั้ง nginx+mariadb+php (สามารถติดตั้งเป็น apache+mysql+php[3]ก็ได้ครับ)
    MariaDB

    sudo apt install mariadb-server mariadb-client
    

    Nginx

    sudo apt install nginx

    PHP

    sudo apt install php-fpm php-mysql php-curl php-gd php-cli php-geoip php-zip php-mbstring php-dom php-xml
  3. ทำการตั้งค่า nginx เพื่อใช้งานกับ php-fpm
    sudo vim /etc/php/7.0/fpm/php.ini

    แก้ไข php config (uncomment cgi.fix_pathinfo และแก้ค่าเป็น 0)

    [...]
    ; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI.  PHP's
    ; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok
    ; what PATH_INFO is.  For more information on PATH_INFO, see the cgi specs.  Setting
    ; this to 1 will cause PHP CGI to fix its paths to conform to the spec.  A setting
    ; of zero causes PHP to behave as before.  Default is 1.  You should fix your scripts
    ; to use SCRIPT_FILENAME rather than PATH_TRANSLATED.
    ; http://php.net/cgi.fix-pathinfo
    cgi.fix_pathinfo=0
    [...]
    

    แก้ไขไฟล์ nginx.conf

    sudo vim /etc/nginx/sites-available/default
    

    ตั้งค่า fastcgi_pass ให้เรียกใช้งาน php7.0-fpm

    [...]
     index index.html index.htm index.nginx-debian.html index.php;
    
     server_name _;
    
     location / {
     # First attempt to serve request as file, then
     # as directory, then fall back to displaying a 404.
     try_files $uri $uri/ =404;
     }
    
     # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
     #
     location ~ \.php$ {
     include snippets/fastcgi-php.conf;
     #
     # # With php7.0-cgi alone:
     # fastcgi_pass 127.0.0.1:9000;
     # # With php7.0-fpm:
     fastcgi_pass unix:/run/php/php7.0-fpm.sock;
     }
    
     # deny access to .htaccess files, if Apache's document root
     # concurs with nginx's one
     #
     location ~ /\.ht {
      deny all;
     }
    }
    [...]
  4. ทำการ Restart Service
    sudo systemctl restart php7.0-fpm
    sudo systemctl restart nginx
    
  5. ทำการตั้งค่า Mariadb ดังนี้
    sudo mysql_secure_installation

    ทำการตั้งค่าต่าง ๆ รวมถึง Password ของ root

    Set root password? [Y/n] Y

    ใส่ password และ password ใหม่ที่ต้องการ

    Remove anonymous users? [Y/n] Y
    
    Disallow root login remotely? [Y/n] Y
    
    Remove test database and access to it? [Y/n] Y
    
    Reload privilege tables now? [Y/n] Y
  6. ทำการสร้าง User, Password ใหม่ใน Mariadb เพื่อใช้งานกับ Piwik
    sudo mysql -u root -p

    จากนั้นทำการสร้าง DB และกำหนด User, Password ที่ใช้ในการเข้าถึง (piwikuser@ ให้แทนที่ด้วยรหัสผ่าน)

    create database piwikdb;
    create user piwikuser@localhost identified by 'piwikuser@';
    grant all privileges on piwikdb.* to piwikuser@localhost identified by 'piwikuser@';
    flush privileges;
    quit;
  7. ติดตั้งโปรแกรม Piwik
    sudo apt install git
    cd /var/www/html
    sudo mkdir piwik
    sudo git clone https://github.com/piwik/piwik .
    cd /var/www/html/piwik
    sudo git checkout 3.0.3
    sudo git submodule update --init --recursive
    sudo curl -sS https://getcomposer.org/installer | sudo php  
    sudo php composer.phar install --no-dev
    sudo chown -R www-data:www-data /var/www/html/piwik
    sudo find /var/www/html/piwik -name "*.php" -exec chmod 755 {} \;
  8. ทำการแก้ default web path ให้ชี้เข้าไปใน folder /var/www/html/piwik ดังนี้
    sudo vim /etc/nginx/sites-available/default

    แก้ไขไฟล์ดังนี้

    [...]
    # include snippets/snakeoil.conf;
    
    root /var/www/html/piwik;
    [...]
  9. สั่ง Restart Service
    sudo systemctl restart nginx
  10. จากนั้นทำการติดตั้งผ่านหน้า Web ดังรูป
  11. หน้าต่าง system check ตรวจสอบว่าลงครบหรือไม่ กด Next
  12. หน้าต่าง Database Setup กรอกรายละเอียด Adapter เลือก mysqli จากนั้นกด Next
  13. หน้าต่าง Creating the Tables ถ้าไม่มีอะไรผิดปกติจะขึ้น Tables created with success กด Next
  14. หน้าต่าง Super User ให้ตั้งค่าบัญชี รหัสผ่าน ที่ต้องการ Login เข้าใช้งาน
  15. ตั้งค่า Website
  16. หน้าต่าง JavaScript Tracking Code จะให้ Code ที่เอาไปวางในหน้าต่าง ๆ ของ WebSite ที่ต้องการ Monitor ซึ่งสามารถกลับมาดูทีหลังได้จาก Menu ให้กด Next
  17. หน้าต่างสุดท้ายจะเป็นหน้าแสดงความยินดีในการติดตั้งสำเร็จให้กด Continue to PIWIK
  18. Login เข้าสู่ระบบตาม User, Password ที่ตั้งไว้ในข้อ 14
  19. วิธีการใช้งานไม่ยากอะไรมากครับ ลองทดสอบใช้งานดูครับ มี Feature มากมายครับ พร้อม plugin มากมายทั้งฟรี และเสียตังค์ แต่สำหรับตัวฟรีติดตั้งหมดแล้วด้วยคำสั่ง git submodule update –init –recursive

    เมื่อทำการตั้งค่าอีเมล์เรียบร้อยแล้ว เราสามารถให้ส่งรายงานสรุป Per Site ให้ Admin แต่ละ site ตรวจสอบได้รายวัน และเมื่อมี Version ใหม่ ก็จะมีเมล์แจ้งเช่นกัน โดยวิธีการ Update จะสามารถทำผ่านหน้า Web แต่สุดท้ายจะมีให้รันคำสั่งบน Command Line เพื่อ Upgrade Database แต่จะมีวิธีทำอธิบายไว้ละเอียดอยู่แล้วครับ ขอให้สนุกกับการใช้งานครับปล. ผมข้ามขั้นตอนการตั้งค่า SSL[4] ซึ่งแนะนำให้ตั้งค่าด้วยครับ 

=================================================

References :
[1] https://piwik.org/

[2] http://opensource.cc.psu.ac.th/%E0%B8%95%E0%B8%B4%E0%B8%94%E0%B8%95%E0%B8%B1%E0%B9%89%E0%B8%87_ubuntu_16.04_server

[3] http://joelradon.com/installing-lamp-on-ubuntu-16-04/

[4] https://www.digicert.com/ssl-certificate-installation-nginx.htm