Wednesday, August 20, 2008

สร้าง Virtual Server ด้วย VirtualBox บน Ubuntu Hardy ตอน 4

จากตอนที่แล้วที่เราลงเซ็ต Bridge Network ให้เครื่อง host และ virtualbox แล้ว ตอนนี้เราสารมารถจะรีโมท ssh เข้าไปใช้งาน Virtual Machine ได้แล้วครับ ในที่นี้ Virtual Machine ผม IP 192.168.1.4 ถ้าจะดู IP ก็ให้ Login เข้าไปแล้วใช้คำสั่ง ifconfig ดูก็ได้ครับ
ifconfig

จากนั้นให้ลอกง ssh จากเครื่อง host ของเราเข้าไปได้โดยใช้คำสั่ง
ssh annomundi@192.168.1.4 

โดย annomundi เป็น username ที่ผมสร้างไว้ตอนลง Ubuntu server ในตอนที่ผ่านมา ก็ให้เลี่ยนเป็น username และ ip ของเครื่อง virtual machine ที่คุณกำลังใช้อยู่ครับ หลังจากใส่ password แล้ว เราก็พร้อมที่จะใช้งานเครื่อง Virtual Machine แล้วครับ แต่ก่อนอื่นเพื่อที่เราจะไม่ต้องคอยใส่ password ทุกครั้งที่ ssh ก็ให้ทำดังนี้ครับ ที่เครื่อง host ให้เราใช้คำสั่ง
ssh-keygen -t rsa

คำสั่งนี้จะสร้างไฟล์ id_rsa และ id_rsa.pub ในโฟลเดอร์ .ssh ตอนมันให้คีย์ passphrase ไม่ต้องใส่นะครับกด enter ผ่านเลย จากนั้นใช้คำสั่ง
scp ~/.ssh/id_rsa.pub annomundi@192.168.1.4:/home/annomundi

เป็นการก็อบปี้ ไฟล์ id_rsa.pub ไปที่เครื่อง virtual machine อย่าลืมเปลี่ยน annomundi และ ip เป็น username และ ip เครื่อง virtual machine ที่คุณใช้ด้วยนะครับ จากนั้นไปที่ virtual machine จะสั่งผ่าน ssh ที่เรารีโมทค้างไว้ก่อนหน้านี้ก็ได้ครับ โดยใช้คำสั่ง
mkdir ~/.ssh
mv ~/id_rsa.pub ~/.ssh/authorized_keys
chown -R annomundi:annomundi ~/.ssh
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

จากนั้นไปที่เครื่อง host แล้วของ ssh เข้ามาที่ virtual machine ถ้าไม่มีอะไรผิดพลาดเราจะสามารถ ssh เข้าไปได้โดยไม่ต้องใส่ password ทั้งนี้สำหรับการเซ็ตเครื่องเพื่อใช้งานจริงๆเราต้องมีการเซ็ต sshd config เพื่อความปลอดภัย แต่จะขอไม่กล่าวถึงในตอนนี้นะครับ ทีนี้ไปที่เครื่อง virtual machine เราจะทำการอัพเดท package list และอัพเกรดโปรแกรมต่างๆในเครื่องด้วยคำสั่ง
sudo aptitude update
sudo aptitude safe-upgrade
sudo aptitude full-upgrade

จากนั้นก็ลงโปรแกรมพื้นฐาน อย่างพวก gcc, make, patch และอื่นๆ เพราะจำเป็นต้องใช้งาน ให้ใช้คำสั่งดังนี้ครับ
sudo aptitude install build-essential

เสร็จแล้วตอนนี้เรามาปรับแต่งระบบกันอีกเล็กน้อย โดยแก้ไขไฟล์ ~/.bashrc
sudo chown annomundi:annomundi ~/.nano_history
nano ~/.bashrc

