Category: Operating System

  • เรื่องน่ารู้เกี่ยวกับ start/stop dhcp server ทันทีที่เปิด server

    พวกเราที่ใช้งาน ubuntu server และที่ติดตั้ง dhcp server เพื่อทำหน้าที่แจกจ่าย IP Address ให้กับเครื่อง client ก็มักจะเลือกใช้ dhcp server ของ ISC (www.isc.org) ซึ่งก็จะติดตั้งได้ง่ายๆผ่านคำสั่ง apt-get install (ผมละคำว่า sudo ที่ต้องใส่นำหน้าคำสั่งเอาไว้ในฐานที่เข้าใจ)

    แต่เดิมใน ubuntu 10.04 จำได้ว่าวิธีติดตั้ง dhcp server ก็จะใช้คำสั่ง apt-get install dhcp3-server แล้วต่อมาเมื่อเปลี่ยนเป็น ubuntu 12.04 วิธีการติดตั้งก็เปลี่ยนไปเป็น apt-get install isc-dhcp-server

    คราวนี้ก็มาถึงเรื่องที่อยากมาเล่าสู่กันฟัง คือ พวกเราจะรู้ไม๊ครับว่า หากเราต้องการจะ start หรือ stop dhcp server จะทำอย่างไร และโจทย์ของผมคือ ในการทำ dhcp server ทดสอบผมไม่ต้องการให้ dhcp server มันทำงานทันทีที่เปิดเครื่อง จะต้องทำอย่างไร

    เราเคยรู้มาว่า อ๋อ ก็ใช้คำสั่ง update-rc.d ถ้าต้องการเปิดใช้งาน ก็สั่ง update-rc.d isc-dhcp-server defaults ถ้าไม่ต้องการให้ทำงานทันทีที่เปิดเครื่อง ก็สั่ง update-rc.d -f isc-dhcp-server remove แบบนี้ เชื่อไม๊ครับว่า หลังจาก reboot เครื่องแล้ว dhcp server มันก็ทำงานอยู่ โดยใช้คำสั่งในการเช็ค คือ

    ps ax | grep dhcp

    แสดงผลลัพธ์แบบนี้

    mama@ubuntu:~$ ps ax | grep dhcp
     2491 ?        Ss     0:00 /usr/sbin/dhcpd -f -q -4 -pf /run/dhcp-server/dhcpd.pid -cf /etc/dhcp/dhcpd.conf eth0

    หรือ

    service isc-dhcp-server status

    แสดงผลแบบนี้

    mama@ubuntu:~$ sudo start isc-dhcp-server
    isc-dhcp-server start/running, process 2491

    เอาหละสิ แล้ว dhcp server มันเปิดขึ้นมาได้อย่างไร ค้นๆดูก็พบว่ามันมีไดเรกทอรี /etc/init/ ที่จะเป็นที่เก็บโปรแกรมสมัยใหม่ที่เรียกกันว่าแบบ upstart แทนการใช้งานแบบ SysVinit (/etc/init.d/) และก็เจอไฟล์ isc-dhcp-server.conf อยู่ใน /etc/init/ เมื่อแก้ไขที่ไฟล์นี้ก็สำเร็จ ใส่ comment “#” เพื่อว่าจะไม่ start เมื่อเปิดเครื่อง (บรรทัดที่4 #start on runlevel [2345])

    ก็ลองค้นดูเรื่องราวใน google ก็พบบทความหนึ่ง เรื่อง “What is the difference between /etc/init/ and /etc/init.d/?”

    ก็ได้คำตอบว่า ปัจจุบันนี้ผู้พัฒนาโปรแกรมบน ubuntu สามารถเลือกใช้ init ได้ 2 แบบ SysVinit กับ Upstart

    แบบ SysVinit เวลาสั่ง start จะทำดังนี้ /etc/init.d/dhcp3server start
    แบบ Upstart เวลาสั่ง start จะทำดังนี้ start isc-dhcp-server

    แบบ SysVinit ตั้งค่าโปรแกรมทำงานเมื่อเปิดเครื่อง แก้ไขด้วย update-rd.d
    แบบ Upstart ตั้งค่าโปรแกรมทำงานเมื่อเปิดเครื่อง แก้ไขที่ไฟล์ config ใน /etc/init/

    ขออนุญาต ลอกข้อความจาก Link http://askubuntu.com/questions/5039/what-is-the-difference-between-etc-init-and-etc-init-d มาให้อ่าน

    “/etc/init.d contains scripts used by the System V init tools (SysVinit). This is the traditional service management package for Linux, containing the init program (the first process that is run when the kernel has finished initializing¹) as well as some infrastructure to start and stop services and configure them. Specifically, files in /etc/init.d are shell scripts that respond to start, stop, restart, and (when supported) reload commands to manage a particular service. These scripts can be invoked directly or (most commonly) via some other trigger (typically the presence of a symbolic link in /etc/rc?.d/).

    /etc/init contains configuration files used by Upstart. Upstart is a young service management package championed by Ubuntu. Files in /etc/init are configuration files telling Upstart how and when to start, stop, reload the configuration, or query the status of a service. As of lucid, Ubuntu is transitioning from SysVinit to Upstart, which explains why many services come with SysVinit scripts even though Upstart configuration files are preferred. In fact, the SysVinit scripts are processed by a compatibility layer in Upstart.”

    ผมคิดว่าน่าจะมาเล่าสู่กันฟัง เท่าที่มีความรู้ หากมีคำแนะนำเพิ่มเติม บอกได้นะครับ

  • Putty + Xming = Xwindows

    • สำหรับผู้ใช้งานวินโดวส์ อยากใช้บางโปรแกรมของ Xwindows แต่ไม่อยากเดินไป Log In หน้า Console
    • ต้องมี putty และ xming โหลดที่
      • ftp://ftp.psu.ac.th/pub/putty สำหรับ 32-bit
      • https://blog.splunk.net/wp/64bit-putty/ สำหรับ 64-bit
      • ftp://ftp.psu.ac.th/pub/xming/ อันนี้ไม่มีแยก
    • โหลดโปรแกรมทั้งสองมาติดตั้งในเครื่องให้เรียบร้อย (next tech) สำหรับ putty สามารถโหลด putty.exe มาไฟล์เดียวก็ได้
    • เปิด putty และ xming

    2013-10-01_0929

    2013-10-01_0931สำหรับ xming เปิดแล้วโปรแกรมจะไปอยู่ที่ Task Bar

    • ที่ Putty ในหัวข้อ Connection -> SSH -> X11 เลือกหัวข้อ Enable X11 forwarding

    2013-10-01_0934

    • กลับมาหน้า Session ในช่อง Saved Sessions สร้างชื่อใหม่เก็บไว้ใช้เวลาต้องการ

    2013-10-01_0939

    2013-10-01_0939_001

    • ทดสอบใช้งาน ให้เลือกไปที่ X11 Forwarding ที่สร้างไว้ แล้วกด Load แล้วใส่ชื่อ Host Name ที่ต้องการ

    2013-10-01_0944

    • เมื่อ Log In เรียบร้อยในครั้งแรก จะมีข้อความว่า /usr/bin/xauth: creating new authority file ….

    2013-10-01_0955

    • ลองเรียกใช้งานโปรแกรมที่ต้องใช้ Xwindows  เช่น gedit

    2013-10-01_1009

    2013-10-01_1022

    • จบ … ขอให้สนุกครับ
  • ติดตั้ง LibreOffice 4.1 บน Ubuntu และ Linux Mint

    • Add repository โดย repository นี้ใช้ได้สำหรับ Ubuntu รุ่น Precise, Quantal, Raring และ Linux Mint ในรุ่นที่เทียบเคียงกัน เช่น ปัจจุบัน Linux Mint 15 ซึ่งเทียบเคียงได้กับ Ubuntu Raring เป็นต้น ด้วยคำสั่ง

    sudo add-apt-repository ppa:libreoffice/ppa

    • เนื่องจากในมหาวิทยาลัยสงขลานครินทร์ มีไซต์ http://mirrors.psu.ac.th ซึ่งได้ทำการ mirror ไซต์ต่างๆ ที่จำเป็นไว้แล้วส่วนหนึ่ง รวมถึง repository ของ LibreOffice ด้วย ดังนั้น สามารถใช้งานได้ โดยการแก้แฟ้ม /etc/apt/sources.list.d/libreoffice-ppa-raring.list จากเดิม มีอะไรอยู่ให้แก้เป็นดังนี้ โดยหากเป็น Ubuntu รุ่นอื่นๆ ก็ให้เปลี่ยนคำว่า raring เป็นรุ่นที่ใช้งาน สำหรับ Linux Mint ก็ยังคงใช้รุ่นของ Ubuntu ที่เทียบเคียงกันมาเช่น Linux Mint 15 ก็ให้ใช้ของ raring

    deb http://mirrors.psu.ac.th/ppa/libreoffice/ raring main

    • สั่ง update ฐานข้อมูล software ด้วยคำสั่ง

    sudo apt-get update

    • สั่ง upgrade software ซึ่ง LibreOffice จะถูก upgrade ไปในคราวเดียวกันโดยอัตโนมัติด้วยคำสั่ง

    sudo apt-get -y dist-upgrade

    • จบ.. ขอให้สนุกครับ

    ที่มา

        http://www.ubuntuupdates.org/ppa/libreoffice

  • hands on backup joomla website and restore

    เรื่อง hands on backup joomla website and restore นี้จัดเตรียมโดยใช้ Oracle VM VirtualBox เพื่อฝึกปฏิบัติเกี่ยวกับการ backup website ในตัวอย่างจะใช้ joomla web site ซึ่งการ backup คงจะมีหลายแบบตามชนิดของการตั้ง website ในกรณีนี้ก็จะเป็นแบบตั้ง server เองแล้วใช้ apache web server + mysql server ที่ติดตั้งเอง

    สภาพแวดล้อมที่เตรียมมีดังนี้
    ubuntu router: มี Fix IP Address 10.0.100.1 (แจก DHCP IP Address ให้แก่ server1, server2 และ client)
    server1: 10.0.100.206 (joomla website รันบน apache web server)
    server2: 10.0.100.207 (backup)
    client: 10.0.100.205 (เพื่อใช้งาน ssh ผ่านทาง terminal และเพื่อใช้งาน firefox web browser)

    KM4-backup-diagram

    รูปภาพระบบทดสอบนี้

     

    การเตรียม VM
    ดาวน์โหลด [ ubunturouter-dhcp.ova  1.1GB ]  [ ubuntuserver-lamp.ova  1.2GB ] [ linuxmint15-live.ova 81KB]  [ linuxmint-15-mate-dvd-32bit.iso  1.0GB ] หรือได้รับแผ่น DVD ไฟล์ทั้งหมดนี้
    แล้วทำดังนี้
    1. ทำ import ไฟล์ ubunturouter-dhcp.ova ตั้งชื่อว่า ubuntu router ตั้ง network adapter1: NAT, ตั้ง network adapter2: internal network (ตั้ง name: intnet1)
    2. ทำ import ไฟล์ ubuntuserver-lamp.ova ตั้งชื่อว่า server1 ตั้ง network adapter1: internal network (ตั้ง name: intnet1)
    3. ทำ import ไฟล์ ubuntuserver-lamp.ova อีกครั้ง ตั้งชื่อว่า server2 ตั้ง network adapter1: internal network (ตั้ง name: intnet1)
    4. ทำ import ไฟล์ linuxmint15-live.ova ตั้งชื่อว่า client ตั้ง network adapter1: internal network (ตั้ง name: intnet1) และตั้งค่า Storage ใช้ CD/DVD ด้วยไฟล์ linuxmint-15-mate-dvd-32bit.iso

    หมายเหตุ เครื่อง 1,2 และ 3 เปิดเครื่องเข้าใช้ด้วย login mama / password 123456

    การเตรียมทำ joomla site ทดสอบ
    1. สร้าง database ที่ต้องการติดตั้ง ตัวอย่าง สร้าง database ชื่อ testdatabase ใช้คำสั่ง

    mysql -uroot -p123456 -e "CREATE DATABASE testdatabase CHARACTER SET 'UTF8';"

    2. กำหนดสิทธิ์การใช้ database testdatabase ให้แก่ user ตัวอย่างสร้าง user ชื่อ mamamysql โดยมีรหัสผ่านว่า mamapass ใช้คำสั่ง

    mysql -uroot -p123456 -e "grant all privileges on testdatabase.* to 'mamamysql'@'localhost' identified by 'mamapass' ;"

    3. เตรียมพื้นที่สำหรับติดตั้ง joomla ไว้ที่ /var/www/testjoomla ด้วยคำสั่ง

    sudo mkdir -p /var/www/testjoomla

    4. ดาวน์โหลดแฟ้ม joomla 2.5.9 มาเก็บไว้ด้วยคำสั่ง

    wget http://ftp.psu.ac.th/pub/joomla/Joomla_2.5.9-Stable-Full_Package.tar.gz -P /tmp

    แล้วแตกแฟ้มออกมาเก็บไว้ที่ /var/www/testjoomla ด้วยคำสั่ง

    sudo tar -zxvf /tmp/Joomla_2.5.9-Stable-Full_Package.tar.gz -C /var/www/testjoomla

    5. แล้วปรับสิทธิ์เจ้าของ /var/www/testjoomla ให้แก่ apache ด้วยคำสั่ง

    sudo chown -R www-data.www-data /var/www/testjoomla

    6. ต่อไปต้องติดตั้งปรับแต่งระบบ joomla ครั้งแรก เปิด browser (firefox, chrome, Internet Explorer ฯลฯ) แล้วพิมพ์

    http://10.0.100.206/testjoomla

    (หมายเหตุ 10.0.100.206 คือ ip address server ที่ติดตั้ง Joomla)

    ขั้นตอน 1 : Choose language (เลือกภาษา) ให้ click ปุ่ม Next (หรือต่อไป)
    ขั้นตอน 2 : Pre-Installation Check(ตรวจสอบระบบก่อนติดตั้ง) ให้ click ปุ่ม Next (หรือต่อไป)
    ขั้นตอน 3 : License(ลิขสิทธิ์) ให้ click ปุ่ม Next (หรือต่อไป)
    ขั้นตอน 4 : Database Configuration(การตั้งค่าฐานข้อมูล) ให้ใส่ค่าดังนี้ (อย่าลืมใส่ข้อมูลชิดซ้าย ห้ามมีช่องว่าง)
    Database type = mysqli(เลือกที่มี i) (ความแตกต่างระหว่าง mysqli และ mysql)
    Host Name = localhost
    Username = mamamysql
    Password = mamapass
    Database Name = testdatabase เสร็จแล้ว click Next (หรือต่อไป)
    ขั้นตอน 5 : FTP Configuration (ตั้งค่า FTP) ให้ click ปุ่ม Next (หรือต่อไป)
    ขั้นตอน 6 : Main Configuration (ตั้งค่าหลักของ เว็บ) ให้ใส่ค่าดังนี้
    Admin Username = ไม่ต้องแก้ไข ทิ้งไว้เหมือนเดิมคือ admin
    Admin Password = 123456
    Confirm Admin Password = 123456
    อย่าลืม ต้อง Click Install Sample Data (ติดตั้งข้อมูลตัวอย่าง) แล้วกด Next (หรือ ต่อไป)
    ขั้นตอนที่ 7 : Finish (เสร็จสิ้น) (ขั้นตอนสุดท้าย)

    7. แล้วปรับสิทธิ์เจ้าของ /var/www/testjoomla ให้แก่ user ที่ไม่ใช่ www-data ด้วยคำสั่ง

    sudo chown -R mama.mama /var/www/testjoomla

     

    การตั้งค่าการสำรองข้อมูลข้ามเครื่องโดยไม่ต้องถามรหัสผ่าน

    1. ใช้คำสั่งดังนี้คือ

    ssh-keygen -t dsa

    ได้ผลข้อความตัวอย่างว่า
    Generating public/private dsa key pair.
    Enter file in which to save the key (/home/User/.ssh/id_dsa):
    ให้ป้อน Enter จะได้ข้อความตัวอย่างว่า
    Enter passphrase (empty for no passphrase):
    ให้ป้อน Enter จะได้ข้อความตัวอย่างว่า
    Enter same passphrase again:
    ให้ป้อน Enter จะได้ข้อความตัวอย่างว่า
    Your identification has been saved in /home/User/.ssh/id_dsa.
    Your public key has been saved in /home/User/.ssh/id_dsa.pub.
    The key fingerprint is:
    66:ce:cc:8d:33:0d:49:9a:05:26:77:95:1a:3e:96:5f User1@Server1
    ถึงตอนนี้ ระบบจะสร้างแฟ้ม ~/.ssh/id_dsa และ ~/.ssh/id_dsa.pub ขึ้นมา

    2. ให้นำแฟ้ม ~/.ssh/id_dsa.pub จากเครื่องนี้ ไปเก็บไว้ที่ home ของ User2 ปลายทาง @server2
    ด้วยตัวอย่างคำสั่งว่า ssh-copy-id -i ~/.ssh/id_dsa.pub User2@Server2 เช่น

    ssh-copy-id -i ~/.ssh/id_dsa.pub mama@10.0.100.207

    อาจมีการถามรหัสผ่านของ User2@Server2 ให้ป้อนรหัสผ่านให้ถูกด้วย
    หากสำเร็จถูกต้อง ข้อมูลจะถูกเก็บที่ home ของ User2 ปลายทาง @server2 ในแฟ้ม ~/.ssh/authorized_keys

    3. เพื่อความปลอดภัย ให้กำหนดสิทธิ์เฉพาะเจ้าของจึงจะอ่านแฟ้มเหล่านีได้ ด้วยตัวอย่างคำสั่ง

    chmod 600 ~/.ssh/id_dsa ~/.ssh/id_dsa.pub

     

    การตั้งค่า cron เพื่อ backup server1 (10.0.100.206) ไปยัง server2 (10.0.100.207)

    1. ขั้นตอนนี้ต้องเข้าเป็น username root ด้วยคำสั่ง

    sudo su -

    2. สร้างแฟ้ม /etc/cron.d/cron-backup

    nano /etc/cron.d/cron-backup

    ใส่คำสั่งดังนี้

    0 4 * * * root sh /root/backup-joomla.sh

    3. สร้างแฟ้ม /root/mydaily.sh ด้วยคำสั่ง

    nano /root/backup-joomla.sh

    มีข้อมูลคำสั่งต่างๆที่ต้องการสั่งให้ทำงาน ดังนี้

      #!/bin/bash
      TODAY=$(date "+%Y%m%d%H%M")
      mysqldump -u mamamysql -pmamapass testdatabase > /root/testjoomla_${TODAY}.sql
      scp -i /home/mama/.ssh/id_dsa /root/testjoomla_${TODAY}.sql mama@10.0.100.207:backup_testjoomla
      tar -zcp -f /root/testjoomla_${TODAY}.tgz -C /var/www/testjoomla .
      scp -i /home/mama/.ssh/id_dsa /root/testjoomla_${TODAY}.tgz mama@10.0.100.207:backup_testjoomla

    4. เตรียมเสร็จ ให้ลองทดสอบระบบ

    login เข้าไปที่ server2 ด้วย ssh เพื่อสร้างไดเรกทอรี

    ssh -i /home/mama/.ssh/id_dsa mama@10.0.100.207 "mkdir backup_testjoomla"

    ทดสอบ run script นี้สัก 1 ครั้ง

    sh /root/backup-joomla.sh

    ตรวจสอบดูว่ามีการส่งไฟล์ไปเก็บจริงไม๊

    ssh -i /home/mama/.ssh/id_dsa mama@10.0.100.207 "ls -l backup_testjoomla"

    5. เสร็จแล้วสั่งให้ cron ทำงานใหม่ด้วยคำสั่ง

    service cron restart

    6. ออกจาก sudo su ด้วยคำสั่ง

    exit

     

    การ restore joomla web site

    1. สร้าง database ที่ต้องการติดตั้ง ตัวอย่าง สร้าง database ชื่อ testdatabase ใช้คำสั่ง

    mysql -uroot -p123456 -e "CREATE DATABASE testdatabase CHARACTER SET 'UTF8';"

    2. กำหนดสิทธิ์การใช้ database testdatabase ให้แก่ user ตัวอย่างสร้าง user ชื่อ mamamysql โดยมีรหัสผ่านว่า mamapass ใช้คำสั่ง

    mysql -uroot -p123456 -e "grant all privileges on testdatabase.* to 'mamamysql'@'localhost' identified by 'mamapass' ;"

    3. เตรียมพื้นที่สำหรับติดตั้ง joomla ไว้ที่ /var/www/testjoomla ด้วยคำสั่ง

    sudo mkdir -p /var/www/testjoomla

    4. แตกแฟ้มที่ backup นั้น (testjoomla_201309031231.tgz) ออกมาเก็บไว้ที่ /var/www/testjoomla ด้วยคำสั่ง

    sudo tar -zxvf backup_testjoomla/testjoomla_201309031231.tgz -C /var/www/testjoomla/

    5. import ข้อมูล เข้า ด้วยคำสั่ง

    mysql -uroot -p123456 testdatabase < backup_testjoomla/testjoomla_201309031231.sql

    6. แล้วปรับสิทธิ์เจ้าของ /var/www/testjoomla ให้แก่ user ที่ไม่ใช่ www-data ด้วยคำสั่ง

    sudo chown -R mama.mama /var/www/testjoomla

    7. ก็จะสามารถเข้า server2 ได้ที่ http://10.0.100.207/testjoomla

  • การติดตั้งโปรแกรมชุด Monitor Server (CentOS 6 + Epel + NRPE + NagiosQL + NagiosGraph)

    เนื้อหา

    วิธีการติดตั้ง CentOS และ EPEL Repository

    OS : CentOS 6.3 Nagios : 3.4.X

    1) ติดตั้ง CentOS 6.3

    2) ตั้งค่า Network

    3) ทำการ Update CentOS ให้ใหม่สุดดังนี้

       # yum update

    4) ทำการเปิด Repository EPEL โดยโหลดไฟล์จากดังตัวอย่าง ในตัวอย่างเป็น Version 6.8
    อาจโหลดไม่ได้ถ้ามี Version ใหม่กว่าออกมา

       # wget http://mirrors.thzhost.com/epel/6/x86_64/epel-release-6-8.noarch.rpm

    5) ทำการติดตั้ง EPEL rpm ดังนี้

       # rpm -ivh epel-release-6-8.noarch.rpm

    6) ทำการ Update CentOS อีกครั้ง

    Top


    วิธีการตั้งค่า Time Sync

    1) ติดตั้ง ntpd ดังนี้

       # yum install ntp

    2) ติดตั้งโปรแกรม vim เพื่อใช้ในการแก้ไขไฟล์ ดังนี้

       # yum install vim

    3) แก้ไขไฟล์ /etc/ntp.conf ดังนี้

    ...
    # Please consider joining the pool (http://www.pool.ntp.org/join.html).
    #server 0.centos.pool.ntp.org
    #server 1.centos.pool.ntp.org
    #server 2.centos.pool.ntp.org
    server time.psu.ac.th
    server ntp.ku.ac.th
    ...

    4) ทำการ update เวลาให้ตรงก่อน Start Service ntp ดังนี้

       # ntpdate time.psu.ac.th

    5) ทำการ Start Service ntp และตั้งให้รันตอนเปิดเครื่อง ดังนี้

       # service ntpd start
       # chkconfig ntpd on

    6) คำสั่งสำหรับ Check สถานะการ Sync ต้องรอหลัง Start Service สักพัก * หน้าชื่อ Server
    เป็นตัวบอกว่าเป็น Server ที่กำลัง Sync เวลาด้วยล่าสุด (Service จะเลือกเองว่าจะเลือกใช้ Server ไหน)

       # ntpq -p

    Top


    วิธีการปิด selinux และ firewall

    1) ทำการแก้ไขไฟล์ /etc/selinux/config ดังนี้

    ...
    #     disabled - No SELinux policy is loaded.
    # SELINUX=enforcing
    SELINUX=disabled
    # SELINUXTYPE= can take one of these two values:
    #     targeted - Targeted processes are protected,
    #     mls - Multi Level Security protection.
    SELINUXTYPE=targeted
    ...

    2) สั่งปิด service firewall ดังนี้

       # service iptables stop
       # service ip6tables stop
       # chkconfig iptables off
       # chkconfig ip6tables off

    3) ทำการ Restart เครื่องเพื่อทดสอบ

       # reboot

    Top


    ตัวอย่างวิธีการ เปิด rule โดยไม่ปิด Firewall

    แก้ไขไฟล์ /etc/sysconfig/iptables ดังนี้

    # Generated by iptables-save v1.4.7 on Mon Feb 18 10:13:39 2013
    *filter
    :INPUT ACCEPT [0:0]
    :FORWARD ACCEPT [0:0]
    :OUTPUT ACCEPT [4:480]
    -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    -A INPUT -p icmp -j ACCEPT
    -A INPUT -i lo -j ACCEPT
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
    -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
    -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
    -A INPUT -j REJECT --reject-with icmp-host-prohibited
    -A FORWARD -j REJECT --reject-with icmp-host-prohibited
    COMMIT
    # Completed on Mon Feb 18 10:13:39 2013

    Top


    วิธีการติดตั้ง Nagios

    1) ติดตั้ง Nagios และสั่งเปิดใช้งานอัตโนมัติที่เปิดเครื่องดังนี้

       # yum install nagios
       # chkconfig nagios on
       # service nagios start

    2) สั่ง Start Apache Web Server อัตโนมัติดังนี้

       # chkconfig httpd on
       # service httpd start

    3) ติดตั้ง Plugin ของ Nagios ดังนี้

       # yum install nagios-plugins*

    4) ทำการตั้งรหัสผ่าน User Nagiosadmin ดังนี้

       # htpasswd -c /etc/nagios/passwd nagiosadmin

    5) เปิดใช้งาน https ดังนี้

       # yum install mod_ssl
       # service httpd restart

    6) ทำการสร้างไฟล์ /var/www/html/index.html เพื่อให้ Redirect อัตโนมัติเข้าไปยัง /nagios ดังนี้

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html>
    <head>
    <title>Auto Redirect to nagios</title>
    <meta http-equiv="REFRESH" content="0;url=https://<server-name>/nagios"></HEAD>
    <BODY>
    Please Wait.....
    </BODY>
    </HTML>

    7) เพื่อความปลอดภัยให้ปิด Signature เพื่อไม่ให้บอก Version ของ Apache โดยแก้ไขไฟล์ /etc/httpd/conf/httpd.conf ดังนี้

    ...
    # Set to one of:  On | Off | EMail
    #
    #ServerSignature On
    ServerSignature Off
    #
    # Aliases: Add here as many aliases as you need (with no limit). The format is
    # Alias fakename realname
    ...

    8) ทำการ Restart Service Apache ดังนี้

       # service httpd restart

    Top


    ขั้นตอนการเตรียมการติดตั้ง NagiosQL

    1) เบื้องต้นต้องทำการติดตั้ง php5 mysql-server

       # yum install php mysql-server php-mysql

    2) ทำการ config /etc/php.ini ในส่วนของ Timezone ดังนี้

    ...
    [Date]
    ; Defines the default timezone used by the date functions
    ; http://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone
    ;date.timezone = 
    date.timezone = Asia/Bangkok
    
    ; http://www.php.net/manual/en/datetime.configuration.php#ini.date.default-latitude
    ...

    3) ทำการ Start Mysql Server และ ตั้งให้รันอัตโนมัติเมื่อเปิดเครื่อง

       # service mysqld start
       # chkconfig mysqld on

    4) ทำการตั้ง password root mysql-server ดังนี้ (ไม่แนะนำให้ใช้ mysqladmin เพราะจะค้างอยู่ใน history

    4.1) เข้าไปยัง mysql console ดังนี้

       # mysql -u root

    4.2) ทำการตั้งรหัสผ่าน ดังนี้ (ระวัง password มี ‘ ให้ใส่ \’ ถ้าจะตั้ง password ที่มี ‘)

       mysql>SET PASSWORD FOR 'root'@'localhost' = PASSWORD('secret_password');

    5) สร้าง directory ดังนี้

       # mkdir /etc/nagiosql
       # mkdir /etc/nagiosql/hosts
       # mkdir /etc/nagiosql/services
       # mkdir /etc/nagiosql/backup
       # mkdir /etc/nagiosql/backup/hosts
       # mkdir /etc/nagiosql/backup/services

    6) เปลี่ยนเจ้าของ directory ข้างต้นเป็น [webserver_account].nagios ดังนี้

       # chown -R apache.nagios /etc/nagiosql

    7) ทำการเปลี่ยน Owner ของ Config nagios ให้เป็นดังนี้

       # chown -R apache:nagios /etc/nagios/nagios.cfg
       # chown -R apache:nagios /etc/nagios/cgi.cfg
       # chown -R apache.nagios /var/spool/nagios/cmd/nagios.cmd
       # chmod 640 /etc/nagios/nagios.cfg
       # chmod 640 /etc/nagios/cgi.cfg
       # chmod 660 /var/spool/nagios/cmd/nagios.cmd

    8) สร้าง directory เพิ่มเติมดังนี้

       # mkdir /opt/nagiosql
       # chown apache /opt/nagiosql

    9) ทำการสร้างไฟล์ apache config สำหรับ nagiosql ดังนี้

       # touch /etc/httpd/conf.d/nagiosql.conf

    10) ทำการแก้ไขไฟล์ /etc/httpd/conf.d/nagiosql.conf โดยเพิ่มข้อความดังนี้

    Alias /nagiosql "/opt/nagiosql"
    <Directory "/opt/nagiosql">
       Options None
       AllowOverride None
       Order allow,deny
       Allow from all
    #  Order deny,allow
    #  Deny from all
    #  Allow from 127.0.0.1
       AuthName "NagiosQL Access"
       AuthType Basic
       AuthUserFile /etc/nagios/passwd
       Require valid-user
    </Directory>

    11) ทำการติดตั้ง extension ssh2 ดังนี้

        # yum install php-pecl-ssh2

    12) ทำการ Restart Apache อีกรอบ

        # service httpd restart

    13) ทำการโหลดโปรแกรมตาม URL ดังนี้

       # cd /opt
       # wget http://downloads.sourceforge.net/project/nagiosql/nagiosql/NagiosQL%203.2.0/nagiosql_320.tar.gz

    14) แตกไฟล์วางใน /opt/nagiosql ดังนี้

       # gunzip -c nagiosql_320.tar.gz | tar -xf - 
       # cd nagiosql32
       # mv * ../nagiosql
       # cd ..
       # rm -rf nagiosql32
       # chown -R apache /opt/nagiosql
       # chmod 750 /opt/nagiosql/config

    Top


    วิธีการติดตั้ง NagiosQL

    1) เปิด Web Browser https://nagios.in.psu.ac.th/nagiosql เพื่อเข้าสู่หน้าติดตั้ง

    2) กดปุ่ม START INSTALLATION เพิ่มไปยังหน้าถัดไป

    3) ตรวจสอบหน้า Checking requirements ถ้าพบข้อความ Environment test completed successfully ให้กดปุ่ม Next

    4) ในหน้า Setup ให้ทำการกรอกข้อมูล User Password Mysql-Server รวมถึง User Password ตั้งต้นของ NagiosQL

    5) จากนั้นกด Finish

    6) ทำการลบ directory install ทิ้ง

    *หมายเหตุ พบว่าระหว่างติดตั้ง แต่การใช้งานถ้ารหัสผ่านมี ‘ จะลงไม่ผ่าน

    7) หลังจากนั้นทำการ Login เข้าไปในหัวข้อ Admnistrator->Config targets

    8) แก้ Path ของ Nagios ดังนี้

    Nagios command file : /var/spool/nagios/cmd/nagios.cmd
    Nagios binary file : /usr/sbin/nagios
    Nagios process file : /var/run/nagios.pid
    Nagios config file : /etc/nagios/nagios.cfg (เหมือนเดิม)

    Top


    วิธีการติดตั้ง NagiogGraph

    1) เปิด Web Browser http://nagiosgraph.sourceforge.net/ เพื่อโหลดโปรแกรม

      # cd /tmp
      # wget http://downloads.sourceforge.net/project/nagiosgraph/nagiosgraph/1.4.4/nagiosgraph-1.4.4.tar.gz

    2) แตกไฟล์ zip ออกมาดังนี้

      # tar -xvzf /nagiosgraph-1.4.4.tar.gz
      # cd nagiosgraph-1.4.4

    3) ติดตั้ง Perl-GD และ Perl-CGI ดังนี้

      # yum install perl-GD perl-CGI

    4) ทำการตรวจสอบโปรแกรมที่ต้องการสำหรับการติดตั้ง ดังนี้

      # ./install.pl --check-prereq

    5) ทำการติดตั้งโปรแกรม nagiosgraph ดังนี้

      # ./install.pl --install
    * Enter ไปเรื่อย ๆ ให้แก้เฉพาะในส่วนของ username or userid of Nagios user? [nagios] เป็น user ที่ใช้งานจริง

    6) ทำการแก้ไขไฟล์ /etc/nagios/nagios.cfg โดยเพิ่มท้ายไฟล์ดังนี้

    # process nagios performance data using nagiosgraph
    process_performance_data=1
    service_perfdata_file=/tmp/perfdata.log
    service_perfdata_file_template=$LASTSERVICECHECK$||$HOSTNAME$||$SERVICEDESC$||$SERVICEOUTPUT$||$SERVICEPERFDATA$
    service_perfdata_file_mode=a
    service_perfdata_file_processing_interval=30
    service_perfdata_file_processing_command=process-service-perfdata-for-nagiosgraph

    7) ทำการเพิ่ม command ใน web nagiosql ให้รันคำสั่งดัง config ไฟล์นี้

    define command {
    command_name process-service-perfdata-for-nagiosgraph
    command_line /usr/local/nagiosgraph/bin/insert.pl
    }

    8) ทำการเพิ่มท้ายไฟล์ /etc/httpd/config/httpd.conf ให้ include config ไฟล์นี้

    include /usr/local/nagiosgraph/etc/nagiosgraph-apache.conf

    9) ทำการสร้าง Service ชื่อ nagiosgraph ใน web nagiosql โดยไฟล์ config มีข้อความประมาณนี้

    define service {
    name nagiosgraph
    action_url /nagiosgraph/cgi-bin/show.cgi?host=$HOSTNAME$&service=$SERVICEDESC$
    register 0
    }

    10) เพิ่ม Service ดังกล่าวไปยังเครื่องที่ต้องการ
    Top


  • การสร้าง Mail Merge ด้วย Thunderbirds

    ส่งจดหมายเวียนในรูปแบบ Email ด้วย Thunderbird

    1. Download และ ติดตั้ง Thunderbird
      http://www.mozilla.org/en/thunderbird/all.html
      แล้วติดตั้ง email Account ตามปรกติ, ทดสอบให้สามารถส่ง email ออกไปได้จริง

    2. Download และ ติดตั้ง ThunderBird Mail Merge Extension
      https://addons.mozilla.org/en-us/thunderbird/addon/mail-merge/
      โดยเปิด Thunderbird แล้วกดปุ่ม  Alt-T แล้วเลือก Add-ons
      แล้วไปที่ รูปเฟือง แล้วเลือก Install Add-ons From file…
      จากนั้น เลือกไฟล์ที่ Download มา (mail_merge.XXXXX.xpi)
      เมื่อติดตั้งเสร็จ ให้ Restart Thunderbird

    3. Download และ ติดตั้ง Notepad++
      http://notepad-plus-plus.org/download/

    4. สร้างฐานข้อมูลด้วย Microsoft Excel หรือ LibreOffice Cal ก็ได้
      โดย ให้บรรทัดแรกของตาราง เป็นชื่อของ Field ซึ่งต้องเป็นภาษาอังกฤษ ไม่มีเว้นวรรค
      04-excel

      ในที่นี้จะมีชื่อ name, email, salary, topup, bonus, sso, total

      แล้ว Save As เป็น .CSV (Comma Delimited) ในที่นี้ตั้งชื่อ salary.csv
      05-saveascsv

      จากนั้นให้ปิด Excel ไปได้เลย

    5. ต่อไป ต้องปรับให้ salary.csv มีการ Encoding เป็น UTF-8 ก่อน โดยใช้โปรแกรม Notepad++
      โดย Right-Click ที่ไฟล์ salary.csv แล้วเลือก Edit with notepad++
      06-editwithnotepadplus

      แล้วเลือก Encoding > Convert to UTF-8
      07-convertutf-8

      เสร็จแล้ว Save แล้วปิดไป

    1. กลับมาที่ Thunderbird ให้สร้าง email ใหม่
      การอ้างอิงข้อมูลใน CSV นั้น ต้องมีเครื่องหมาย {{ }} คร่อมชื่อ Field
      ดังภาพ

      08-write-template

    2. เมื่อต้องการส่ง คลิก File>Mail Merge
      แล้วตั้งค่าดังภาพ โดยเลือกไฟล์ salary.csv ที่แก้ไขแล้วข้างต้น

      09-setting-mailmerge

    3. เมื่อกดปุ่ม OK ระบบก็จะส่งจดหมายไปตาม email ที่กำหนด
      10-sending

    4. ตัวอย่าง email ที่ส่งผ่านระบบ
      11-result

  • แกะรอย Facebook Spam

    ตามรอย Facebook Spam with Virus

    คำเตือน : ขั้นตอนต่อไปนี้ ทำเพื่อให้เห็นว่า Facebook แพร่ Virus มาได้อย่างไรเท่านั้น

    อย่านำไปลองทำที่บ้าน !!! โดยเฉพาะ Windows Users

    1. มี Message มา เป็น Link แปลกๆ

    01-facebook-message

    2. ระแวงไว้ก่อน ลองใช้ Linux Mint LiveCD ตรวจสอบ

    โดยเปิด Link ดังกล่าวด้วย  FireFox (พิมพ์ลงไป ไม่ได้เปิดโดยตรงจาก Facebook)
    พบว่า มันให้ Download ไฟล์ Zip ชื่อ CameraImage-35160.jpg.zip
    ดังภาพ

    02-linuxmintcd

    แต่เดี๋ยวก่อน !!! อย่าใช้คำสั่ง Open เด็ดขาด
    ให้เปลี่ยนเป็น Save File

    หากใครเจอเหตุการณ์เช่นนั้น แล้วเผลอไปเปิด
    คุณก็ติด Virus เข้าแล้ว !!!

    3. จะเห็นได้ว่า พวกนี้จะหลอกให้ผู้ใช้ โดยเฉพาะ Windows ที่มักจะ “ซ่อน” นามสกุลของไฟล์

    (Hide known extensions) ทำให้ไม่เห็นว่าไฟล์ที่ download มานั้นเป็น .Zip ซึ่งจะสามารถสั่งให้
    Execute โปรแกรมหรือ สั่งให้ Virus ทำงานได้ทันที !

    ผู้ใช้ที่ไม่รู้หรือไม่สังเกตุ ก็จะเห็นเป็นแค่
    CameraImage-35160.jpg
    ซึ่งน่าจะเป็นภาพ แทนที่จะเป็น
    CameraImage-35160.jpg.zip
    ซึ่งเป็นไฟล์อันตราย

    4. คราวนี้ มาดูว่า เจ้าไฟล์นี้ มันทำอะไร

    โดยทดลองเปิดดู (บน Linux Mint ไวรัสไม่สามารถทำอะไรได้)
    พบว่าใน Zip ไฟล์นี้ มี ไฟล์ชื่อ
    summertime-fun.jpg.exe
    อยู่ ซึ่งเป็น Virus นั่นเอง (ดังภาพ)
    03-exe-inside

    5. ต่อไป เป็นการส่งไฟล์ไปตรวจสอบ ว่าเป็น Virus ชนิดใด

    ในที่นี้เลือกใช้

    https://www.virustotal.com/en/

    เพราะสามารถส่งไฟล์ไปตรวจสอบได้ทาง Web Browser ดังภาพ
    04-sendfile-to-scan

    โดยเลือกไฟล์ summertime-fun.jpg.exe ข้างต้นไปตรวจสอบ

    ผลที่ได้คือ

    05-scan-result

    สรุป เป็น Virus/Malware ชนิดหนึ่ง

    รายละเอียดยังไม่แน่ชัด แต่ไม่ไปยุ่งกับมันเป็นดีที่สุด

    6. อ่านเพิ่มเติมเกี่ยว Virus/Spam ที่มากับ Facebook ได้ที่

    http://www.hacker9.com/beware-of-spambook-facebook-spam-and-virus.html

     

    สำหรับใครที่เจอเหตุการณ์นี้ แล้ว

    1. ได้รับ Message แล้วคลิก Link … ถ้า Web Browser ของท่านฉลาดสักหน่อย ก็จะถามว่า จะ Save หรือ Open
    (กรณีใช้ Microsoft Windows เท่านั้น)

    ถ้าเลือก Save แล้วไม่ได้ไปเปิดไฟล์ –> ก็ยังปลอดภัย แค่ไปลบไฟล์ทิ้ง จบ
    ถ้าเลือก Open แล้ว ไม่ได้ไป Double Click ไฟล์ที่ซ่อนอยู่ –> ก็ยังปลอดภัย ลบไฟล์ทิ้ง จบ
    แต่ถ้า เลือก Open แล้ว double click –> ท่านน่าจะติด Virus ไปแล้วครับ ถ้าในเครื่องมี Antivirus แต่ไม่ Update
    หรือตรวจสอบไม่เจอ ก็เป็นอันว่า มันฝังในเครื่องแล้ว

    หากติดแล้ว จะเห็นได้ว่า เครื่องจะช้าลง เพราะ Virus/Malware/Trojan พวกนี้จะพยายามติดต่อ Internet เพื่อทำการบางอย่างเช่น แพร่ข้อความ หรือ ที่เคยเจอมา “จะติดต่อกลับไปหาเจ้าของ” ซึ่ง Trojan พวกนี้ จะเปิด Backdoor เอาไว้ ทำให้เครื่องของท่าน
    กลายเป็น Botnet หรือ หุ่นเชิด ผู้ร้ายจะสามารถนำไฟล์อื่นๆมาลงในเครื่องได้ ซึ่งความเสี่ยงได้แก่
    1.1 มีการวาง Key-logger ซึ่งจะดักจับการ กด Keyboard ไว้แล้วส่งไปให้ผู้ร้าย ดังนั้น ถ้าท่านมีการพิมพ์รหัสผ่านต่างๆ
    ก็มีโอกาสที่ผู้ร้าย จะสามารถเข้าถึงบัญชีต่างๆของท่าน และเสี่ยงมากขึ้น หากเป็นข้อมูลทางการเงิน เป็นต้น
    1.2 วางไฟล์ที่จะแพร่ Virus/Malware/Trojan พวกนี้ผ่าน Social Network/Email ไปยังคนที่เกี่ยวข้องกับท่าน
    สร้างความเสียหายเป็นวงกว้าง
    1.3 อื่นๆอีกมากมาย เช่น ก่อกวนทำความเสียหายให้กับเครื่องคอมพิวเตอร์และระบบเครือข่าย

    แนะนำให้หาผู้เชี่ยวชาญใกล้ตัว เพื่อล้าง virus ครับ

    2. ท่านที่ได้รับ Message แต่ไม่ได้เป็น Windows ก็ไม่ต้องเป็นห่วงครับ มันทำอะไรไม่ได้
    แต่ควรระวัง อย่าคลิกอะไรโดยไม่ดู เพราะ ครั้งนี้ ตัวอย่างนี้ เป็นการแพร่ไวรัสแบบ เป็น “ไฟล์”
    ซึ่ง ยังมีอีกรูปแบบหนึ่งคือ มันจะฝังมาใน Temporary Internet File ซึ่ง แค่คลิกลิงค์ ก็ติดแล้ว
    โดย เมื่อคลิกลิงค์ ก็จะไปเปิด Website ที่แพร่ Malware เครื่องของท่านก็จะอยู่ภายใต้การควบคุมทันที
    ซึ่ง ทุกระบบปฏิบัติการ มีโอกาสเสี่ยงได้เท่าๆกัน

     

     

    วิธีป้องกันตัวเอง คือ

    ระแวงในทุกสิ่งที่มาจาก Internet แล้วคุณจะปลอดภัยมากขึ้น
    ไม่รู้ ไม่แน่ใจ อย่าคลิก และ ให้สอบถามจากผู้รู้

  • Record video with RecordMyDesktop for Linux Mint

    วันนี้มีความรู้มาฝากเกี่ยวกับการทำบันทึกวิดีโอแนะนำความรู้จากหน้าจอคอมพิวเตอร์ด้วยตนเอง โดยใช้งานอยู่บนระบบปฏิบัติการ Linux Mint 15 Mate ครับ

    ผมต้องการทำวิดีโอ Preview แผ่น Linux Mint 15 Mate ที่พวกเราจะแจกในงานม.อ.วิชาการ’56 เพื่อเปิดให้มันบรรยายสรรพคุณไปเรื่อยๆในงาน เราไม่ต้องพูดและเด็กๆก็ฟังเมื่อต้องการได้

    ผมจึงได้หาโปรแกรมมาได้โดยการติดตั้งผ่านโปรแกรม Software Manager ของ Linux Mint โปรแกรมนี้มีชื่อว่า gtk-recordmydesktop (ขอขอบคุณเกรียงไกร หนูทองคำ ที่เอื้อเฟื้อคำแนะนำ) แล้วทำการบันทึก ในขณะบันทึกเราก็ต้องมีชุดหูฟังและไมโครโฟนที่พร้อมใช้งาน ผมใช้ Logitech ครับ

    ขั้นตอนการทำวิดีโอง่ายๆ คือ เข้าใช้ระบบปฏิบัติการ Linux Mint แล้วเรียกเมนู Software Manager จากนั้นใส่คำค้นหาเมื่อเจอแล้วดับเบิลคลิกชื่อซอฟต์แวร์ และจบด้วยคลิก Install เมื่อติดตั้งเสร็จก็มาเรียกใช้งาน มันจะอยู่ในเมนู Sound & Video ชื่อโปรแกรมคือ RecordMyDesktop

    position-recordmydesktop-menu

    ตอนนี้โปรแกรมอัดพร้อมแล้วเราก็ไปเปิด Oracle VM VirtualBox สั่งรัน linux mint ที่เป็น Virtual Machine แล้วเมื่อพร้อมก็คลิกที่ปุ่ม Record (ที่ taskbar จะเห็นเป็นสี่เหลี่ยมสีแดง) ก็บรรยายไป คลิกเปิดโปรแกรมไปจนเสร็จ ให้คลิกปุ่มเพื่อ Stop แล้วโปรแกรมมันจะเริ่มเขียนไฟล์จากที่เก็บไว้ใน /tmp จะได้ไฟล์ชื่อ out.ogv ผมก็ rename เป็นไฟล์ชื่อ linuxmint-preview.ogv นำไปไว้บน ftp server ให้ดาวน์โหลดมาเปิดดูและฟังได้

    ผมทำตัวอย่างเก็บไว้อยู่ที่ http://ftp.psu.ac.th/pub/cc/linuxmint-preview.ogv

    ขั้นตอนการเปิดใช้
    1. เปิด Terminal

    2. ดาวน์โหลดด้วย wget มาเก็บไว้เป็นไฟล์อีกไฟล์ให้ใหม่สดเสมอด้วย option -O

    wget http://ftp.psu.ac.th/pub/cc/linuxmint-preview.ogv -O /tmp/current-linuxmint-preview.ogv

    3. วิธีรันแบบ fullscreen

    totem --fullscreen  /tmp/current-linuxmint-preview.ogv

    หวังว่าพวกเราคงสนุกกับบทความนี้นะครับ

  • ทบทวนที่เรียนจากติว PhoneGap ด้วย HTML5 & Jquery Mobile

    ผมต้องออกตัวก่อนนะครับว่า ไม่ได้เก่งในการเขียน Mobile Apps. เลยสักนิด เพียงแต่ได้ไปเข้าเรียนมา 2 วัน ผมรู้สึกว่าเป็นศาสตร์ที่น่าลองทำดู และไม่ควรให้มันจางหายไปหลังจากเรียน เดี๋ยววิทยากรจะเสียใจ อิๆ ผมจึงบันทีกไว้แบบใครอ่านแล้วไม่ชอบก็อย่าถือสาผมนะครับ

    ลองทบทวนจากที่เรียนใน workshop
    ติว “แนะนำและสอนการพัฒนาเบื้องต้นเกี่ยวกับ Application บนมือถือด้วย PhoneGap โดยใช้ HTML5 & Jquery Mobile”

    สภาพแวดล้อม
    – เป็นการติดตั้งทดสอบบน Windows 8 (32 bit) บนเครื่องโน้ตบุ๊ค HP ProBook 6450b RAM 4 GB

    1. download JRE
    http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
    32bit ได้ไฟล์สำหรับติดตั้ง jdk-7u25-windows-i586.exe
    (64bit ได้ไฟล์สำหรับติดตั้ง jdk-7u25-windows-x64.exe)
    รันไฟล์ดังกล่าวเพื่อติดตั้งลงในวินโดวส์

    2. download ADT
    http://developer.android.com/sdk/index.html
    32bit ได้ไฟล์ที่ zip ไว้คือ adt-bundle-windows-x86-20130729.zip
    (64bit ได้ไฟล์ที่ zip ไว้คือ adt-bundle-windows-x86_64-20130717.zip)
    แตกไฟล์ดังกล่าวออกมาแล้ว
    32bit ได้ไดเรกทอรี adt-bundle-windows-x86-20130729 ไว้ที่ C:\
    (64bit ได้ไดเรกทอรี adt-bundle-windows-x86_64-20130717 ไว้ที่ C:\)
    สร้าง shortcut ไปยังไฟล์ชื่อ eclipse.exe ในไดเรกทอรี eclipse ไว้บน Desktop
    ทดสอบรันโปรแกรม eclipse
    ตั้งชื่อ workspace ไว้ที่ C:\phonegap
    phonegap-000
    3. สร้าง Andriod Device ในโปรแกรม Java – ADT
    เมนู Windows > Android Virtual Device Manager
    แท็บ Android Virtual Devices คลิก New…
    ADV Name: ตั้งชื่อ ADV-7-inch
    Device: เลือก Nexus 7
    Target: เลือก Android 4.3 – API Level 18
    (adt-bundle-windows-x86-20130729.zip จะได้ Android 4.3 – API Level 18)
    Front Camera: None
    RAM: 768
    ทดสอบเปิด ADV-7-inch คลิก Start แล้วรอ ค่อนข้างนาน
    phonegap-001

    4. สร้าง New Android Application
    File > New > New Android Application
    ตั้งชื่อว่า phonegappsu
    ที่เหลือใช้ค่า default
    phonegap-002
    หน้าต่อไป Create Project in Workspace
    ตั้ง Location เป็นชื่อ C:\phonegap\phonegappsu
    phonegap-003
    หน้าต่อไป ใช้ค่า default
    phonegap-004
    หน้าต่อไป ใช้ค่า Blank Activity
    phonegap-005
    หน้าต่อไป ใช้ค่า default (Activity Name: MainActivity)
    phonegap-006
    คลิก Finish แล้วจะได้หน้าต่างของรายละเอียดเยอะแยะ
    phonegap-007

    5. download phonegap
    http://phonegap.com/install/ เลือก PhoneGap2.9.0
    ได้ไฟล์ที่ zip ไว้คือ phonegap-2.9.0.zip
    แตกไฟล์ดังกล่าวออกมาแล้ว ได้ไดเรกทอรี phonegap-2.9.0

    6. ที่ Windows Explorer เข้าไปในไดเรกทอรี phonegap-2.9.0
    ก็อปปี้เฉพาะไดเรกทอรี lib\android\example\assets\www
    phonegap-008
    ที่รายการด้านซ้ายของโปรแกรม ADT คลิกขวาที่ phonegappsu > assets แล้ววาง www ไว้

    ก็อปปี้เฉพาะไดเรกทอรี lib\andriod\xml
    phonegap-009
    ที่รายการด้านซ้ายของโปรแกรม ADT คลิกขวาที่ phonegappsu > res แล้ววาง xml ไว้

    ก็อปปี้เฉพาะไดเรกทอรี lib\android\cordova­2.9.0.jar
    phonegap-010
    ที่รายการด้านซ้ายของโปรแกรม ADT คลิกขวาที่ phonepagpsu > libs แล้ววาง cordova­2.9.0.jar ไว้
    รวมแล้วจะได้หน้าตาประมาณนี้
    phonegap-011

    7. แก้ไขไฟล์  MainActivity.java ( ข้อนี้ต้องระวังการ copy แล้ว paste เครื่องหมายคำพูด และ ; )
    ที่รายการด้านซ้ายของโปรแกรม ADT ใต้ Project ที่สร้าง
    phonegappsu > src > com.example.phonegappsu> MainActivity.java
    โดยคลิกขวา > ใช้คำสั่ง Open With > Text Editor
    (1)แก้ไขบรรทัดเดิม public class MainActivity extends Activity
    เป็น public class MainActivity extends DroidGap
    (2)แก้ไขชุดบรรทัด import เดิมดังนี้
    ลบบรรทัด import android.app.Activity;
    เพิ่มบรรทัด import org.apache.cordova.*;
    (3)แก้ไขบรรทัดที่มีคำว่า protected เป็น public
    (4)ใส่ comment บรรทัด //setContentView(R.layout.activity_main);
    (5)แล้วเพิ่มบรรทัด super.loadUrl(“file:///android_asset/www/index.html”);
    จะได้ประมาณนี้

    phonegap-012

    code

    package com.example.phonegap;
    
    import android.os.Bundle;
    import org.apache.cordova.*;
    import android.view.Menu;
    
    public class MainActivity extends DroidGap {
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            //setContentView(R.layout.activity_main);
            super.loadUrl("file:///android_asset/www/index.html");
        }
    
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.main, menu);
            return true;
        }
        
    }
    
    

    8. ต้องแก้ไข AndroidManifest.xml
    โดยคลิกขวา > ใช้คำสั่ง Open With > Text Editor
    ใส่ Permission Tag ดังนี้

    code

    <uses-permission android:name="android.permission.VIBRATE"/> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 
    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/> 
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/> 
    <uses-permission android:name="android.permission.INTERNET"/> 
    <uses-permission android:name="android.permission.RECEIVE_SMS"/> 
    <uses-permission android:name="android.permission.RECORD_AUDIO"/> 
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/> 
    <uses-permission android:name="android.permission.READ_CONTACTS"/> 
    <uses-permission android:name="android.permission.WRITE_CONTACTS"/> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.CAMERA"/>

    ไว้ก่อนบรรทัดปิด Tag </manifest>

    9.  ติดตั้ง jquery.mobile
    download phonegapcomponent (jquery.mobile)
    เอาจาก facebook group ชื่อ phonegap for psu เลือก files (สามารถโหลดจาก http://jquerymobile.com/ ได้เลย)
    ได้ไฟล์ที่ zip ไว้คือ PhoneGapComponent.zip
    แตกไฟล์ดังกล่าวออกมาแล้ว ได้ไดเรกทอรี PhoneGapComponent
    ที่ Windows Explorer เข้าไปในไดเรกทอรี PhoneGapComponent
    ก็อปปี้เฉพาะไดเรกทอรี css และ js
    ที่รายการด้านซ้ายของโปรแกรม ADT คลิกขวาที่ phonegappsu > assets > www แล้ววาง css กับ js ไว้

    10. ทดสอบสร้าง Application จากตัวอย่าง index.html ที่ให้มา
    จะได้ไฟล์ phonegappsu.apk
    ที่รายการด้านซ้ายของโปรแกรม Eclipse ใต้ Project ที่สร้าง
    assets > www > โดยคลิกขวาที่ไฟล์  index.html > ใช้คำสั่ง Open With > Text Editor
    สั่ง Run
    phonegap-014

    11. ในข้อถัดไปเป็นตัวอย่างใน workshop เอาไฟล์ตัวอย่างจากที่นี่
    https://sharedrive.psu.ac.th/public.php?service=files&t=04facfa02dc0204fadbf00925d3c431c )

    12. ทดสอบด้วยตัวอย่างที่ 1 ชื่อ example1.html
    (ตัวอย่างนี้จะเปิด dialog หลังจากเลือกเมนู และบางเมนูเมื่อเลือกก็จะซ่อนข้อความ)
    นำไฟล์ตัวอย่าง example1.html ไปวางไว้ที่ phonegappsu > www
    phonegap-015
    แก้ไขไฟล์  MainActivity.java
    ที่รายการด้านซ้ายของโปรแกรม Eclipse ใต้ Project ที่สร้าง
    phonegappsu > src > com.example.phonegappsu> MainActivity.java
    แก้ไขบรรทัด super.loadUrl(“file:///android_asset/www/index.html”);
    เป็น super.loadUrl(“file:///android_asset/www/example1.html”);
    รันโปรเจกต์ ได้ผลแสดงบน ADV
    phonegap-016

    13. ทดสอบด้วยตัวอย่างที่ 2 ชื่อ example2.html
    (ตัวอย่างนี้จะมีปุ่ม back ให้ย้อนกลับได้)
    นำไฟล์ตัวอย่าง example2.html ไปวางไว้ที่ phonegappsu > www
    phonegap-017
    แก้ไขไฟล์  MainActivity.java
    ที่รายการด้านซ้ายของโปรแกรม Eclipse ใต้ Project ที่สร้าง
    phonegappsu > src > com.example.phonegappsu> MainActivity.java
    แก้ไขบรรทัด super.loadUrl(“file:///android_asset/www/index.html”);
    เป็น super.loadUrl(“file:///android_asset/www/example2.html”);
    รันโปรเจกต์ ได้ผลแสดงบน ADV
    phonegap-018

    14. ทดสอบด้วยตัวอย่างที่ 3 ชื่อ dbuser.html
    (ตัวอย่างนี้ป้อนชื่อ นามสกุล เพศ เก็บลง sqlite database บน android และแสดงรายการ
    ขอบคุณกิตติพัฒน์ อุบลกาญจน์ที่เป็นเจ้าของต้นฉบับไฟล์ที่แก้ไปเยอะจากที่วิทยากรให้ลองทำ)
    นำไฟล์ตัวอย่าง dbuser.html ไปวางไว้ที่ phonegappsu > www
    phonegap-019
    แก้ไขไฟล์  MainActivity.java
    ที่รายการด้านซ้ายของโปรแกรม Eclipse ใต้ Project ที่สร้าง
    phonegappsu > src > com.example.phonegappsu> MainActivity.java
    แก้ไขบรรทัด super.loadUrl(“file:///android_asset/www/index.html”);
    เป็น super.loadUrl(“file:///android_asset/www/dbuser.html”);
    รันโปรเจกต์ ได้ผลแสดงบน ADV
    phonegap-020

    15. หากต้องการทดสอบบน Android Smartphone เครื่องจริง ก็เอาไฟล์ phonegappsu.apk ไปใส่แล้วติดตั้ง
    ซึ่งไฟล์อยู่ที่ phonegappsu > bin

    ลองทำตามดูนะครับ