วันอังคารที่ 26 พฤศจิกายน พ.ศ. 2556

มาเล่น Ubuntu MaaS กัน

MaaS หรือ Metal as a Service เป็นเครื่องมือจัดการเครื่องเซิร์ฟเวอร์ในการ provisioning, config และ deploy application โดยใช้แนวคิดของ Cloud Computing มาประยุกใช้กับเครื่องเซิร์ฟเวอร์จริงๆ ซึ่งเป็นแนวคิดแบบใหม่ในการจัดการเซิร์ฟเวอร์เลยทีเดียว MaaS สามารถใช้งานร่วมกับ Juju ได้ทำให้คุณสามารถใช้ Charm ในการ config และ deploy application ได้ง่ายๆ เลยทีเดียว



MaaS มีมาตั้งแต่ Ubuntu 12.04 LTS และหลังจากผมเป็นหนูทดลองมา 6 รุ่น 12.04, 12.04.1, 12.04.2. 12.03, 12.10 และ 13.04 ดูเหมือนว่ารุ่น 13.10 มีความสเถียรมากขึ้น และ Juju ก็รุ่นสำหรับ Mac OSX และ Windows แล้วและทำงานได้ดีขึ้นก็เลยได้โอกาสกลับมาเล่น MaaS อีกรอบ (รอบที่ 7)



โครงสร้างเน็ตเวิร์คที่ผมใช้เป็นแบบนี้ เอาคร่าวๆ เราจะมี MaaS Controller + Region 1 ตัว และ Node อีก X ตัว ผมหาได้แค่ 3 เครื่องเอามาทดลองจากแผนภาพผมพยายามแยก เน็ตเวิร์คออกจากเน็ตเวอร์ภายในเพราะเราจะใช้วิธีการ PXE Boot เพื่อ register node, config และติดตั้ง Ubuntu Server เพื่อรอใช้งานร่วมกับ Juju





เริ่มที่เครื่อง MaaS Controller ก่อน NIC มี 2 ขา ขานอกต่อออกเน็ตได้และอยู่ในวงเดียวกับเครือข่ายภายใน ส่วนอีกขาต่อกับเครื่อง Node 3 เครื่อง ใช้ Ubuntu 13.10 Server amd64 ติดตั้ง MaaS Controller ดังนี้ เมื่อบูตเครื่องเลือก Multiple Server Install with MAAS





รอโปรแกรมอ่านแผ่นตอบคำถามโน่นนี่จากนั้นตัวติดตั้งจะถามว่าจะติดตั้งเครื่องนี้จาก MaaS Server หรือติดตั้ง MaaS Server ใหม่ลงเครื่องนี้ ก็เลือกอันที่ 2 ครับ





ติดตั้งไปเรื่อยๆ เครื่องจะแจ้งหมายเลข ip address และ service endpoint ของ api ให้ตรวจสอบและติดตั้งให้เสร็จ จากนั้นให้ config เน็ตเวิร์คขาในให้เป็น static ip แล้วสร้าง superuser ให้กับ MaaS ดังนี้



sudo maas createsuperuser



จากนั้นติดตั้ง maas-dhcp และ maas-dns เพื่อให้ MaaS Server เป็นตัวจัดการเรื่อง dhcp และให้เครื่อง Node boot ผ่าน network เข้ามา เปิดเบราเซอร์ไปที่ Web Console ของ MaaS Server (172.16.29.147) ดังนี้ http://172.16.29.147/MAAS ใส่ username, password ตามที่ได้ตั้งค่าเอาไว้ เปิดไปที่ user preference เพิ่ม ssh key ให้เรียบร้อย





เปิดไปที่ Setting กำหนด รุ่นของ Ubuntu ที่ต้องการใช้งาน แนะนำให้เลือก Ubuntu 12.04 เอาไว้เนื่องจาก Charm ส่วนใหญ่อิง Ubuntu 12.04 ครับ อ้ออย่าลืมกำหนด repo ใกล้บ้านไว้ด้วย





ตั้งค่า Cluster Controller เพิ่ม NIC ขาในให้คุม DHCP