บรรทัดแรกจะเป็นการแก้สิทธิ์ของไฟล์ .nano_history กลับมาเป้นของเรา ในกรณีบางทีมันไปเป็นของ root แล้วเวลาเรา edit ไฟล์มันจะแจ้งเตือน permission denied หลังจากเปิดไฟล์ ~/.bashrc มาแล้วให้เพิ่มคำสั่งตามด้านล่างเข้าไปท้ายไฟล์
export PS1='\[\033[0;32m\]\u@\h\[\033[0;36m\] \w\[\033[00m\]: '
alias free="free -m"
alias nano="nano -w"

จากนั้นสั่ง
source ~/.bashrc

จะแสดง Prompt สวยงามขึ้น และการแสดงผลของคำสั่ง free จะแสดงหน่วยเป็น MB
ตอนนี้ก่อนที่เราจะลงโปรแกรม server ต่างๆ ซึ่งจะกล่าวถึงในตอนถัดไป เราจะมาดูวิธีการ Backup Virtual Machine กันก่อน ถ้าตามอ่านมาในตอนที่ 1 จะเห็นว่า Virual Machine ที่เรากำลังใช้งานในตอนนี้ ซึ่งลง Ubuntu Server นั้นอยู่บน Virtual Disk สำหรับในเครื่องผมจะคือไฟล์ ~/.VirtualBox/VDI/UbuntuServer.vdi คำสั่งสำหรับการ backup หรือ copy ให้ใช้คำสั่งดังนี้
VBoxManage clonevdi ~/.VirtualBox/VDI/UbuntuServer.vdi ~/.VirtualBox/VDI/UbuntuServer_Backup.vdi

จะเป็นการโคลน Image ไฟล์ (Virtual Disk) UbuntuServer.vdi ไปยัง UbuntuServer_Backup.vdi คำสั่งนี้จะใช้เวลาขึ้นกับขนาดของ virtual disk ที่เราสร้างไว้ตอนแรกครับ
การโคลน virtual disk image นี่ต้องปิด virtual machine ก่อนนะครับ

หลังจากเสร็จแล้วเราก็จะมี virtual disk เหมือนๆกัน 2 อัน จะใช้ตัวไหนบูตก็ได้ครับ วิธีก็คือไปที่ Window หลักของ VirtualBox ไปที่ File -> Virtual Disk Manager แล้วกดปุ่ม Add เลือก virtual disk ที่เราโคลนมาเมื่อครู่ ตามรูปด้านล่างครับ

กด Open และ Ok จากนั้นไปที่ Setting ไปที่ส่วน Harddisk ตามรูปด้านล่าง

จะเห็นว่าเราสามารถเลือกได้ว่าจะให้ Virtual Disk ตัวไหนมาต่อกับ IDE Primary Master ก็ให้ลองเลือกเอาตัวที่เราโคลนเมื่อครู่นี้ครับ แล้วลอง Start Virtual Machine ดูครับ

ที่ต้องกล่าวถึงการ backup ก็เพื่อเวลาเราลงโปรแกรมหรือคอนฟิกโปรแกรมแล้วมีปัญหาแก้ไขไม่ได้ จะได้โคลน backup กลับมา หรได้ ซึ่งในตอนนี้ก็ควร backup ไว้เลยครับ แต่ทีนี้บางคนอาจสงสัยว่าทำไมไม่ใช้คำสั่งก็อบปี้ นั่นก็เพราะมันจะใช้ไม่ได้ครับ ผมก็ไม่ทราบเหมือนกันว่าทำไม ^^ เอาเป็นว่าไว้ตอนถัดไปเราจะเริ่มลงโปรแกรม server ต่างๆกันครับ ตอนนี้ถ้าว่างๆก็ backup แล้วลองลงโปรแกรมลองเซ็ตคอนฟิกเล่นไปพลางๆก่อนก็ได้ครับ

Monday, August 18, 2008

สร้าง Virtual Server ด้วย VirtualBox บน Ubuntu Hardy ตอน 3

Create a permanent bridge


ในตอนนี้เราจะมาทำการเซ็ต Bridge ให้กับ เครื่อง Host และ Virtual Machine กันครับ เริ่มแรกปิด Virtual Machine เราไปก่อน โดยการสั่ง Shutdown นะครับ ถ้าเปิด Virtaul Machine ไว้อยู่ก็ให้ login เข้าไปแล้วสั่ง
sudo shutdown -h now

