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

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

Read More »

ติดตั้ง UserGrid ด้วย Docker Container

อยากสร้าง App บนมือถือ แต่ไม่อยากยุ่งยากจัดการ User, ทำระบบ Login, ฐานข้อมูล, เขียนเชื่อมต่อฐานข้อมูล แถมต้องใช้ได้กับทุก Platform มีอะไรที่จัดการให้หมดเลยไหม              Apache usergrid [1] เป็นทางออกหนึ่งสำหรับผู้ที่ไม่อยากยุ่งยากในการจัดการในส่วนของ Server-Side Code และเน้นในการเขียน Application ในการใช้งานเพียงอย่างเดียว โดย usergrid ชื่อก็บอกเป็นนัย ๆ อยู่แล้วครับ ว่าเป็นระบบจัดการ User ทั้งการเข้าถึงรวมถึงการกำหนดสิทธิในการใช้งาน แต่จะมีในส่วนของระบบฐานข้อมูล Application ไว้ให้ใช้งานด้วย โดยฐานข้อมูลจะเป็น nosql ซึ่งจะมีเครื่องมือในการ query เบื้องต้น, Rest Service และ SDK สำหรับพัฒนาในอุปกรณ์มือถือ และสามารถใช้ในการพัฒนา Application ด้วยภาษาต่าง ๆ มากมาย สามารถเข้าไปอ่านเพิ่มเติมได้ที่ http://usergrid.apache.org/             สำหรับวิธีลงมีหลายแบบ แต่ที่จะแนะนำจะเป็นการติดตั้งเป็น Container ด้วย Docker[2] ซึ่งสิ่งที่ต้องการใช้งานมีดังนี้ Java – Ubuntu base image with Oracle JVM : สำหรับใช้ Run ระบบ เท่าที่ติดตั้งไม่ลงตัวนี้ก็สามารถใช้งานได้ Cassandra : ระบบฐานข้อมูล nosql Elasticsearch : ระบบค้นหาแบบ distributed search ลองนึกถึงการ search ที่ทุก field ทำ index ไว้หมดซึ่งเร็วแน่นอน Usergrid : ระบบ Core Engine ซึ่งจะให้บริการผ่าน RESTful API (เทียบได้กับ Web Service แต่ยืนหยุ่นกว่าและคุยด้วย json) Usergrid Admin Portal : เป็น Web Site ที่ใช้ในการบริหารจัดการข้อมูล กำหนดสิทธิ์ และสามารถ Query ข้อมูลเบื้องต้นได้  1. ทำการติดตั้ง OS และ Docker (อ่านเพิ่มเติมได้จาก sysadmin.psu.ac.th[3]) แต่จากตัวอย่างจะรันด้วย PhotonOS[4] เนื่องจากมีขนาดเล็กและเหมาะกับการใช้งานกับ Vmware มากกว่า (ติดตั้งด้วย .ova) แต่สามารถติดตั้งผ่าน Linux Distribution อื่นได้ด้วยคำสั่งเดียวกัน 2. ติดตั้งฐานข้อมูล cassandra ด้วยคำสั่งดังนี้ (ในกรณีที่ต้องการติดตั้งแบบ cluster สามารถศึกษา option ได้จาก website ข้างต้น[2]) docker run –detach –name cassandra –volume $(pwd)/cassandra-data:/var/lib/cassandra yep1/usergrid-cassandra             โดยสำหรับ option –volume หน้า : คือ path ของเครื่อง Host, หลัง : จะเป็น path ใน containner ในกรณีที่ลบ containner หรือ update software  ใน containner ข้อมูลในฐานข้อมูลจะได้ไม่หาย 2. ติดตั้งระบบค้นหา Elasticsearch ด้วยคำสั่งดังนี้ docker run –detach –name elasticsearch –volume $(pwd)/elasticsearch-data:/data yep1/usergrid-elasticsearch 3. ติดตั้ง Usergrid ด้วยคำสั่งดังนี้

Read More »

Spam 2017-04-04

วันนี้ได้รับแจ้งว่า มี Email หลอกลวงแบบแนบเนียน หน้าตาดังนี้ แหน่ะ แนะนำว่าอย่าให้ข้อมูล Username/Password กับใครอีกด้วย แต่มี Link ให้ไปกรอกรหัสผ่านซะงั้น ฝากกระจายข่าวด้วยครับ