จากนั้นมาตั้งค่า config ในไฟล์ /etc/maas/importpxefiles ดังนี้



RELEASES="precise saucy"



ARCHES="i386/generic amd64/generic"



LOCALE="en_US"



IMPORT_EPHEMERALS=1



และ ในไฟล์ /etc/maas/import_ephemerals ดังนี้



DATA_DIR="/var/lib/maas/ephemeral"



RELEASES="precise saucy"



ARCHES="i386/generic amd64/generic"



สาเหตุที่ต้องมาแก้ไขไฟล์ทั้ง 2 เพื่อกำหนดรุ่นของ Ubuntu และ architecture ที่เราต้องการจริงๆ ต้องการ precise, saucy ทั้ง i386 และ amd64 จากนั้นใช้คำสั่ง



maas-import-pxe-files



เพื่อสั่งให้ download ไฟล์สำหรับใช้ boot ผ่าน network หรือที่เรียกว่า pxe boot เมื่อดาวน์โหลดไฟล์สำหรับ boot เสร็จโปรแกรมจะดาวน์โหลด ephemeral image ต่อ ประมาณ 1.2GB ได้แก่ precise i386, amd64 และ saucy i386, amd64 ถ้าใช้เฉพาะ amd64 ก็ไปแก้ config ข้างต้นได้ครับ รอจนดาวน์โหลดเสร็จ



จากนั้นให้คุณทะยอยเปิดเครื่อง Node ทีละเครื่องแล้วสั่งให้ Boot ผ่าน LAN ถ้าจะให้ดีตั้งค่า boot order ไว้อันดับแรกๆ เมื่อเครื่อง Node boot ก็จะได้รับ IP Addres ที่เครื่อง MaaS Controler จ่ายมาพร้อม Boot ผ่านเน็ตเวิร์ค สถานะของ Node เมื่อ boot และ config ค่าเบื้องต้นเสร็จเราจะเรียกว่า Commisioning เมื่อผ่านสถานะนี้ จะเข้าสถานะ Ready และจะมีข้อมูลของ Node อยู่ในหน้า Node จากนั้นเครื่อง Node จะ Sleep ในกรณีที่เครื่อง Node สนับสนุน Wake on LAN เราจะสามารถปลุกเครื่อง Node ได้เมื่อสั่ง Start ที่หน้า Web Console หรือสั่ง Juju bootstrap ถ้าเครื่อง Node ไม่มีคุณสมบัติที่ว่านี้ ต้องเปิดเครื่องเองอีกรอบเพื่อเข้าสู่สถานะ Ready อีกครั้ง คุณจะพบว่าเครื่อง Node ติดตั้ง Ubuntu Server เรียบร้อยหมดแล้ว





ลืมบอกไปว่าถ้าเราใช้ pxe boot แบบปกติ MaaS จะติดตั้ง Ubuntu Server ผ่าน net install ซึ่งจะช้ามาก ให้เรากำหนดให้ใช้ ephemeral image เป็นตัวติดตั้งจะเร็วกว่ามาก วิธีการง่ายๆ ก็คือไปหน้ารายการ Node แล้วเลือกทั้งหมด แล้วกำหนดให้ใช้ fast installer จากนั้น reboot เครื่อง Node อีกรอบ คราวนี้็ MaaS จะติดตั้ง Ubuntu Server ให้เร็วมากขึ้น กลับไปดูหน้า Web Console เราจะพบว่าเรามี 1 Node แล้ว ทีนี้ทะยอย Boot เครื่อง Node มาเรื่อยๆ จนครบ





จากนั้นก็ติดตั้ง Juju ตามปกติ ตั้งค่าใช้ MaaS ในไฟล์ ~/.juju/environments.yaml




  • maas-server เอาค่า IP Addres หรือ FQDN มาใส่

  • maas-oauth เอา MaaS Key มาใส่

  • admin-secret กำหนดรหัสผ่านที่คุณจำได้ เอาไว้ config application ตอน deploy



จากนั้นใช้คำสั่ง



juju switch maas



เพื่อเปลี่ยนไปใช้ config ของ MaaS จากนั้นก็ใช้คำสั่ง bootstrap ตามปกติดังนี้



