ข้อเสนอการออกรุ่นใหญ่ของ Ubuntu อาจทำให้ต้องใช้แต่ LTS สำหรับงานด้าน Server

จากข่าว “Ubuntu พิจารณาปรับแผนออกรุ่นใหญ่เฉพาะ LTS และออกรุ่นย่อยให้ถี่กว่าเดิม

โดยส่วนตัวก็ถือว่าดีในมุนของผู้ใช้งานทั่วไปมากกว่างานระบบ Server ที่ผมทำงานอยู่นะ

คือส่วนตัวใช้ Long Term Support (LTS) สำหรับงานด้าน Server เป็นหลัก และนานๆ ครั้งจะใช้ Interim Release (IR) กับงาน Server เพราะ LTS นั้นช่วยให้เราสามารถรัน App ที่พัฒนาได้ครบรอบ Software Support ได้ 18 เดือนแน่ๆ ซึ่งอย่างน้อยๆ ก็ไม่ทำให้ระบบต้องแก้ไขเรื่องเข้ากันไม่ได้กับระบบ OS โดยรวม แต่ถ้าต่อไปเป็น Rolling Release แทน Interim Release ก็อาจจะใช้แต่ LTS ล้วนๆ แทน ซึ่งก็ไม่แน่นะ ผมอาจจะเปลี่ยนใจมาใช้ Debian แทนก็ได้ เพราะ Rolling Release สำหรับงาน Server ดูจะเสี่ยงเกินไปหน่อย ขนาด 18 – 24 เดือนเปลี่ยน System ทีคนทำระบบหลายๆ คนยังร้องเลย ><”

แก้ปัญหา gnome-settings-daemon โหลด cpu time 100%!

เป็น bug ใน Ubuntu 12.04.1 ลงมา (น่าจะรวมถึง 12.04 ด้วย) อยู่ใน Bug report ที่ [keyboard]: gnome-settings-daemon consumes 100% cpu (and blinking numlock) คาดว่าจะแก้ไขใน Ubuntu 12.04.2

เป็นปัญหาของตัว gnome-settings-daemon มันพยายามจะตั้งค่า numlock ให้ใช้งานได้ตลอดเวลาจนไปโหลดระบบ

ปัญหาจะพบเพื่อเปิดใช้งานพวก Remote desktop เป็นหลัก เช่น Remote desktop sharing (vino) ของตัว Ubuntu เองผ่าน VNC จากใน Bug report มีการโพสแก้ไขปัญหาเฉพาะหน้า คือไปปิดการจำ state ของ numlock ผ่าน dconf-tools

วิธีก็ทำตามด้านล่างนี้ได้เลย
1. ไปที่ Terminal แล้ว ติดตั้ง dconf-tools แล้วเรียก dconf-editor

  1. $ sudo apt-get install dconf-tools
  2. $ dconf-editor

2. เข้าไปหาในส่วนของ org.gnome.settings-daemon.peripherals.keyboard

3. ติ้กเครื่องหมายถูกออกจากตัวเลือก “remember-numlock-state” แล้ว restart เครื่อง ก็เสร็จเรียบร้อย

มารู้จักกับ node.js และการติดตั้ง node.js

Node.js เป็นการใช้ V8 JavaScript engine ของ Google ที่ open source มาสร้าง Web Server ที่ใช้ภาษา JavaScript ในการพัฒนา Web App เพื่อจุดประสงค์ Web App ที่ได้นั้นมีความสามารถในลักษณะ event-driven I/O เป็นหลัก ซึ่งเป็นลักษณะที่เมื่อมีการเปลี่ยนแปลงข้อมูลที่ฝั่ง Server ข้อมูลที่ฝั่ง Client ก็จะเปลี่ยนแปลงไปโดยที่ฝั่ง Client ไม่ต้อง Reload ข้อมูลใหม่แต่อย่างใด หรืออาจจะเรียกว่า Ajax Push (Reverse Ajax) ก็ได้