ตอนนี้จะปิด VirtualBox ไปก่อนก็ได้ครับ เพราะเราจะทำการเซ็ตที่เครื่อง Host เราก่อน ให้เปิด Terminal ขึ้นมา แล้วใช้คำสั่ง
sudo apt-get install bridge-utils uml-utilities

เป็นการลงโปรแกรมที่จำเป็นสำหรับการทำ Bridge Network จากนั้นให้เปิดไฟล์ /etc/network/interfaces ขึ้นมา
sudo gedit /etc/network/interfaces

แก้ไขให้เป็นไปตามด้านล่างครับ
auto eth0
iface eth0 inet manual

auto br0
iface br0 inet dhcp
bridge_ports eth0

# The loopback network interface
auto lo
iface lo inet loopback

จากนั้นสั่ง Restart Network
$sudo /etc/init.d/networking restart

มันจะ restart network ใช้เวลาแปปนึงไม่ต้องตกใจครับ หลังจากเสร็จแล้ว เน็ตจะใช้งานได้เหมือนเดิม เพียงแต่จะเชื่อมต่อผ่าน Bridge

สร้าง virtual interfaces สำหรับ VirtualBox


หลังจากสร้าง Bridge เราก็จะมาสร้าง Virtual Interface (vbox0) ให้กับ Virtualbox โดยการใช้คำสั่ง
sudo VBoxAddIF vbox0 `whoami` br0

ตรง `whoami` ใช้ Black Quote นะครับ หรือจะพิมพ์ ชื่อ username เราไปตรงๆก็ได้ เสรจแล้วก็สั่ง
sudo /etc/init.d/vboxnet restart

เพื่อ restart Virtualbox Host Network จากนั้นให้เปิด VirtualBox ขึ้นมาเลือก Virtual Machine ที่เราสร้างแล้ว กดปุ่ม Setting

ตรง Attach to ให้เปลี่ยนเป็น Host Interface และตรง Interface Name ให้พิมพ์ vbox0 ลงไปแล้วกดปุ่ม OK จากนั้นให้ลอง Start Virtual Machine แล้วล็อกอินเข้าไปดู แล้วลอง ping yahoo.com ดูก็ได้ครับ

ลองสั่ง ifconfig ดูรายละเอียดก็ได้นะครับ มันจะแสดง IP ของเครื่องให้ดูด้วย

ก็เป็นอันเสร็จสำหรับการเซ็ต Bridge ให้กับเครื่อง Host และ VirtualBox ตอนต่อไปเราจะทำการลงโปรแกรมต่างๆบน Virtual Machine กันครับหลังจากลงเสร็จมันก็จะกลายเป็น Virtual Server ให้เราจำลองการใช้งานและฝึกเซ็ตอัพเครื่อง Server กัน ^^

หมายเหตุ : เท่าที่สังเกตุหากเราใช้งาน Virtualbox แล้วเราสั่ง Restart หรือ Shutdow เคร่ือง Host จะมี Error ระหว่างที่กำลัง Shutdown หรือ Restart แต่ก็ยังไม่พบว่าทำให้เกิดปัญหาอย่างอื่นครับ

สร้าง Virtual Server ด้วย VirtualBox บน Ubuntu Hardy ตอน 2

จากตอนที่แล้วที่เราเซ็ตอัพ Virtual Machine เสร็จ ในตอนนี้จะเป็นขั้นตอนการลง Ubuntu 8.04.1 Hardy บน Virtual Machine ในตอนนี้จะอธิบายด้วยรูปภาพเป็นส่วนใหญ่นะครับ แต่ในบางช่วงในตอน Install อย่างช่วง Detect hardware ช่วง Copy ไฟล์ ผมอาจข้ามๆไปไม่ได้ capture รูปมาแสดง

เอาล่ะมาเริ่มกันเลย ที่ VirtualBox ให้เรากดปุ่ม Start เพื่อเริ่มบูต Virtual Machine เครื่องจะทำการบูตจาก CD Image ที่เรา mount ไป