juju bootstrap



ให้รอสักพัก Juju จะไปหา Node สักเครื่องแล้วติดตั้ง MongoDB เพื่อใช้เก็บค่าสถานะของ node ที่อยู่ใน cluster ถ้ากลับไปดูที่หน้า Web Console เราจะพบว่า Juju ยึดเครื่องเราไปแล้ว 1 ตัว





เมื่อใช้คำสั่ง juju status ก็จะพบว่ามี Node พร้อมทำงานแล้ว





จากนั้นก็ใช้ Juju deploy application ตามปรกติ ถ้าใช้ command line แล้วดูยุ่งยากก็สามารถติดตั้ง Juju GUI เอาไว้ใช้งานได้ครับ :)


วันอังคารที่ 19 พฤศจิกายน พ.ศ. 2556

มาเล่น Docker กัน

เขียนเรื่อง Docker คร่าวๆ ไว้เมื่อเดือนกรกฎาคมที่ผ่านมา ไม่ได้แนะนำการใช้งาน ครั้งนี้มาลงในรายละเอียดกันว่าจะเล่นอะไรได้บ้าง เนื้อหาของจะครอบคลุมดังนี้




  • ติดตั้ง Docker

  • ใช้งาน Docker เบื้องต้น

  • สร้าง Image จาก Dockerfile

  • ใช้ Hipache ทำ redirect + loadbalance ไปยัง Docker container



มาเริ่มจากการติดตั้งกันก่อน ใช้ Ubuntu 12.04 LTS เหมือนเดิม อัพเกรดให้เรียบร้อย จากนั้นมาติดตั้ง Docker กัน Docker ต้องใช้ kernel ที่มี cgroup ซึ่งใน Ubuntu 12.04 ในส่วนของ kernel ยังไม่มี cgroup เพราะฉะนั้นต้องอัพเกรด kernel และ reboot เครื่อง :)





apt-get update



apt-get upgrade



sudo apt-get install linux-image-generic-lts-raring linux-headers-generic-lts-raring



sudo reboot



หลังจาก reboot เครื่องเราก็จะได้ kernel ใหม่กันแล้ว มาเริ่มติดตั้ง Docker กันต่อได้



sudo sh -c "wget -qO- https://get.docker.io/gpg | apt-key add -"



sudo sh -c "echo deb http://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list"



sudo apt-get update



sudo apt-get install lxc-docker



จากนั้น กำหนดให้ผู้ใช้อยู่ในกลุ่ม docker ดังนี้



sudo gpasswd -a <username> docker



sudo service docker restart



มาทดลองกัน โดยใช้คำสั่ง



docker run -i -t ubuntu /bin/bash



คุณจะพบว่า Docker จะทยอยดาวน์โหลด image และสั่ง run bash เป็น process หนึ่ง แล้ว Docker ก็จะพาคุณเข้าไปยัง container จะได้ shell prompt ดังนี้





คุณสามารถใช้คำสั่ง Linux ปกติได้ใน container โดยไม่มีผลกระทบใดๆ กับเครื่อง host ที่เราทำงานอยู่ มาลองคำสั่งที่ต้องใช้งานกันประจำกันก่อนดีกว่า ตอนนี้ docker run container จาก base image ที่ชื่อ ubuntu ให้คุณเปิด terminal ขึ้นมาอีก 1 หน้าต่างแล้วใช้คำสั่ง



docker ps



จะได้ผลลัพท์ออกมาแบบนี้





docker ps เป็นคำสั่งที่เอาไว้แสดงรายการ container ที่ทำงานอยู่ ในกรณีนี้เรามี container 1 ตัวที่กำลังทำงาน โดยกำลังทำงานโดยคำสั่ง /bin/bash นั่นเอง การจัดการกับ container ก็จะเหมือนกับการจัดการกับ virtual machine คุณสามารถสั่ง start, stop, run, kill ได้ด้วย



การใช้งาน Docker เราจะต้องมี Docker image ซึ่งการที่จะได้ image มานั้นมี 3 ช่องทางคือ




  1. สร้าง image จาก Dockerfile

  2. สั่ง pull, run เพื่อดาวน์โหลด image จาก Docker index

  3. สร้างจาก image ที่มีอยู่เดิม