Read More »

Spark #03: Query Apache Access Log with Spark SQL

ต่อจาก Spark #02: Cluster Installation ซึ่งทำให้เรามี Spark Cluster ที่พร้อมจะทำงานแบบ Distributed Computing แล้ว ขั้นตอนการติดตั้ง Hadoop Cluster อย่างง่าย ทำให้มี Hadoop HDFS เป็นพื้นที่จัดกับ Zeppelin #01 Installation ทำให้สามารถใช้งาน Spark ได้ง่ายขึ้น บทความนี้ จะกล่าวถึงการนำเข้าไฟล์ Apache Access Log เข้าไปเก็บไว้ใน Hadoop HDFS แล้ว ให้ Apache Spark Cluster เข้าไปค้นหาข้อมูล โดยใช้ภาษา SQL ผ่าน Spark SQL API นำ Apache Access Log เข้า HDFS ให้ Copy Apache Access Log ที่มีอยู่มาเก็บไว้ในเครื่องที่สามารถติดต่อ Hadoop HDFS ได้ (ในที่นี้ ชื่อไฟล์เป็น apache.access.log) ใช้คำสั่งต่อไป (แทน /test/ ด้วย Path ที่สร้างไว้ใน HDFS) hdfs dfs -copyFromLocal apache.access.log /test/ เมื่อไปดูผ่าน Web UI ของ Hadoop HDFS ก็จะเห็นไฟล์อยู่ดังนี้ วิธี Query ข้อมูลจาก Zeppelin ไปยัง Spark Cluster เปิด Zeppelin Web UI แล้วสร้าง Note ใหม่ โดยคลิกที่ Create new node แล้วใส่ชื่อ Note เช่น Query Apache Access Log ตั้ง Default Interpreter เป็น Spark แล้วคลิก Create Note ใส่ Code ต่อไปนี้ลงไป ด้านขวามือบน จะมีรูปเฟือง ให้คลิก แล้วเลือก Insert New แล้วใส่ข้อความนี้ลงไป จากนั้นคลิก Run all paragraphs ผลที่ได้ ตอนต่อไปจะมาอธิบายวิธีการเขียนคำสั่งครับ

Read More »

เตือนภัยออนไลน์วันนี้

วันนี้ได้รับรายงานว่า นักศึกษาของมหาวิทยาลัย โดนหลอกเอารหัสผ่านที่ใช้สำหรับจัดการระบบทะเบียนไป โดนคนร้าย ไปสร้าง LINE แล้วปลอมตัวเป็น “อาจารย์ที่ปรึกษา” นักศึกษาก็พาซื่อ … ให้ไป ปรากฏว่า คนร้าย เข้าไปในระบบทะเบียน แล้วไป Drop ทุกวิชาทิ้งหมด …. เมื่อตรวจสอบก็พบว่า ใช้ Account ของนักศึกษาเข้ามาเอง แต่เจ้าตัวไม่ได้ทำ และไม่ใช่รายเดียว เช้านี้มีมา 2 รายซ้อน >> ในทางคดี ก็ต้องว่ากันไป << แต่ที่อยากจะนำเสนอคือ ในฐานะที่เราทุกคนทุกวันนี้เป็น Net Citizen หรือ พลเมืองอินเตอร์เน็ต กันโดยปริยายอยู่แล้ว เรื่องนี้เป็น Common Sense ที่จะต้องเก็บรหัสผ่าน เป็นความลับ ไม่บอกใครเด็ดขาด จึงขอแจ้งเตือน ทั้งคนที่เป็น นักศึกษา บุคลากร และ บุคคลทั่วไป ถึง Common Sense พื้นๆข้อแรกคือ *** ไม่ว่ากรณีใดๆ ไม่ว่าจะเป็นทาง Email/LINE/Facebook/Twitter/Whatsapp/WeChat/SMS/โทรศัพท์/ช่องทางใดๆก็ตาม ทั้งที่กล่าวถึงแล้วยังไม่กล่าวถึง ต้องไม่ เปิดเผย รหัสผ่านของบริการใดๆก็ตามให้กับบุคคลอื่นเด็ดขาด ไม่ว่าจะด้วยเหตุผลใดๆก็ตาม *** ครับ

Read More »