ในขั้นตอนการ Install ที่นี้ผมเลือกภาษาอังกฤษครับ


หน้าจอ Install ครับ ถ้าเกิด Virtualbox มัน capture mouse เราไปแล้ว และเราต้องการจะใช้งาน mouse ให้กดปุ่ม Ctrl ด้านขวาของ Keyboard นะครับ ทีนี้มาต่อให้เลือก Install Ubuntu Server ครับ และจากนี้ให้ดูตามรูปนะครับไฮไลท์สีแดงนั่นคือตามที่ผมเลือก ไม่จำเป็นต้องตามผมทั้งหมดก็ได้ครับ

สร้าง Virtual Server ด้วย VirtualBox บน Ubuntu Hardy ตอน 1

เนื่องจากที่ผมย้ายโฮสท์ไปใช้ VPS ที่มีแรมขนาด 256MB และได้ทำการเซ็ตอัพโปรแกรมต่างๆไปเยอะแต่ไม่ได้จดว่าทำอะไรไปบ้าง อีกทั้งตอนทำก็ทำตามข้อมูลที่หาได้จากในอินเตอร์เน็ต ดังนั้นก็เลยจะทำ Virtual Server ขึ้นมาแล้วเซ็ตอัพเพื่อให้เป็น Server ทดสอบก่อนไปใช้จริงบน VPS ซึ่งโปรแกรม Vitualize ที่ใช้งานง่ายและฟรีที่ผมรู้จักก็คือ VirtualBox นั่นเอง ในที่นี้ผมจะลงบน Ubuntu และ Guest เป็น Ubuntu Server Edition ดังนั้นก่อนอื่นให้ทำการดาว์นโหลดโปรแกรม VirtualBox และ Ubuntu Server Edition มาเตรียมกันไว้ก่อนเลยครับ

Download



วิธีลงโปรแกรม VirtualBox


ในที่นี้ผมดาว์นโหลด virtualbox_1.6.4-33808_Ubuntu_hardy_i386.deb มาไว้ที่ ~/Download ก็จัดการ Install ซะด้วยคำสั่ง
cd ~/Download
sudo dpkg -i

หลังจากลงเสร็จ เราจำเป็นต้องเซ็ต User Group ให้กับ User ก่อน ซึ่งสามารถใช้ Comand ตามด้านล่าง
sudo usermod -G vboxusers -a annomundi

จากนั้น logout ออกไป เมื่อเข้ามาใหม่แล้วให้ไปที่ Applications -> System Tools -> Sun xVM VirtualBox แต่ถ้าไม่มี Menu นี้ให้ลอง Restart เครื่องดู

วิธีสร้าง Virtual Machine


ต่อไปเราจะทำการสร้าง Virtual Machine ขึ้นมาเพื่อที่จะลง Ubuntu Server ก่อนอื่นให้ไปที่ File -> Virtual Disk Manager จากนั้น ก็กด New เพื่อเริ่มสร้าง Virtual Disk ทำตามรูปไปเรื่อยๆเลยครับ






ถ้าทำตามขั้นตอนในรูป เราจะได้ Virtual Disk ขนาด 3GB ครับ ต่อไปเราจะเริ่มสร้าง Virtual Machine และลง Ubuntu Server กันครับ

Thursday, August 14, 2008

Moving to SliceHost

หลังจากที่จดๆจ้องๆ Slicehost มานาน ในที่สุดก็ตัดสินใจเช่า VPS 256MB plan ของ Slicehost ซึ่งหลังจากสมัครเพียง 2 นาที ก็สามารถเข้าไปเซ็ตอัพระบบได้ โดย OS ที่เลือกก็คือ Ubuntu 8.04.1 Hardy เนื่องจากใช้งานคุ้นมือสุด และมีข้อมูลในเน็ตเยอะสุด และหลังจากเข้าไปเซ็ตและลงโปรแกรมต่างๆเช่น Apache, PHP5, MySQL, Postfix รวมถึงเซ็ต DNS, FireWall ก็ลองย้ายเว็บนี้มาใช้งานดู ซึ่งก็ค่อนข้างเร็วกว่า Host เดิมเยอะเลย จากที่สังเกตุดู แต่ยังไม่แน่ใจว่าจะเร็วอย่างนี้ไปเรื่อยๆหรือเปล่า อาจต้อง Optimize Apache และ MySQL อีกเล็กน้อยให้ใช้ Memory น้อยแต่ยังทำงานได้เร็ว เนื่องจากข้อจำกัดของ Memory ที่มีเพียง 256MB