เราจะเล่นวิธีง่ายๆ กันก่อน ลองใช้คำสั่ง docker search เพื่อค้นหา image ที่ต้องการ



docker search



ผลลัพท์ที่ได้ออกมาแบบนี้





เราจะพบว่ามี image ที่เกี่ยวข้องกับ wordpress เยอะมาก แลัวจะเลือกตัวไหนดี ? คำตอบง่ายๆ ก็คือเลือกตัวที่มี ดาวเยอะๆ และ TRUSTED ครับ ถ้าอยากดูรายละเอียดก็สามารถดูจากหน้าเว็บได้ที่ http://index.docker.io ครับ





ก็ลองค้นหา image กันได้ เมื่อได้ image แล้ว สั่งให้ ​download image wordpress มาไว้ที่เครื่องเราดังนี้



docker pull jbfink/wordpress





ลองสั่ง docker images เพื่อดูว่าเรามี image อะไรบ้าง



docker images





จะพบว่าเรามี image wordpress มาแล้ว ให้ลองสั่ง run พร้อมระบุเลข port ที่ต้องการ map เข้าไปใน container



docker run -d -p 80 -p 22 jbfink/wordpress





Docker จะคืน shell prompt มาให้เราพร้อม ID ของ container ลองใช้คำสั่ง logs เพื่อดูว่า container ทำงานอะไรไปแล้วบ้าง



docker logs 4216aa1cba8c





ในส่วน ID นี้สามารถระบุแบบเต็มหรือแบบย่อโดยพิมพ์ 3-4 ตัวอักษรแรกก็ได้ image นี้จะ random password ของ user, mysql root ฯลฯ มาให้ให้ลองดูจาก log เมื่อ container run เสร็จแล้วเราจะได้ port เลขยาวๆ map ไปยัง port ต่างๆ ของ container ให้ลองใช้คำสั่ง docker ps ดู





ตามรายละเอียด คุณสามารถใช้คำสั่ง ssh เข้าไปใน container ได้โดยใช้ port 49153, Web Server ทำงานบน port 49154 ให้ลองเข้าเว็บตาม port ที่ Docker ระบุมาให้ ก็จะเข้าสู่หน้าติดตั้ง Wordpress ดังนี้ ตั้งค่านิดหน่อยคุณก็จะได้ Wordpress ใช้งานแล้ว :)





เอาพอสนุกสนาน ทีนี้มาลองสร้าง image กันบ้าง อย่างที่บอกข้างต้น เรามีวิธีการสร้าง image อยู่หลายวิธี แต่เบื้องหลังของการทำ image จะเป็นการสร้าง file system ซ้อนกันเป็น layer ดังนั้นเพื่อความสะดวก ตรวจสอบได้ง่าย ผมแนะนำให้สร้างจาก Dockerfile ครับ Dockerfile เป็น config เบื้องต้นสำหรับ image ที่เราต้องการสร้าง ซึ่งเราไม่จำเป็นต้องสร้างจาก base image ที่มีทั้ง service และ application เราจะใช้หลักการของ Docker ในเรื่อง filesystem layer เป็นตัวช่วย โดยดึง base image ที่เป็นระบบปฏิบัติการต่างๆ เอามาต่อยอดโดยการติดตั้ง service ที่เราต้องการลงไป ตั้งค่า config ต่างๆ และ expose port สำหรับเปิดให้ใช้งาน โครงสร้าง Dockerfile แบบง่ายๆ มีดังนี้




  • FROM ระบุว่า image จาก base image ใด

  • MAINTAINER ระบุชื่อของผู้ดูแล image นี้

  • RUN สั่งให้ run คำสั่งที่ต้องการ เช่น apt-get install xxx และ commit image ทุกๆ ครั้งที่ใช้คำสั่งนี้

  • EXPOSE เปิด port ที่ต้องการใช้งาน

  • CMD ใช้คำสั่งบน command line



เพื่อความเข้าใจ มาลงมือสร้าง image กันดีกว่า ให้ clone project จาก github.com/anoochit/docker-apache2 ดังนี้