Node.js นั้นมีความง่ายและพัฒนาในการนำไปใช้งานไม่ยากนัก ซึ่งการใช้ Node.js ต้องลงแยกจาก Web Server หลักของระบบอย่าง Apache หรือ lighttpd เพราะใช้ลักษณะการทำงานไม่เหมือนกัน แต่ถ้าต้องการที่จะใช้ผ่าน port 80 ก็สามารถทำได้ถ้าเป็น Apache โดยผ่าน mod_proxy แล้ว reverse port ต่อไปได้ ตัวอย่างเช่น

[apache;localhost:80/api] -> [node.js;127.0.0.1:8000]

ในการติดตั้งนี้ผมอ้างอิงการติดตั้งบน Ubuntu Server 10.04 เป็นหลัก โดยการติดตั้งนั้นจะมีการลง package ที่จำเป็นสำหรับการพัฒนาในอนาคต เช่นรองรับ MySQL, Redis, Memcached, WebSocket, และการทำงานร่วมกับ PHP ผ่าน Dnode เป็นต้นครับ

Read more

ย้าย datadir ของ MySQL ใน Ubuntu Server 8.10

พอได้ Server ใหม่ของ ThaiThinkPad มาแล้วกำลัง Tuning ตัวระบบอยู่ สิ่งที่ต้องทำคือการย้าย datadir ของ MySQL ออกมาอีก I/O แยกจาก H/D หลัก ซึ่งตัว Server ผมมี H/D อยู่สองลูกครับ

วิธีการทำก็ไม่ยากครับ แต่มึนตอนแรกตรง AppArmor เนี่ยแหละ เพราะตอนผมทำบน Windows หรือบน CentOS มันไม่มีปัญหานี้ พอมา Ubuntu Server นี่มันมีส่วนนี้เลยต้องแก้ไขส่วนนี้เพิ่มเติมครับ เรามาเริ่มกันเลย

ปิด Service MySQL

  1. $ sudo /etc/init.d/mysql stop
  2. * Stopping MySQL database server mysqld [ OK ]

ทำการ copy แบบ archive (คงสภาพของ owner/mode ของไฟล์) ไปไว้ที่ H/D นึง ผม mount ไว้ที่ /datasvr (ย้ายจาก /var/lib/mysql ไป /datasvr)

  1. $ sudo cp -a /var/lib/mysql /datasvr

ทำการ Backup ตัวเก่าไว้ก่อนด้วยการเปลี่ยนชื่อ dir ไว้เฉย ๆ กันเหนี่ยวไว้ก่อน

  1. $ sudo mv /var/lib/mysql /var/lib/mysqlbk

ทำการ change owner เป็น group mysql และ user mysql สักหน่อยเผื่อไว้

  1. $ sudo chown -R mysql:mysql /datasvr

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

  1. $ sudo nano /etc/mysql/my.conf

แก้ไขค่าของ

  1. datadir = /var/lib/mysql

เป็น

  1. datadir = /datasvr/mysql

ถ้าใช้ Ubuntu 8.10 Server แก้ไขตัว Application Armor เสียด้วย โดยไปที่

  1. $ sudo nano /etc/apparmor.d/usr.sbin.mysqld

โดยแทรกข้อมูลด้านล่างลงไป โดยเปลีย่น /datasvr/mysql/ เป็น path ของ datadir ที่เราต้องการย้ายไป

  1. /datasvr/mysql/ r,
  2. /datasvr/mysql/** rwk,

แล้ว restart Service AppArmor

  1. sudo /etc/init.d/apparmor restart

แล้วก็เปิด Service MySQL ทำงานต่อไปได้เลย

  1. $sudo /etc/init.d/mysql start
  2. * Starting MySQL database server mysqld [ OK ]

แค่นี้ก็เสร็จสิ้นกรรมวิธีการย้ายข้อมูลแล้ว คราวนี้ก็แบ่ง ๆ โหลด I/O ไปคนละ H/D ครับ