หลังจากนี้ก็จะเซ็ตอัพลง Ruby และ Rails เพื่อทำเว็ปด้วย RoR กำลังคิดว่าจะใช้ mod_rails (Passenger) เพราะใช้ Memory ในการรัน RoR Application น้อยกว่า Mongrel ไว้ลงเสร็จจะมาเขียน Blog ต่อครับ ตอนนี้ขอไป Optimize Server ต่อก่อนครับ


Saturday, August 09, 2008

Linux Console Command Part1

ช่วงนี้ใช้งาน Linux Console บ่อยและด้วยความที่ขี้เกียจคำสั่งที่เคยพิมพ์ไปแล้ว และจำได้ว่ามันมี command ที่ใช้รันคำสั่งที่เราเคยพิมพ์ไปแล้ว ปกติผมจะใช้ปุ่มลูกศรขึ้นลงเพื่อเลือกคำสั่งที่ผ่านๆมา แต่มันไม่สะดวกเพราะคำสั่งที่เคยพิมพ์ๆไปมันอาจพิมพ์ไปนานแล้ว ก็เลยลอง Search ดูก็เจอคำสั่งที่จะช่วยให้ประหยัดเวลาในการทำงาน

คำสั่งแรกเลย history
history

จะเป็นการลิสท์คำสั่งต่างๆที่เราเคยเรียกใช้งานไปแล้วทั้งหมด
history 10

จะเป็นการลิสท์คำสั่ง 10 คำสั่งสุดท้ายออกมา
เราสารถใช้คำสั่ง ! เพ่ือทำการรันคำสั่งนั้นอีกครั้ง เช่น
annomundi@develone:~$ history
55 history
56 pwd
57 ls
58 cd ~
59 history
annomundi@develone:~$ !57
ls
MyThread.class mbox rails-projects sources www
annomundi@develone:~$

จะเห็นว่าคำสั่ง !57 จะสั่งรันคำสั่ง ls นอกจากนี้เราสามารถใช้คำสั่ง
!!


เพื่อรันคำสั่งก่อนหน้านี้
นอกจากนี้ก็มีคำสั่ง !$ จะหมายถึงข้อความที่ตามหลังคำสั่งที่แล้ว เช่น
ls /etc/hosts
vi !$

คำสั่งหลังก็คือคำสั่ง vi /etc/host นั่นเอง
คำสั่ง !<start of command> เป็นการรันคำสั่งหลังสุดที่ขุึ้นต้นด้วย <start of command> เช่น

pwd
ls -la
cd www
!ls

คำสั่ง !ls จะเป็นการรันคำสั่ง ls -la อีกครั้งนึงนั่นเอง
คำสั่ง !-<number> จะเป็นการรันคำสั่งที่ <number> ก่อนหน้านี้ เช่น

pwd
ls -la
cd www
!ls
!-4

คำส่ัง !-4 จะเป็นการรันคำสั่ง pwd อีกครั้งนึง

สำหรับคำสั่งพวกนี้บางคนอาจคุ้นเคยแล้ว แต่ผมเองเคยเห็นเพื่อนๆใช้กันแกต่ไม่ค่อยได้จำและเอามาใช้สักที เลยต้อง search หาเอามาใช้ซะหน่อยจะได้ประหยัดเวลาการพิมพ์คำสั่งบนคอนโซล ^^ ไว้อาจมีต่อภาค 2 เพราะผมยังไม่แม่นเรื่อง command parameter เท่าไหร่