git clone git@github.com:anoochit/docker-apache2.git



จากนั้นสั่ง build image ดังนี้



cd docker-apache2



docker build -t apache2 .



รอไปเรื่อยๆ จน build เสร็จ คุณจะได้ image ID ยาวๆ มา 1 ตัว







ลองใช้คำสั่ง docker images ดูก็จะพบว่าคุณมี image apache2 เพิ่มขึ้นมาแล้ว





ลองสั่ง run ดูครับ



docker run -d -p 80 apache2





ทีนี้ลองเปิด browser ดูครับว่า apache ทำงานมั๊ย อย่าลืมระบุ port นะครับ เราก็จะได้หน้าเว็บเปล่าๆ มาดังนี้





มาลองเล่นอะไรสนุกๆ กันอีกนิดหน่อย เราสามารถระบุ part ของเครื่อง host เพื่อ map ไปยัง directory ภายใน container ได้ ใน project ที่ clone มาจะมีไดเรคทอรี www อยู่ เอามาเล่นได้เลยครับ



WWW_DIR=`pwd`\www



docker run -d -p 80 -v $WWW_DIR:/var/www apache2



ทีนี้ลองเปิด browser ใหม่ เราจะได้หน้าเว็บอย่างนี้





มาลองเล่นอีกอย่างหนึ่ง กรณีที่คุณสร้าง image แล้วต้องการนำไปเผยแพร่บน Docker Index สามารถทำได้ 2 วิธีคือ




  • สั่ง push image

  • สั่งสร้างจาก github



ซึ่งทั้ง 2 กรณีนี้จะต้องเป็นสมาชิกของ Docker Index ก่อน ส่วนสร้าง image จาก GitHub สามารถเพิ่ม project ของคุณผ่านหน้าเว็บ Docker Index ได้เลย ซึ่งง่ายมาก แต่ในกรณีที่เราต้องการใช้งาน Docker Registry ของตัวเอง วิธีการง่ายๆ ดังนี้





วิธีการง่ายๆ มีแค่นี้ ผมได้ตั้ง Docker Registry ของผมเองชื่อ registry.redex.net ทำงานบน port 5000 (default) สามารถสั่ง push และ pull image ได้ง่ายๆ ดังนี้ การ push image ไปยัง registry ให้ tag image id ที่คุณต้องการก่อน จากนั้นค่อยสั่ง push



docker tag 850607808486 registry.redex.net:5000/myweb



docker push registry.redex.net:5000/myweb



กรณีที่คุณอยู่ Host อื่นที่มี Docker ติดตั้งอยู่ คุณก็สามารถ pull image จาก Docker Registry มาใช้งานได้ ดังนี้



docker pull registry.redex.net:5000/myweb





ถ้าชื่อ image มันยาวไปก็สั่ง tag จาก image ID ได้ จากนั้นก็สั่ง run ได้ตามปกติ :)



docker tag a6f2023aa5f9 myweb



docker run -d -p 80 -p 22 myweb



มาลองทำ Load Balance กับ container แบบง่ายๆ กันดูบ้าง ที่เครื่อง host ติดตั้ง hipache และ redis server ให้เรียบร้อย หรือจะใช้ docker ก็ได้ครับ



docker run -d -p 6379:6379 -p 80:80 samalba:hipache supervisord -n



จากนั้นตั้งค่า Hipache ผ่าน Redis



redis-cli -h 172.17.42.1 -p 6379 rpush frontend:www.redex.net myweb



สั่ง run container เพิ่มสัก 2-3 ตัว ด้วยคำสั่ง



ID=$(docker run -d -p 80 -p 22 myweb)



PORT=$(sudo docker port $ID 80)



redis-cli -h 172.17.42.1 -p 6379 rpush frontend:www.redex.net http://172.17.42.1:$PORT



คำสั่งข้างต้น run container หา port ที่ผูกกับ port 80 แล้วลงทะเบียนใน redis จากนั้นใช้คำสั่ง



redis-cli -h 172.17.42.1 -p 6379 lrange frontend:www.redex.net 0 -1





ทีนี้มาลองทดสอบ Hipapche กัน อย่าลืมกำหนด DNS Record ให้เป็นแบบ Wildcard เพื่อให้ Hipache ทำ redirect ไปยังเว็บที่ถูกต้องให้ ให้ทดลองเปิด browser ดูแล้วลอง refresh หลายๆ รอบ จะได้ผลลัพท์ดังนี้









จะเห็นว่า Hipache พยายามทำ Load Balance ให้ด้วย สำหรับท่านที่สนใจ Hipache ก็หาข้อมูลเพิ่มเติมได้ที่ dotCloud


วันศุกร์ที่ 15 พฤศจิกายน พ.ศ. 2556

พลาดไม่ได้! วันรวมพลคนใช้จูมล่าในประเทศไทยครั้งที่ 6 Joomla!Day™ Bangkok 2013

Joomla!Day™ Bangkok 2013 งานสัมมนาที่ท่านจะได้พบกับนักพัฒนา Joomla! ตัวจริงจากต่างประเทศและในประเทศ ที่จะมาแนะนำ Joomla! เวอร์ชันล่าสุด, ระบบเสริมต่างๆ และ Showcase การใช้งาน Joomla! หลากหลายรูปแบบ นอกจากนี้ผู้จัดงานยังได้จัดหาวิทยากร ที่มีความเชี่ยวชาญมากมาย อาทิ การบริหารจัดการ Social Network โดยคุณอภิศิลป์ จาก Pantip.com, คุณณัฐกร ผู้เชี่ยวชาญ SEO/SEM , คุณศิระ (ฮันท์) นักพัฒนาระดับแถวหน้าของวงการ ที่จะมาพูดถึงการพัฒนาด้วย Node.js , Mr.Sam Moffatt ที่มาเป็น Speaker กับเราทุกครั้ง ปีนี้เขาจะมาเล่าให้ฟังว่าการสร้าง Infrastructure เพื่อรอง Mobile Application ขนาดใหญ่ ด้วย Open Source นั้นเขาใช้อะไรบ้าง , มาตรฐาน WCAG 2.0 ที่เว็บภาครัฐจะต้องทำให้รองรับ รวมถึง Web Security และเทคโนโลยีใหม่ๆ ในอนาคตอีกมากมาย



วิทยากรมีใครบ้าง




  • Mr.Sam Moffatt Joomla! Production Leadership Team and Development Coordinator - Joomla.org (วิทยากรจากประเทศ สหรัฐอเมริกา)

  • Mr. Emmanuel Danan FLEXIcontent Free CCK for Joomla lead developer (วิทยากรจากประเทศ ฝรั่งเศส)

  • Mr. Mark Lee StackIdea.com (วิทยากรจากประเทศ มาเลเซีย)

  • คุณอัครวุฒิ ตำราเรียง นายกสมาคมศึกษาและพัฒนาโอเพ่นซอร์ส (OSEDA) / Joomla Bug Squad - Joomla.org

  • คุณศิวัฒน์ เชาวรียวงษ์ นายกสมาคมโฆษณาดิจิตอลไทย (DAAT)

  • คุณอภิศิลป์ ตรุงกานนท์ นายกสมาคมผู้ดูแลเว็บไทย (TWA)

  • คุณศิระ สัจจินานนท์ CTO & Co-fouder Jitta.com and Managing Director Webiz!

  • คุณณัฐกร รัตนชัยสิทธิ์ Managing Director Predictive Co.,Ltd.

  • คุณกิติศักดิ์ จิรวรรณกูล Information Security Specialist สำนักงานรัฐบาลอิเล็กทรอนิกส์ (องค์การมหาชน) (สรอ)

  • คุณชัยวุฒิ พรหมบุตร (มาสเตอร์อึ่ง) ผู้จัดการฝ่ายออกแบบและพัฒนา สถาบัน EWTC

  • คุณศุภชัย แต่สกุล ผู้จัดการโครงการอาวุโส บ.มาร์เวลิค เอ็นจิ้น จก./ Joomla Translation Team - Joomla.org

  • คุณสณาวิน ติณสุวรรณ์ Product Manager บ.มาร์เวลิค เอ็นจิ้น จก. / Joomla Bug Squad - Joomla.org

  • และวิทยารับเชิญอีกมากมาย



ค่าใช้จ่ายเท่าไรและจะได้รับอะไรบ้าง



ค่าใช้จ่ายสำหรับการเข้าร่วมงาน




  • สำหรับผู้ชำระเงินภายในวันที่ 10 ตุลาคม - 31 ตุลาคม 2556 ราคาพิเศษ 790 บาท

  • สำหรับผู้ชำระเงินภายในวันที่ 1 พฤศจิกายน - 17 พฤศจิกายน 2556 ราคา 890 บาท

  • สำหรับผู้ชำระเงินภายในวันที่ 18 พฤศจิกายน 2556 เป็นต้นไป ราคา 990 บาท



โดยจะได้รับ




  • สิทธิ์ในการรับฟังสัมมนาจากวิทยากรผู้ทรงคุณวุฒิ ทั้ง 2 วัน

  • เสื้อยืดสุดเท่ สกรีนโลโก้จูมล่า (ลายลิขสิทธิ์ของแท้) ฟรี 1 ตัว (สำหรับผู้ชำระเงินภายในวันที่ 12 พฤศจิกายน 2556 รับสิทธิ์สามารถเลือกไซส์เสื้อได้)

  • อาหารกลางวัน 2 มื้อ , 4 Coffee Break

  • สิทธิ์ในการร่วมชิงรางวัลในงาน



ลงทะเบียนอย่างไร




  • ลงทะเบียนออนไลน์ที่ http://www.joomladay.in.th/th/registration

  • ลงทะเบียนทางโทรศัพท์ ที่หมายเลข 02 7171120-1

  • ลงทะเบียนทางอีเมล์ โดยแจ้ง ชื่อ ที่อยู่ และเบอร์ติดต่อกลับ ส่งมาที่ info [at] Joomladay.in.th



ที่มา - Joomla Corner


วันพุธที่ 13 พฤศจิกายน พ.ศ. 2556

มาติดตั้ง OpenShift Origin PaaS เล่นกัน

OpenShift เป็น Platform as a Service พัฒนาโดย RedHat ซึ่งนำแนวคิดการพัฒนา PaaS โดยไม่พึ่งพาการทำ Multi Tenant โดยใช้ VM แต่ใช้ Kernel Control Group, Namespace และ SELinux เป็นตัวแบ่ง Tenant ให้แต่ละ Application ทำงานแทนการใช้ VM ทำให้โครงสร้างของ OpenShift แตกต่างจาก PaaS ตัวอื่นๆ อย่างชัดเจน OpenShift ใช้ Gear แทน Application ของผู้ใช้ ซึ่งใน 1 Gear จะมีส่วนประกอบไปด้วย Code ของ Application, Git Repository, Application Environment และ Cargtride ที่เป็น Application Runtime, ฐานข้อมูล, Jenkins Server สำหรับทำ CI และ HA Proxy สำหรับทำ Load balance ระหว่าง Gear และรองรับการทำ Elastic Scale ผ่าน HA Proxy นอกจากนี้ยังสร้าง domain name จาก namespace ที่กำหนดให้โดยผู้ใช้ให้อีกด้วย ใครสนใจเรื่อง Architecture เข้าไปอ่านในเว็บ OpenShift กันได้



OpenShift แบ่งรุ่นบริการออกเป็น 3 รุ่น คือ




  • OpenShift Origin เป็นโอเพนซอร์สสามารถเข้าร่วมพัฒนาได้

  • OpenShift Enterprise เป็นรุ่น Enterprise ติดตั้งผ่าน RHEL Repository

  • OpenShift Online เป็นบริการออนไลน์บน openshift.com



OpenShift สามารถติดตั้งได้บน RedHat Enterprise Linux และ Fedora สำหรับ Linux Distribution อื่น เอา ไฟล์ spec+source ไป build package เอาเอง T_T



วิธีการติดตั้ง OpenShift ทำได้ 2 วิธี





ถ้าอยากลองเล่น OpenShift ก็สามารถลงทะเบียนเข้าใช้งานที่ OpenShift Online ได้ฟรี สำหรับการติดตั้งแบบง่ายๆ ก็คงหนีไม่พ้น Puppet ครั้งนี้ใช้ Fodora 19 ติดตั้งแบบ Command Line และ Developer Tools อ้อ ลืมบอกไปว่าเราจะติดตั้งแบบง่ายที่สุดคือมี broker+node+console ในเครื่องเดียวกัน ใครสนใจติดตั้งแบบอื่น ตามลิงค์ได้ที่ท้ายบทความ หลังจากติดตั้ง Fedora 19 แล้วก็ติดตั้ง Puppet ดังนี้



yum install -y --nogpgcheck http://yum.puppetlabs.com/puppetlabs-release-fedora-19.noarch.rpm



เนื่องจากเราจะใช้ mcollective และ activemq ของ OpenShift Origin ดังนั้นต้องไปตั้งค่า exclude ไว้ใน repo ของ puppet โดยแก้ไขไฟล์ /etc/yum.repo.d/puppetlabs.repo ใส่ค่า exclude=*mcollective* activemq ต่อท้ายทุกๆ repo ในไฟล์ puppetlabs.repo จากนั้นตั้งติดตั้ง puppet และเครื่องมือที่ต้องใช้



yum install -y puppet facter tar httpd-tools



จากนั้นติดตั้ง puppet module ดังนี้



puppet module install puppetlabs/ntp



puppet module install puppetlabs/stdlib



puppet module install openshift/openshift_origin



ติดตั้ง Bind และสร้าง TSIG Key



yum install -y bind



สร้าง TSIG Key ให้ domain ของคุณ ในกรณีนี้ใช้เป็น example.com ถ้าไม่ชอบก็สามารถเปลี่ยนเป็น domain ที่คุณต้องการได้



/usr/sbin/dnssec-keygen -a HMAC-MD5 -b 512 -n USER -r /dev/urandom -K /var/named example.com



cat /var/named/Kexample.com.*.key | awk '{print $8}'



คุณจะได้ค่า Key หน้าตาแปลกๆ แบบนี้ Mczfz277B5ykcPB4mAurZtZMhmXV6g== ให้จดเอาไว้ แล้วสร้าง config ชื่อ openshift_origin.pp ดาวน์โหลดจาก link ได้ครับ แก้ไข config ตามที่คุณต้องการ เช่น domain, bind key เป็นต้น ใน config ผมกำหนดให้ puppet ติดตั้ง Cartridge แค่ PHP, PHPMyAdmin, MariaDB และ HAProxy เพื่อความรวดเร็ว เมื่อได้ไฟล์ config กันแล้ว ก็สั่งให้ puppet ทำงานดังนี้



puppet apply --verbose openshift_origin.pp



ระหว่างนี้ก็นั่งรอครับ ประมาณครึ่งชั่วโมง T_T ถ้าไม่มี Error ตัวแดงๆ ก็เป็นอันใช้ได้ เมื่อติดตั้งเสร็จให้ reboot เครื่องแล้ว เปิด browser ไปที่ http://broker.example.com/console





OpenShift จะถาม username และ password ใส่ openshift, password จากนั้นก็ใช้งานตามปกติ



ลิงค์ที่น่าสนใจ




วันอาทิตย์ที่ 3 พฤศจิกายน พ.ศ. 2556

Jelly Bean มีส่วนแบ่งเวอร์ชันแอนดรอยด์เกินครึ่งแล้ว

กูเกิลเผยสถิติเวอร์ชันแอนดรอยด์รอบใหม่ (นับถึง 1 พฤศจิกายน) ล่าสุด Jelly Bean ทุกเวอร์ชันรวมกันมีส่วนแบ่งตลาดเกินครึ่งของแอนดรอยด์ทั้งหมดแล้ว




  • Jelly Bean 52.1%

  • Ice Cream Sandwich 19.8%

  • Honeycomb 0.1%

  • Gingerbread 26.3%

  • Froyo 1.7%



แต่ถ้าแตกเวอร์ชันย่อยของ Jelly Bean จะแบ่งได้เป็น 4.1 37.3%, 4.2 12.5%, 4.3 2.3%





ที่มา - Blognone