Category: Linux (OS, shell script, etc)

  • ช่องโหว่ซอฟต์แวร์ Bash Vulnerability วิธีตรวจสอบและแก้ไข

    ช่องโหว่อันตรายของซอฟต์แวร์ Bash
    ————————————————–
    -การตรวจสอบช่องโหว่ซอฟต์แวร์ Bash Vulnerability ในระบบปฎิบัติการ Unix & Linux
    ทดสอบโดยพิมพ์คำสั่ง
    env VAR='() { :;}; echo Bash is vulnerable!' bash -c "echo Bash Test"

    หากปรากฎข้อความว่า Bash is vulnerable! แสดงว่าต้องรีบปรับปรุงซอฟต์แวร์ bash ทันที
    -วิธีการป้องกันและแก้ไขอัปเดตซอฟต์แวร์ bash
    หากใช้ Ubuntu / Debian ปรับแก้ไขอัปเดตเฉพาะปัญหา bash vulnerability

    sudo apt-get update && sudo apt-get install --only-upgrade bash

    ปรับแก้ไขอัปเดตทั้งระบบ

    sudo apt-get update && apt-get upgrade

    หากใช้ CentOS / Redhat / Fedora ปรับแก้ไขอัปเดตเฉพาะปัญหา bash vulnerability

    sudo yum update bash

    ขอบคุณครับ ^_^

  • เทคนิคการใช้ vi

    1. เปิด 2 ไฟล์พร้อมกัน แยกแบบแนวตั้ง
    vi test.php vi-1

    กด Esc : vsp function.inc.php
    จะได้ผลอย่างนี้

    vi-2

    คำสั่งที่น่ารู้
    Ctrl+w w สลับระหว่างหน้าจอ
    Ctrl+w q ปิดไฟล์
    Ctrl+w v เปิดไฟล์เดียวกันที่ยาวมาก ต้องการด้านนึงดูหัวไฟล์ อีกด้านนึงดูท้ายไฟล์

    2. หากต้องการเลื่อน Code หลายๆบรรทัด ไปทางขวามือ 5 Space
    Ctrl + V แล้ว เลือกบรรทัดที่ต้องการ จากนั้น
    Shift + I แล้ว เคาะ Space Bar 5 ครั้ง จากนั้น
    แล้วกดปุ่ม Esc

  • ติดตั้ง Pykota บน Ubuntu Server 14.04.1 LTS

    1. ติดตั้งโปรแกรมที่จำเป็นก่อน
    sudo apt-get install cups subversion postgresql postgresql-client postgresql-common libX11-dev libxt-dev libxext-dev python-dev python-jaxml python-reportlab python-reportlab-accel python-pygresql python-osd python-egenix-mxdatetime python-imaging python-pysnmp4 python-chardet python-pam python-pysqlite2 python-mysqldb python-ldap apparmor-utils

    2. แก้ config ของ cups
    #sudo vi /etc/cups/cupsd.conf

    ที่ <Location />
    เพิ่ม  allow all

    ที่ <Location /admin>
    เพิ่ม  allow ip_admin

    ที่ <Policy default>
    comment JobPrivateValues default
    เพิ่ม
    JobPrivateValues job-originating-host-name
    ที่ <Policy authenticated>
    comment JobPrivateValues default
    เพิ่ม
    JobPrivateValues job-originating-host-name

    3. แก้ config ของ PostgreSQL
    #sudo pico /etc/postgresql/9.3/main/pg_hba.conf
    เติมข้อความนี้ต่อไปที่ท้ายสุดของแฟ้ม
    host all all 10.0.5.3/24 trust
    ***ให้เปลี่ยนเลข ip จาก 10.0.5.3 เป็นเลข ip ของ server ที่กำลังใช้

    4. ติดตั้งเครื่องพิมพ์
    เปิด Browser ไปที่ url http://ip_server:631
    cups001

    คลิก tab Administration
    cups002

    คลิก Add Printer
    cups003

    เลือก Printer คลิก Continue

    cups004

    ใส่รายละเอียด ของเครื่องพิมพ์
    ติ๊ก เลือก Share This Printe
    คลิก Continue


    cups005

    เลือก Driver ของเครื่องพิมพ์ คลิก Add Printer
    cups006
    คลิก  Set Default Option

    ทดสอบการพิมพ์โดยเลือก Print Test Page
    cups007

    5. ติดตั้งเครื่องพิมพ์บนเครื่อง Client และทดสอบการพิมพ์

    6. ติดตั้งโปรแกรม Pykota
    #cd /usr/share
    #svn co http://svn.pykota.com/pykota/trunk pykota
    #cd pykota
    #python checkdeps.py
    #python setup.py install

    7. สร้างผู้ใช้ pykota ด้วยคำสั่ง
    #sudo adduser –system –group –home /etc/pykota –gecos Pykota pykota
    #sudo adduser lp pykota

    8. จัดการ postgresql ต่อดังนี้
    #sudo su – postgres -c “psql -f /usr/share/pykota/initscripts/postgresql/pykota-postgresql.sql template1”

    9. ทำให้ cups รู้จัก Pykota
    #cd /usr/lib/cups/backend
    #sudo ln -sf /usr/share/pykota/bin/cupspykota
    #sudo chmod -Rf 755 /usr/share/pykota/bin/*
    #sudo chmod -Rf 755 /usr/lib/cups/backend*
    #sudo /etc/init.d/cups restart

    แก้ไขแฟ้ม /etc/cups/printers.conf
    #sudo vi /etc/cups/printers.conf
    <DefaultPrinter abc>
    DeviceURI parallel:/dev/lp0
    ที่บรรทัด DeviceURI parallel:/dev/lp0
    ให้แทรกเพิ่มคำว่า cupspykota:// เข้าไป กลายเป็นดังตัวอย่าง
    DeviceURI cupspykota://parallel:/dev/lp0
    ***abc คือชื่อเครื่องพิมพ์ที่ add ไว้ตามข้อ 4.

    sudo cp /usr/share/pykota/conf/pykota.conf.sample /etc/pykota/pykota.conf
    sudo cp /usr/share/pykota/conf/pykotadmin.conf.sample /etc/pykota/pykotadmin.conf
    sudo chown -Rf pykota.pykota /etc/pykota/

    10. ทำให้ apparmor รู้จัก Pykota
    aa-complain cupsd

    11. แก้ไขแฟ้ม /etc/pykota/pykota.conf
    ไปที่ประมาณบรรทัด 987 แล้วลบบรรทัดข้อความว่า policy: deny ทิ้ง
    แล้วไปที่บรรทัดล่างสุดของแฟ้ม เติมต่อท้ายว่า
    [abc]
    enforcement : strict
    ***abc คือชื่อเครื่องพิมพ์ที่ add ไว้ตามข้อ 4.

    12. เพิ่มเครื่องพิมพ์ให้ Pykota
    #pkprinters –add –charge 1.0 –description “Printer for ITZONE 3nd” abc
    ***abc คือชื่อเครื่องพิมพ์ที่ add ไว้ตามข้อ 4.
    ***charge 1.0 คือคิดค่าพิมพ์หน้าละ 1 บาท

    13. เพิ่ม User ให้ Pykota
    /usr/local/bin/pkusers –add –limitby balance –balance 20 patt.e
    /usr/local/bin/edpykota –add –printer abc patt.e
    ***abc คือชื่อเครื่องพิมพ์ที่ add ไว้ตามข้อ 4.
    ***–add คือเพิ่ม, User
    ***–limitby balance คือ limit การพิมพ์ด้วย balance
    ***–balance 20 คือ กำหนด โควต้าไว้ 20
    ถ้า +20 คือ เพิ่มจากของเดิม 20
    ถ้า -20 คือ ลดจากของเดิม 20
    ถ้า 20 กำหนดให้เป็น 20
    ***patt.e คือ user
    ถ้าไม่กำหนด user คือทำกับทุก user ที่อยู่ใน Pykota

    14. ทดสอบพิมพ์จากเครื่อง Client

  • How to: PSU OpenVPN Ubuntu 14.04/15.04/15.10/Linux Mint 17/17.1/17.2

    • ติดตั้ง net-workmanager-openvpn

    Screenshot from 2014-06-24 10:53:42

    • คลิก Ubuntu Button แล้วพิมพ์ netw เลือก Network Connections

    Screenshot from 2014-06-24 11:15:39

    • ได้ดังภาพ คลิก Add

    Network Connections_002

    • ได้ดังภาพ

    Screenshot from 2014-06-24 09:58:04

    • เลือก OpenVPN แล้วคลิก Create…

    Screenshot from 2014-06-24 10:00:06

    Screenshot from 2014-06-24 10:11:33

    • คลิก Advanced เลือกดัังภาพ

    Screenshot from 2014-06-24 13:34:37

    • กด OK ออกมาแล้วคลิกที่ IPv4 Settings ตั้งค่าตามภาพ

    Screenshot from 2014-06-24 10:21:34

    • คลิก IPv6 Settings ตั้งค่าตามภาพ

    Screenshot from 2014-06-24 13:43:54

    • กลับมาแท็บ VPN คลิก Save… ได้ดังภาพ คลิก Close

    Screenshot from 2014-06-24 10:11:58

    • เหลือบมองมุมขวาบนจะมีรูปภาพ Screenshot from 2014-06-24 13:46:19 หรือ Screenshot from 2014-06-24 14:11:36 ให้คลิกที่รูปนี้แล้วเลือก VPN Connection -> PSU

    Screenshot from 2014-06-24 13:48:27

    • รอจนมีข้อความดังภาพปรากฎที่มุมบนขวา เป็นอันเสร็จ

    Screenshot from 2014-06-24 13:54:27สำหรับ Linux Mint 17

    • ติดตั้ง network-manager-openvpn-gnome แทน นอกนั้นเหมือนกัน

    เพิ่มเติม เพื่อให้สามารถคลายแฟ้ม vpn_package_for_all_xp-vista-7.exe ได้ต้องติดตั้งโปแกรมเหล่านี้เพิ่มเติม p7zip-rar, p7zip-full, unace, unrar, zip, unzip, sharutils, rar, uudeview mpack, arj, cabextract, file-roller โดยพิมพ์คำสั่ง

    sudo apt-get install p7zip-rar p7zip-full unace unrar zip unzip sharutils rar uudeview mpack arj cabextract file-roller

    จบจริงๆ … ขอให้สนุกครับ

  • วิธีการเขียน Script ตรวจสอบ Server Performance สำหรับเครื่อง Linux Server

    ขอนำเสนอ PHP Script และ Terminal linux program สำหรับใช้ Monitor Server Performance สำหรับ Ubuntu Linux ดังนี้

    คำสั่งตรวจสอบ Hostname

    hostname -A

    วิธีตรวจสอบ Traffic จาก ifconfig ด้วย PHP5 Script

    <?php
    //Net Traffic
    exec("ifconfig | grep 'RX bytes'",$net);
    $neteth0 = explode(":",$net[0]);
    $netin1 = explode(" ",$neteth0[1]);
    $netin = $netin1[0];
    $netout1 = explode(" ",$neteth0[2]);
    $netout = $netout1[0];
    unset($net);
    unset($neteth0);
    unset($netin1);
    unset($netout1);
    exec("cat net.db",$nethistory);
    $hnet = explode(":",$nethistory[0]);
    $diff = time()-$hnet[0];
    $cnetin = round(($netin-$hnet[1])/$diff,0);
    $cnetout = round(($netout-$hnet[2])/$diff,0);
    unset($nethistory);
    exec("echo ".time().":".$netin.":".$netout." > net.db");
    echo date("d-m-Y H:i:s",time())." Traffic In : ".$cnetin.", Traffic Out : ".$cnetout;
    ?>

    วิธีการตรวจสอบ CPU จาก /proc/cpuinfo ด้วย PHP5 Script

    <?php
    //CPU
    exec("cat /proc/cpuinfo | grep MHz | head -1",$clockrate);
    exec("cat /proc/cpuinfo | grep MHz | wc -l",$cpucount);
    $clockrate1 = explode(":",$clockrate[0]);
    $maxcpu = trim($clockrate1[1])*$cpucount[0];
    unset($clockrate);
    unset($clockrate1);
    unset($cpucount);
    exec("vmstat 1 2 | tail -1 | awk '{ print $15 }'",$pcpufree);
    $pcpuuse = 100-$pcpufree[0];
    $cpuuse = round(($pcpuuse*$maxcpu)/100,0);
    unset($pcpufree);
    echo "MAX CPU Speed : ".$maxcpu." MHz\n";
    echo "CPU Use : ".$cpuuse." MHz (".$pcpuuse." %)\n";
    ?>

    วิธีการตรวจสอบ Memory จาก free -m ด้วย PHP5 Script

    <?php
    //MEM
    exec("free -m | grep Mem: | awk '{print $2\":\"$3}'",$ram);
    $ramraw = explode(":",$ram[0]);
    $ramtotal = $ramraw[0];
    $ramuse = $ramraw[1];
    $pramuse = round(($ramuse/$ramtotal)*100,0);
    unset($ram);
    unset($ramraw);
    echo "MAX RAM : ".$ramtotal." MB\n";
    echo "MEMORY Use : ".$ramuse." MB (".$pramuse." %)\n";
    ?>

    คำสั่งตรวจสอบ Connection (ยกตัวอย่างเฉพาะ port 80)

    netstat -na | grep 192.168.99.1:80 | wc -l

    คำสั่งตรวจสอบ Unique IP (ยกตัวอย่างเฉพาะ port 80)

    netstat -na | grep 192.168.99.1:80 | sed 's/::ffff://g' | awk '{print $5}' | cut -f 2 -d ' ' | cut -f 1 -d ':' | sort | uniq | wc -l

    จะเห็นได้ว่าเราสามารถเขียน script monitor ได้หลากหลายมุมมอง ได้ตามต้องการเลยครับ

  • การตรวจสอบสถานะการให้บริการ Web Server ด้วย WGET และสร้าง Shell Script เพื่อตรวจสอบอัตโนมัติ

    ขอนำเสนอวิธีการตรวจสอบสถานะการให้บริการด้วยคำสั่ง wget และการสร้าง Shell Script เพื่อให้ทำงานได้อย่างอัตโนมัติ

    การตรวจสอบสถานะการให้บริการด้วย WGET

    วิธีติดตั้ง wget สำหรับ ubuntu 14.04

    สามารถติดตั้งโดยใช้คำสั่ง (โดยปกติจะลงมาให้อยู่แล้ว)

    # sudo apt-get install -y wget

    วิธีติดตั้ง wget สำหรับ windows

    สามารถ Download ได้ที่

    http://downloads.sourceforge.net/project/gnuwin32/wget/1.11.4-1/wget-1.11.4-1-setup.exe

    สามารถเปิด command prompt รันได้ที่ path นี้ (ยกตัวอย่างจาก windows 64 bit)

    C:\Users\xxx>cd C:\Program Files (x86)\GnuWin32\bin
    
    C:\Program Files (x86)\GnuWin32\bin>wget
    SYSTEM_WGETRC = c:/progra~1/wget/etc/wgetrc
    syswgetrc = C:\Program Files (x86)\GnuWin32/etc/wgetrc
    wget: missing URL
    Usage: wget [OPTION]... [URL]...
    
    Try `wget --help' for more options.

    ตัวอย่างคำสั่งที่ใช้สำหรับโหลด html URL ที่ต้องการตรวจสอบ

    wget -nv --timeout 2 --connect-timeout=10 -t 1 http://webserver1.testlab -O /tmp/webserver1-tmp
    
    -nv : ใช้สำหรับปิดการแสดงผล แต่ยังแสดงผล error และข้อมูลเบื้องต้น
    --timeout [sec] : ใช้สำหรับกำหนดค่า timeout ในการเชื่อมต่อไปยัง web server
    --connect-timeout [sec] : ใช้กำหนดเวลาในกรณีที่การเชื่อมต่อไม่สิ้นสุดในเวลาที่กำหนด
    -t [sec] : จำนวนครั้งในการ retry connection
    -O : บันทึกผลลัพธ์ไปยังไฟล์

    ในกรณีที่ต้องการโหลด html URL ประเภท https ให้ทำการข้ามการตรวจสอบ certificate ด้วยตัวอย่างคำสั่งดังนี้

    wget -nv --timeout 2 --connect-timeout=10 -t 1 --no-check-certificate https://webserver1.testlab -O /tmp/webserver1-https-tmp

    หลังจากได้ไฟล์ผลลัพธ์ของหน้า html website เป้าหมายแล้ว สามารถใช้โปรแกรม grep เพื่อตรวจสอบว่าปรากฎข้อความที่แสดงว่าหน้า web ทำงานปกติหรือไม่ เช่น

    grep WEBSERVER /tmp/webserver1-tmp

    หลังจากนั้นเราสามารถประยุกต์เพื่อเขียน Shell Script ง่าย ๆ ที่สามารถตรวจสอบ Web Server เพื่อดูว่า Web ปกติหรือไม่ในขั้นตอนถัดไป

    วิธีการเขียน Shell Script เพื่อตรวจสอบการใช้งานแบบอัตโนมัติ

    Shell Script สำหรับตรวจสอบ Web Server

    – ทำการสร้างไฟล์ /home/[user]/checkweb.sh

    nano /home/testlab/checkweb.sh
    

    – สร้าง script ข้อความดังนี้

    *ตัวอย่างรูปแบบ sh shell

    #!/bin/sh
    url1='webserver1.testlab'
    url2='webserver2.testlab'
    searchtxt='WEBSERVER'
    #URL PATH
    path='/'
    while(true);
    do
      cp /dev/null /tmp/server-status
      for i in $(seq 1 2)
      do
         eval wget -q --timeout 2 --connect-timeout=10 -t 1 http://\${url${i}}$path -O /tmp/\${url${i}}-tmp
         eval echo "Get URL : http://\${url${i}}$path"
         status=$(eval grep $searchtxt /tmp/\${url${i}}-tmp | wc -l)
         if [ $status -ge "1" ]; then
            eval echo \${url${i}}" : STATUS = UP"
            eval echo \${url${i}}" UP" >> /tmp/server-status
         else
            eval echo \${url${i}}" : STATUS = DOWN"
            eval echo \${url${i}}" DOWN" >> /tmp/server-status
         fi
      done
      echo "Sleep 15 secs....."
      sleep 15
      /usr/bin/clear
    done
    

    *ตัวอย่างรูปแบบ bash shell

    #!/bin/bash
    url[1]='webserver1.testlab'
    url[2]='webserver2.testlab'
    searchtxt='WEBSERVER'
    #URL PATH
    path='/'
    while(true);
    do
      cp /dev/null /tmp/server-status
      for i in {1..2}
      do
         wget -q --timeout 2 --connect-timeout=10 -t 1 http://${url[$i]}$path -O /tmp/${url[$i]}-tmp
         echo "Get URL : http://${url[$i]}$path"
         status=$(grep $searchtxt /tmp/${url[$i]}-tmp | wc -l)
         if [ $status -ge "1" ]; then
            echo ${url[$i]}" : STATUS = UP"
            echo ${url[$i]}" UP" >> /tmp/server-status
         else
            echo ${url[$i]}" : STATUS = DOWN"
            echo ${url[$i]}" DOWN" >> /tmp/server-status
         fi
      done
      echo "Sleep 15 secs....."
      sleep 15
      /usr/bin/clear
    done
    

    – ทำการเปลี่ยน permission ให้สามารถ execute ได้

    chmod 755 checkweb.sh

    – ทดสอบ execute script จะได้ข้อความดังนี้

    testlab@lbs:~$ ./checkweb.sh 
    Get URL : http://webserver1.testlab/
    webserver1.testlab : STATUS = UP
    Get URL : http://webserver2.testlab/
    webserver2.testlab : STATUS = UP
    Sleep 15 secs.....
    

    สามารถนำ script ดังกล่าวไปปรับเปลี่ยนเพื่อใช้ในการรันเป็น daemon ได้ตามสะดวกครับ

  • ความเข้าใจในการสร้าง virtualhost ของ apache2 web server บน ubuntu 14.04 server ฉบับ workshop

    ถ่ายทอดความเข้าใจในการสร้าง virtualhost ของ apache2 web server บน ubuntu 14.04 server ฉบับ workshop พร้อมตัวอย่างติดตั้ง phpmyadmin และ joomla site เป็น virtualhost

    -:เกรินนำ:-
    การเปลี่ยนจาก ubuntu 12.04 server ไปเป็น ubuntu 14.04 server เมื่อเร็วๆนี้ ส่งผลให้มีการเปลี่ยนแปลงวิธีการ config virtualhost บน Apache2 web server

    เพราะว่า Apache2 web server (2.4.x ขึ้นไป) เช่น 2.4.7 ที่มาพร้อม ubuntu 14.04 server จะมีการจัดการเรื่อง Document root ที่แตกต่างจากเวอร์ชั่นที่ต่ำกว่า เช่น Document root จะอยู่ที่ /var/www/html แทนที่จะเป็น /var/www เหมือนเดิม ดังนั้นเมื่อทำ virtualhost จึงต้องมีการเลือกวางไดเรกทอรีของเว็บเพจที่จะติดตั้ง ตามความคิดเห็นของผมคิดว่าสามารถเลือกวางได้เป็น 2 แบบ
    แบบที่ 1 วางไว้ที่ /var/www/html/ หรือ
    แบบที่ 2 วางไว้ที่ /var/www/

    มาดูกันครับว่าจะต้องทำอย่างไรบ้าง เริ่มต้นที่หลังจากติดตั้ง ubuntu 14.04 server เสร็จ พร้อมทั้งได้ติดตั้ง packages LAMP หากไม่แน่ใจก็ตรวจสอบ/ติดตั้งเพิ่มด้วยคำสั่ง sudo tasksel

    ในบทความนี้มีการอ้างถึง editor ที่ใช้แก้ไขไฟล์ชื่อ vi (ผู้เขียนถนัดและชอบ) หากไม่คุ้นเคยวิธีใช้ก็ให้เปลี่ยนเป็น editor ชื่อ nano ซึ่งจะเป็น full screen editor

    หากต้องการทดสอบทำตามไปด้วย ให้ดาวน์โหลด LSA-router.ova จาก http://ftp.psu.ac.th/pub/psulab/LSA-II/ แล้วนำไป import เข้าโปรแกรม Oracle VM VirtualBox จากนั้น Start VM LSA-router (IP ที่ใช้คือ 10.0.100.1 เป็นทั้ง NAT router, DNS server และ DHCP server)

    แล้วก็สร้าง New VM ขึ้นมา 1 ตัว โดยตั้งค่า Network เป็นแบบ Internal network และมีค่า name คือ intnet พร้อมทั้งติดตั้ง Ubuntu 14.04 server ให้เสร็จ โดยตั้งค่า IP 10.0.100.9

    1.แบบใช้ NameVirtualHost

    -:การตรวจสอบความพร้อมของ apache2 web server:-
    เข้าไปที่ไดเรกทอรี
    mama@ubuntu:$ cd /var/www/html/

    เริ่มต้น apache2 web server จะมีไฟล์ index.html มาให้
    mama@ubuntu:/var/www/html$ ls
    index.html

    ทดสอบด้วยคำสั่ง w3m ได้
    mama@ubuntu:/var/www/html$ w3m http://127.0.0.1
    เห็นหน้าเว็บเพจ default แสดงข้อความ
    Apache2 Ubuntu Default Page
    It work!
    กด Ctrl+c เลิกดู

    ลองสร้างไฟล์ test.php
    mama@ubuntu:/var/www/html$ sudo vi test.php
    เพิ่มบรรทัด 1 บรรทัด

    <?php phpinfo() ?>

    ผลลัพธ์จะมีไฟล์เพิ่มขึ้น
    mama@ubuntu:/var/www/html$ ls
    index.html  test.php

    เมื่อดูข้อมูลด้วยคำสั่ง cat
    mama@ubuntu:/var/www/html$ cat test.php
    จะเห็นแบบนี้
    <?php phpinfo() ?>

    ทดสอบด้วยคำสั่ง w3m
    mama@ubuntu:/var/www/html$ w3m http://127.0.0.1/test.php
    เห็นหน้าเว็บเพจ php info

    -:เริ่มทดสอบแบบที่ 1:-
    แบบ 1 สร้างไดเรกทอรีที่เก็บไฟล์ virtual host ไว้ที่ /var/www/html

    จะสร้าง virtual host ชื่อ iserver.example.com

    ให้ตรวจสอบ domain name ว่ามีแล้วยัง
    mama@ubuntu:$ host iserver.example.com
    iserver.example.com has address 10.0.100.9

    เข้าไปที่ VM LSA-router (IP 10.0.100.1) ด้วย username: mama มี password: 123456
    และเพิ่มค่า domain name ดังนี้
    mama@myrouter:~$ sudo vi /var/cache/bind/db.example.com
    เพิ่มบรรทัด

    iserver.example.com.        IN A     10.0.100.9

    แล้ว reload DNS server
    mama@myrouter:~$ sudo service bind9 reload

    กลับไปที่ VM web server (IP 10.0.100.9)
    สร้างที่เก็บไฟล์ของ virtual host ไว้ที่ /var/www/html
    mama@ubuntu:/var/www/html$ sudo mkdir iserver.example.com

    ผลลัพธ์จะมีไดเรกทอรีเพิ่มขึ้น
    mama@ubuntu:/var/www/html$ ls
    index.html  iserver.example.com  test.php

    สร้างไฟล์ตัวอย่างชื่อ index.php
    mama@ubuntu:/var/www/html$ sudo vi iserver.example.com/index.php
    ให้มีบรรทัดดังนี้

    <?php echo "Hello, world! from iserver.example.com"; ?>

    ผลลัพธ์จะมีไฟล์เพิ่มขึ้น
    mama@ubuntu:/var/www/html$ ls iserver.example.com/
    index.php

    เมื่อดูข้อมูลด้วยคำสั่ง cat
    mama@ubuntu:/var/www/html$ cat iserver.example.com/index.php
    <?php echo “Hello, world! from iserver.example.com”; ?>

    ต่อไปเราจะเพิ่ม site ให้ apache2 web server รู้จัก
    เข้าไปที่ไดเรกทอรีสำหรับเพิ่ม site
    mama@ubuntu:/var/www/html$ cd /etc/apache2/sites-available

    จะมีไฟล์ตอนเริ่มต้นแค่นี้
    mama@ubuntu:/etc/apache2/sites-available$ ls
    000-default.conf  default-ssl.conf

    ให้ copy ไฟล์ 000-default.conf เพื่อความสะดวก ชื่อมี .conf ต่อท้ายด้วย
    mama@ubuntu:/etc/apache2/sites-available$ sudo cp 000-default.conf iserver.example.com.conf

    ผลลัพธ์จะมีไฟล์เพิ่มขึ้น
    mama@ubuntu:/etc/apache2/sites-available$ ls
    000-default.conf  default-ssl.conf  iserver.example.com.conf

    แก้ไขไฟล์ iserver.example.com.conf เพื่อกำหนดค่า virtualhost
    mama@ubuntu:/etc/apache2/sites-available$ sudo vi iserver.example.com.conf
    แก้ไขเฉพาะบรรทัดข้างล่างนี้

    NameVirtualHost iserver.example.com:80
     <VirtualHost iserver.example.com:80>
     ServerName iserver.example.com
     ServerAdmin webmaster@localhost
     DocumentRoot /var/www/html/iserver.example.com

    เพิ่ม site ให้ apache2 web server รู้จัก
    mama@ubuntu:/etc/apache2/sites-available$ sudo a2ensite iserver.example.com

    สั่ง reload apache2 web server
    mama@ubuntu:/etc/apache2/sites-available$ sudo service apache2 reload

    ทดสอบด้วยคำสั่ง w3m
    mama@ubuntu:/etc/apache2/sites-available$ w3m http://iserver.example.com/
    เห็นหน้าเว็บเพจ
    Hello, world! from iserver.example.com

    แต่หากใช้ IP แทนชื่อ จะยังคงเข้าถึงเว็บเพจภายใต้ DocumentRoot /var/www/html
    ทดสอบด้วยคำสั่ง w3m
    mama@ubuntu:/etc/apache2/sites-available$ w3m http://127.0.0.1
    ยังคงเห็นหน้าเว็บเพจ default แสดงข้อความ
    Apache2 Ubuntu Default Page
    It work!

    mama@ubuntu:/etc/apache2/sites-available$ w3m http://127.0.0.1/test.php
    ยังคงเห็นหน้าเว็บเพจ php info

    mama@ubuntu:/etc/apache2/sites-available$ w3m http://127.0.0.1/iserver.example.com
    และแถมด้วยเห็นหน้าเว็บเพจของ virtualhost iserver.example.com ด้วย
    Hello, world! from iserver.example.com

    แต่ถ้าต้องการไม่ให้เข้าถึงเว็บเพจภายใต้ /var/www/html
    mama@ubuntu:/etc/apache2/sites-available$ sudo a2dissite 000-default

    ทดสอบด้วยคำสั่ง w3m
    mama@ubuntu:/etc/apache2/sites-available$ w3m http://127.0.0.1/test.php
    ผลลัพธ์จะเห็นว่า หาเว็บเพจไม่พบแล้ว
    Not Found
    The requested URL /test.php was not found on this server.
    ——————————————————————————-
    Apache/2.4.7 (Ubuntu) Server at 127.0.0.1 Port 80

    ทดสอบด้วยคำสั่ง w3m
    mama@ubuntu:/etc/apache2/sites-available$ w3m http://127.0.0.1/iserver.example.com
    ผลลัพธ์จะเห็นว่า หาเว็บเพจไม่พบแล้ว
    Not Found
    The requested URL /iserver.example.com was not found on this server.
    ——————————————————————————-
    Apache/2.4.7 (Ubuntu) Server at 127.0.0.1 Port 80

    -:เริ่มทดสอบแบบที่ 2:-
    แบบที่ 2 สร้างไดเรกทอรีที่เก็บไฟล์ virtual host ไว้ที่ /var/www

    ทำ virtualhost เช่น www.example.com และ
    ชี้ DocumentRoot ที่ /var/www/www.example.com

    ตรวจสอบว่าเรามี domain name แล้ว
    mama@ubuntu:$ host www.example.com
    www.example.com is an alias for iserver.example.com.
    iserver.example.com has address 10.0.100.9

    เข้าไปที่ VM LSA-router (IP 10.0.100.1) ด้วย username: mama มี password: 123456
    และเพิ่มค่า domain name ดังนี้
    mama@myrouter:~$ sudo vi /var/cache/bind/db.example.com
    เพิ่มบรรทัด

    www      IN CNAME iserver

    แล้ว reload dns server
    mama@myrouter:~$ sudo service bind9 reload

    กลับไปที่ VM web server (IP 10.0.100.9)
    เข้าไปที่ไดเรกทอรี
    mama@ubuntu:$ cd /var/www/

    สร้างไดเรกทอรีชื่อ www.example.com
    mama@ubuntu:/var/www$ sudo mkdir www.example.com

    สร้างไฟล์ตัวอย่างของเว็บไซต์
    mama@ubuntu:/var/www$ sudo vi www.example.com/index.php
    มีข้อความเพียง 1 บรรทัด

    <?php echo "WWW Hello, world!"; ?>

    ผลลัพธ์จะมีไฟล์เพิ่มขึ้น
    mama@ubuntu:/var/www$ ls www.example.com/
    index.php

    ใช้คำสั่ง cat แสดงข้อมูลในไฟล์
    mama@ubuntu:/var/www$ cat www.example.com/index.php
    จะเห็น
    <?php echo “WWW Hello, world!”; ?>

    เข้าไปไดเรกทอรีสำหรับจัดการ config site
    mama@ubuntu:/var/www$ cd /etc/apache2/sites-available

    ใช้คำสั่ง ls ดูรายชื่อไฟล์
    mama@ubuntu:/etc/apache2/sites-available$ ls
    000-default.conf  default-ssl.conf  iserver.example.com.conf

    สร้างไฟล์สำหรับ config virtual host ชื่อมี .conf ต่อท้ายด้วย
    mama@ubuntu:/etc/apache2/sites-available$ sudo cp 000-default.conf www.example.com.conf

    แก้ไขไฟล์ www.example.com.conf
    mama@ubuntu:/etc/apache2/sites-available$ sudo vi www.example.com.conf
    แก้ไขเฉพาะบรรทัดข้างล่างนี้

    NameVirtualHost www.example.com:80
     <VirtualHost www.example.com:80>
    ServerName www.example.com
    ServerAdmin webmaster@localhost
     DocumentRoot /var/www/www.example.com

    สั่งให้ apache2 รับ site ใหม่
    mama@ubuntu:/etc/apache2/sites-available$ sudo a2ensite www.example.com

    สั่ง reload apache2
    mama@ubuntu:/etc/apache2/sites-available$ sudo service apache2 reload

    ทดสอบด้วยคำสั่ง w3m
    mama@ubuntu:/etc/apache2/sites-available$ w3m http://www.example.com
    จะเห็นหน้าเว็บเพจ
    WWW Hello, world!

    งานทดสอบเรื่องต่อไป คือ ถ้าต้องใช้ https ด้วย จะทำอย่างไร
    ถ้าต้องการใช้ https เราจะต้องเลือก config ให้ใช้ self-signed certificate ที่ apache2 web server ให้มาแล้ว หรือว่า จะซื้อ trusted root certificate ที่มีขายในอินเทอร์เน็ต

    เริ่มต้นตรวจสอบ จะพบว่า https ยังใช้งานไม่ได้ ควรที่จะเกิด error ไม่สามารถเข้าถึงได้ เพราะเรายังไม่ได้ enable https บน www.example.com
    จะเห็นแบบนี้
    mama@ubuntu:/etc/apache2/sites-available$ w3m https://www.example.com
    w3m: Can’t load https://www.example.com.

    เราสามารถ enable https โดยใช้คำสั่ง
    mama@ubuntu:/etc/apache2/sites-available$ sudo a2enmod ssl
    mama@ubuntu:/etc/apache2/sites-available$ sudo a2ensite default-ssl
    mama@ubuntu:/etc/apache2/sites-available$ sudo service apache2 reload

    ทดสอบด้วยคำสั่ง w3m
    mama@ubuntu:/etc/apache2/sites-available$ w3m https://www.example.com
    จะมีคำเตือนในเรื่อง certificate ที่ไม่ถูกต้อง เนื่องจากเป็น self-signed certificate ก็กด Y ไปเรื่อยๆ จะเข้าไปยังเว็บเพจได้
    จะเห็นแบบนี้
    Apache2 Ubuntu Default Page
    It work!

    ต่อไปก็จะทำให้ใช้งาน https ได้แบบใช้ self-signed certificate
    ให้ copy ไฟล์ www.example.com.conf เป็นอีกไฟล์ให้มีชื่อ ssl ด้วยเพื่อให้จำง่าย
    mama@ubuntu:/etc/apache2/sites-available$ sudo cp www.example.com.conf www.example.com-ssl.conf

    แก้ไขไฟล์ www.example.com-ssl.conf
    mama@ubuntu:/etc/apache2/sites-available$ sudo vi www.example.com-ssl.conf
    แก้ไขสองบรรทัดแรกจาก
    NameVirtualHost www.example.com:80
    <VirtualHost www.example.com:80>
    เป็น

    NameVirtualHost www.example.com:443
     <VirtualHost www.example.com:443>

    และเพิ่ม

    SSLEngine on
     SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
     SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

    ก่อนบรรทัด
    </VirtualHost>
    หลังจากนั้น save file

    และใช้คำสั่งเพื่อให้ apache2 รับ site ใหม่
    mama@ubuntu:/etc/apache2/sites-available$ sudo a2ensite www.example.com-ssl

    สั่ง reload apache2
    mama@ubuntu:/etc/apache2/sites-available$ sudo service apache2 reload

    ถึงตรงนี้เราก็จะสามารถเข้าถึง URL https://www.example.com ได้ตามต้องการ

    ทดสอบด้วยคำสั่ง w3m
    mama@ubuntu:/etc/apache2/sites-available$ w3m https://www.example.com
    จะมีคำเตือนในเรื่อง certificate ที่ไม่ถูกต้องอยู่ต่อไป เนื่องจากเป็น self-signed certificate ก็กด Y ไปเรื่อยๆ จะเข้าไปยังเว็บเพจได้
    จะเห็นหน้าเว็บเพจ
    WWW Hello, world!

    [ติดตั้ง phpmyadmin]
    บ่อยครั้งที่ผมจะได้รับคำถามว่าต้องการใช้ phpmyadmin เพื่อเข้าไปจัดการ database mysql ก็ขอทดสอบร่วมด้วยซะเลยครับ (ขอขอบคุณอ.ฉัตรชัย จันทร์พริ้ม ผู้ให้ความรู้เรื่องการติดตั้ง phpmyadmin)

    สมมติว่า
    IP ของ web server คือ 10.0.100.9
    MySQL server Administrator คือ root มี password คือ 123456

    ใช้คำสั่งติดตั้งดังนี้
    mama@ubuntu:~$ sudo apt-get install phpmyadmin
    จะมีหน้าต่างให้เลือกข้อมูล
    -เลือก apache2 เป็น web server เพื่อที่จะกำหนด config ของ phpmyadmin ให้ใช้งานได้กับ apache2
    -เลือกให้ config database กับ dbconfig-common
    -ใส่ password ของ MySQL administrator ใส่ตามที่กำหนดไว้
    -สำหรับ password ของ phpmyadmin เอง ไม่จำเป็นจะต้องใส่ ตัว script สำหรับติดตั้ง phpmyadmin จะสร้าง random password ให้

    ทดสอบด้วยคำสั่ง w3m ได้
    mama@ubuntu:~$ w3m http://127.0.0.1/phpmyadmin

    ต่อไปทำการกำหนดให้ phpmyadmin สามารถเข้าถึงได้เฉพาะ client ที่กำหนดเท่านั้น

    เข้าไปที่ไดเรกทอรี config ของ phpmyadmin
    mama@ubuntu:~$  cd /etc/phpmyadmin

    เราจะแก้ไข config ของ phpmyadmin ดังนั้นควรจะ copy ไฟล์ดังเดิมเก็บเอาไว้ก่อน
    mama@ubuntu:/etc/phpmyadmin$ sudo cp apache.conf apache.conf.orig

    แก้ไขไฟล์ apache.conf
    mama@ubuntu:/etc/phpmyadmin$ sudo vi apache.conf
    ในไฟล์นี้จะกำหนดการเข้าถึง directory /usr/share/phpmyadmin ไว้ดังนี้
    <Directory /usr/share/phpmyadmin>
    Options FollowSymLinks
    DirectoryIndex index.php
    <IfModule mod_php5.c>

    </IfModule>
    </Directory>
    ให้เพิ่ม config จำนวน 3 บรรทัดข้างล่างนี้เข้าไป ก่อนบรรทัด </Directory>

    Order Deny,Allow
     Deny from All
     Allow from 127.0.0.1 ::1

    หลังจาก save ไฟล์แล้วให้ restart ตัว apache2 โดยใช้คำสั่ง
    mama@ubuntu:/etc/phpmyadmin$ sudo service apache2 restart

    ทดสอบการเข้าถึง phpmyadmin จาก ตัว server เอง
    ทดสอบด้วยคำสั่ง w3m
    mama@ubuntu:/etc/phpmyadmin$ w3m http://127.0.0.1/phpmyadmin
    จะได้ผลลัพธ์แสดงหน้าเว็บเพจ phpmyadmin

    ทดสอบด้วยคำสั่ง w3m
    mama@ubuntu:/etc/phpmyadmin$ w3m http://10.0.100.9/phpmyadmin
    จะได้ข้อความว่า Forbidden You don’t have permission to access /phpmyadmin on this server

    และเมื่อทดสอบการเข้าถึง phpmyadmin จากตัว web browser เครื่องอื่นๆ
    (เช่นทดสอบที่ VM linux mint client มี IP 10.0.100.247)
    ทดสอบด้วยโปรแกรม Firefox
    http://10.0.100.9/phpmyadmin
    ก็ควรที่จะได้ข้อความว่า Forbidden You don’t have permission to access /phpmyadmin on this server เช่นกัน

    แก้ไขให้สามารถเข้าถึง phpmyadmin ได้จากเครื่อง หรือ net ที่กำหนดเพิ่ม
    เช่น ถ้าระบุเป็น 10.0.100.247 ก็เครื่องเดียว แต่ถ้าระบุเป็น 10.0.100. ก็คือทุกเครื่องใน net
    mama@ubuntu:/etc/phpmyadmin$ sudo vi apache.conf
    เดิม
    Allow from 127.0.0.1 ::1
    เป็น

    Allow from 127.0.0.1 ::1 10.0.100.

    สั่ง restart apache2
    mama@ubuntu:/etc/phpmyadmin$ sudo service apache2 restart

    ทดสอบด้วยคำสั่ง w3m
    mama@ubuntu:/etc/phpmyadmin$ w3m http://10.0.100.9/phpmyadmin
    ก็ควรจะเข้าได้แล้ว

    [การสร้าง VirtualHost pma.example.com สำหรับ phpmyadmin]
    ก่อนอื่นเราจะต้องแก้ไข DNS ให้สามารถ resolve address ของ pma.example.com ให้ได้ก่อน

    เข้าไปที่ VM LSA-router (IP 10.0.100.1) ด้วย username: mama มี password: 123456
    และเพิ่มค่า domain name ดังนี้
    mama@myrouter:~$ sudo vi /var/cache/bind/db.example.com
    โดยเพิ่ม

    pma IN CNAME iserver

    และ reload bind โดยใช้คำสั่ง
    mama@myrouter:~$ sudo rndc reload

    และทดสอบโดยการใช้คำสั่ง host
    mama@myrouter:~$ host pma.example.com 10.0.100.1
    ได้ผลลัพธ์ดังนี้
    Using domain server:
    Name: 10.0.100.1
    Address: 10.0.100.1#53
    Aliases:
    pma.example.com is an alias for iserver.example.com.
    iserver.example.com has address 10.0.100.9

    ขั้นตอนถัดไปกลับไปที่ตัว web server
    เราจะยกเลิกไม่ให้เข้าถึง phpmyadmin โดยใช้ URL http://10.0.100.9/phpmyadmin

    โดยการ disable config ของ phpmyadmin ของ apache2 โดยใช้คำสั่ง
    mama@ubuntu:~$ sudo a2disconf phpmyadmin

    แล้วสร้าง site config สำหรับ phpmyadmin โดยสร้างเป็น VirtualHost config อันใหม่ขึ้นมา ไป copy จาก config เดิมที่มีอยู่แล้ว โดยใช้คำสั่ง
    mama@ubuntu:~$ sudo cp /etc/phpmyadmin/apache.conf /etc/apache2/sites-available/pma.conf

    แก้ไขไฟล์ pma.conf
    mama@ubuntu:~$ sudo vi /etc/apache2/sites-available/pma.conf
    เพิ่มบรรทัดต่อไปนี้ในตอนต้นของไฟล์

    NameVirtualHost pma.example.com:80
     <VirtualHost pma.example.com:80>
     ServerName pma.example.com
     DocumentRoot /usr/share/phpmyadmin

    และ comment บรรทัด Alias /phpmyadmin /usr/share/phpmyadmin โดยการเพิ่มเครื่องหมาย ‘#’ ไปที่ต้นบรรทัด ดังนี้

    # Alias /phpmyadmin /usr/share/phpmyadmin

    และเพิ่มบรรทัดเหล่านี้ที่บรรทัดล่างสุด

    LogLevel warn
     ErrorLog ${APACHE_LOG_DIR}/pma-error.log
     CustomLog ${APACHE_LOG_DIR}/pma-access.log combined
     </VirtualHost>

    และ save ไฟล์

    และใช้คำสั่งเพื่อให้ apache2 รับ site ใหม่
    mama@ubuntu:~$ sudo a2ensite pma

    สั่ง reload apache2
    mama@ubuntu:~$ sudo service apache2 reload

    ทดสอบด้วยคำสั่ง w3m
    mama@ubuntu:~$ w3m http://pma.example.com
    ก็ควรจะใช้งานได้

    [ติดตั้ง joomla site เป็น ไดเรกทอรีต่อท้ายชื่อ web server]
    เมื่อทำมาถึงตอนนี้ ถ้าเราจะสร้าง site อะไรก็ตามที่อยู่ต่อจาก /var/www/html
    และจะใช้ URL แบบว่า http://www.example.com/testjoomla อย่างนี้จะทำไม่ได้ เพราะเรานำชื่อ www.example.com ไปทำเป็น site ทดสอบไปแล้ว
    เราจะต้องทำบนชื่อ domain name ใหม่อีกชื่อ สมมติให้ server ชื่อ aws.example.com

    เข้าไปที่ VM LSA-router (IP 10.0.100.1) ด้วย username: mama มี password: 123456
    และเพิ่มค่า domain name ดังนี้
    mama@myrouter:~$ sudo vi /var/cache/bind/db.example.com
    โดยเพิ่ม

    aws IN CNAME iserver

    และ reload bind โดยใช้คำสั่ง
    mama@myrouter:~$ sudo rndc reload

    mama@myrouter:~$ host aws.example.com 10.0.100.1
    Using domain server:
    Name: 10.0.100.1
    Address: 10.0.100.1#53
    Aliases:
    aws.example.com is an alias for iserver.example.com.
    iserver.example.com has address 10.0.100.9

    ขั้นตอนถัดไปกลับไปที่ตัว web server แล้วสร้างไฟล์
    mama@ubuntu:~$ cd /etc/apache2/sites-available/
    mama@ubuntu:/etc/apache2/sites-available$ sudo cp 000-default.conf aws.example.com.conf

    แก้ไขไฟล์ aws.example.com.conf
    mama@ubuntu:/etc/apache2/sites-available$ sudo vi aws.example.com.conf
    แก้ไขเฉพาะบรรทัดเหล่านี้

    NameVirtualHost aws.example.com:80
     <VirtualHost aws.example.com:80>
     ServerAdmin webmaster@localhost
     DocumentRoot /var/www/html

    และใช้คำสั่งเพื่อให้ apache2 รับ site ใหม่
    mama@ubuntu:/etc/apache2/sites-available$ sudo a2ensite aws.example.com

    สั่ง reload apache2
    mama@ubuntu:/etc/apache2/sites-available$ sudo service apache2 reload

    ตอนนี้ก็สามารถติดตั้ง joomla site เพื่อทดสอบโดยนำ joomla files ไปไว้ที่ /var/www/html/testjoomla เพื่อทึ่จะใช้ URL แบบว่า http://aws.example.com/testjoomla อย่างนี้จะทำได้แล้ว

    ทดลองทำขั้นตอนติดตั้ง joomla site (1-7)
    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/html/testjoomla ด้วยคำสั่ง
    sudo mkdir -p /var/www/html/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/html/testjoomla ด้วยคำสั่ง
    sudo tar -zxvf /tmp/Joomla_2.5.9-Stable-Full_Package.tar.gz -C /var/www/html/testjoomla

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

    6. ต่อไปต้องติดตั้งปรับแต่งระบบ joomla ครั้งแรก ไปยัง client (เช่น linux mint client) เปิด browser (firefox) แล้วพิมพ์ http://aws.example.com/testjoomla

    ขั้นตอน 1 : Choose language (เลือกภาษา) ให้ click ปุ่ม Next (หรือต่อไป)
    ขั้นตอน 2 : Pre-Installation Check(ตรวจสอบระบบก่อนติดตั้ง) ให้ click ปุ่ม Next (หรือต่อไป)
    ขั้นตอน 3 : License(ลิขสิทธิ์) ให้ click ปุ่ม Next (หรือต่อไป)
    ขั้นตอน 4 : Database Configuration(การตั้งค่าฐานข้อมูลเข้าไปที่ VM LSA-router (IP 10.0.100.1) ด้วย username: mama มี password: 123456
    และเพิ่มค่า domain name ดังนี้) ให้ใส่ค่าดังนี้ (อย่าลืมใส่ข้อมูลชิดซ้าย ห้ามมีช่องว่าง)
    Database type = mysqli(เลือกที่มี i)
    Host Name = localhost
    Username = mamamysql
    Password = mamapass
    Database Name = testdatabase เสร็จแล้ว click Next (หรือต่อไป)
    ขั้นตอน 5 : FTP Configuration (ตั้งค่า FTP) ให้ click ปุ่ม Next (หรือต่อไป)
    ขั้นตอน 6 : Main Configuration (ตั้งค่าหลักของ เว็บ) ให้ใส่ค่าดังนี้
    Site Name = testjoomla
    Your Email = mama@aws.example.com
    Admin Username = testadmin
    Admin Password = 123456
    Confirm Admin Password = 123456
    อย่าลืม ต้องคลิกปุ่ม Install Sample Data (ติดตั้งข้อมูลตัวอย่าง) แล้วกด Next (หรือ ต่อไป)
    ขั้นตอนที่ 7 : Finish (เสร็จสิ้น) (ขั้นตอนสุดท้าย)
    คลิกปุ่ม Remove installation folder

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

    ไปที่ client แล้วทดสอบเข้าเว็บไซต์อีกที
    http://aws.example.com/testjoomla
    http://aws.example.com/testjoomla/administrator/

    [ติดตั้ง joomla site เป็น virtualhost]
    แต่ถ้าต้องการเปลี่ยนให้ http://aws.example.com คือ jooma site เลย ไม่ต้องมีชื่อไดเรกทอรี testjoomla ต่อท้าย
    ก็ให้แก้ไขที่ไฟล์
    mama@ubuntu:~$ cd /etc/apache2/sites-available/
    mama@ubuntu:/etc/apache2/sites-available$ sudo vi aws.example.com.conf
    แก้ไขเฉพาะบรรทัด DocumentRoot
    เดิม
    DocumentRoot /var/www/html
    เปลี่ยนเป็น

    DocumentRoot /var/www/html/testjoomla

    สั่ง reload apache2
    mama@ubuntu:/etc/apache2/sites-available$ sudo service apache2 reload

    ตอนนี้ http://aws.example.com คือ joomla site แล้ว

    ไปที่ client (เช่น linux mint client) เปิด browser (firefox) แล้วทดสอบเข้าเว็บไซต์อีกที
    http://aws.example.com
    http://aws.example.com/administrator/

     

    2. แบบไม่ใช้ NameVirtualHost

    เป็นการทำ virtualhost บน apache2 web server อย่างง่าย

    -:การตรวจสอบความพร้อมของ apache2 web server:-
    เข้าไปที่ไดเรกทอรี
    mama@ubuntu:$ cd /var/www/html/

    เริ่มต้น apache2 web server จะมีไฟล์ index.html มาให้
    mama@ubuntu:/var/www/html$ ls
    index.html

    ทดสอบด้วยคำสั่ง w3m ได้
    mama@ubuntu:~$ w3m http://127.0.0.1
    เห็นหน้าเว็บเพจ default แสดงข้อความ
    Apache2 Ubuntu Default Page
    It work!
    กด Ctrl+c เลิกดู

    ลองสร้างไฟล์ test.php
    mama@ubuntu:/var/www/html$ sudo vi test.php
    เพิ่มบรรทัด 1 บรรทัด

    <?php phpinfo() ?>

    ผลลัพธ์จะมีไฟล์เพิ่มขึ้น
    mama@ubuntu:/var/www/html$ ls
    index.html  test.php

    เมื่อดูข้อมูลด้วยคำสั่ง cat
    mama@ubuntu:/var/www/html$ cat test.php
    จะเห็นแบบนี้
    <?php phpinfo() ?>

    ทดสอบด้วยคำสั่ง w3m
    mama@ubuntu:/var/www/html$ w3m http://127.0.0.1/test.php
    เห็นหน้าเว็บเพจ php info

    -:สร้าง virtualhost จะใช้ไฟล์ 000-default.conf ที่ให้มา:-
    ความต้องการ
    ทำ virtualhost ชื่อ www.example.com ชี้ DocumentRoot ที่ /var/www/www.example.com
    และ
    ทำ virtualhost ชื่อ www2.example.com ชี้ DocumentRoot ที่ /var/www/www2.example.com
    และ

    ตรวจสอบว่าเรามี domain name iserver.example.com แล้ว
    mama@ubuntu:$ host iserver.example.com
    iserver.example.com has address 10.0.100.9

    เข้าไปที่ VM LSA-router (IP 10.0.100.1) ด้วย username: mama มี password: 123456
    และเพิ่มค่า domain name ดังนี้
    mama@myrouter:~$ sudo vi /var/cache/bind/db.example.com
    เพิ่มบรรทัด

    www        IN CNAME iserver
    www2       IN CNAME iserver

    แล้ว reload dns server
    mama@myrouter:~$ sudo service bind9 reload

    กลับไปที่ VM web server (IP 10.0.100.9)
    สร้างไดเรกทอรีชื่อ www.example.com
    mama@ubuntu:/var/www/html$ sudo mkdir /var/www/www.example.com

    สร้างไฟล์ตัวอย่างของเว็บไซต์
    mama@ubuntu:/var/www/html$ sudo vi /var/www/www.example.com/index.php
    มีข้อความเพียง 1 บรรทัด

    <?php echo "WWW Hello, world!"; ?>

    สร้างไดเรกทอรีชื่อ www2.example.com
    mama@ubuntu:/var/www/html$ sudo mkdir /var/www/www2.example.com

    สร้างไฟล์ตัวอย่างของเว็บไซต์
    mama@ubuntu:/var/www/html$ sudo vi /var/www/www2.example.com/index.php
    มีข้อความเพียง 1 บรรทัด

    <?php echo "WWW2 Hello, world!"; ?>

    เข้าไปไดเรกทอรีสำหรับจัดการ config site
    mama@ubuntu:~$ cd /etc/apache2/sites-available/

    ใช้คำสั่ง ls ดูรายชื่อไฟล์
    mama@ubuntu:/etc/apache2/sites-available$ ls
    000-default.conf  default-ssl.conf

    สร้าง virtualhost จะใช้ไฟล์ 000-default.conf ที่ให้มา
    mama@ubuntu:/etc/apache2/sites-available$ sudo vi 000-default.conf
    [sudo] password for mama:
    เพิ่มบรรทัดเหล่านี้ต่อท้ายไฟล์เดิม

    <VirtualHost *:80>
            ServerName www.example.com
            DocumentRoot /var/www/www.example.com
    </VirtualHost>
    <VirtualHost *:80>
            ServerName www2.example.com
            DocumentRoot /var/www/www2.example.com
    </VirtualHost>

    สั่ง reload apache2
    mama@ubuntu:/etc/apache2/sites-available$ sudo service apache2 reload

    ทดสอบด้วยคำสั่ง w3m
    mama@ubuntu:/etc/apache2/sites-available$ w3m http://www.example.com
    จะเห็นหน้าเว็บเพจ
    WWW Hello, world!

    ทดสอบด้วยคำสั่ง w3m
    mama@ubuntu:/etc/apache2/sites-available$ w3m http://www2.example.com
    จะเห็นหน้าเว็บเพจ
    WWW2 Hello, world!

    ทดสอบด้วยคำสั่ง w3m
    mama@ubuntu:/etc/apache2/sites-available$ w3m http://iserver.example.com
    ยังคงเห็นหน้าเว็บเพจ default แสดงข้อความ
    Apache2 Ubuntu Default Page
    It work!

    mama@ubuntu:/etc/apache2/sites-available$ w3m http://iserver.example.com/test.php
    ยังคงเห็นหน้าเว็บเพจ php info

    -:ต้องการใช้ https:-

    เริ่มต้นตรวจสอบ จะพบว่า https ยังใช้งานไม่ได้ ควรที่จะเกิด error ไม่สามารถเข้าถึงได้ เพราะเรายังไม่ได้ enable https บน iserver.example.com
    จะเห็นแบบนี้
    mama@ubuntu:/etc/apache2/sites-available$ w3m https://iserver.example.com
    w3m: Can’t load https://iserver.example.com.

    เราสามารถ enable https โดยใช้คำสั่ง
    mama@ubuntu:/etc/apache2/sites-available$ sudo a2enmod ssl
    mama@ubuntu:/etc/apache2/sites-available$ sudo a2ensite default-ssl
    mama@ubuntu:/etc/apache2/sites-available$ sudo service apache2 reload

    ทดสอบด้วยคำสั่ง w3m
    mama@ubuntu:/etc/apache2/sites-available$ w3m https://iserver.example.com
    จะมีคำเตือนในเรื่อง certificate ที่ไม่ถูกต้อง เนื่องจากเป็น self-signed certificate ก็กด Y ไปเรื่อยๆ จะเข้าไปยังเว็บเพจได้
    จะเห็นแบบนี้
    Apache2 Ubuntu Default Page
    It work!

    เช่นเดียวกับ 2 คำสั่งนี้ ก็จะได้ผลลัพธ์ไปที่หน้าเดียวกัน
    mama@ubuntu:/etc/apache2/sites-available$ w3m https://www.example.com
    mama@ubuntu:/etc/apache2/sites-available$ w3m https://www2.example.com

    mama@ubuntu:/etc/apache2/sites-available$ sudo vi default-ssl.conf
    [sudo] password for mama:
    เพิ่มบรรทัดเหล่านี้ต่อท้ายไฟล์เดิม วางไว้ก่อนบรรทัด </IfModule>

           <VirtualHost _default_:443>
                    ServerName www.example.com
                    ServerAdmin webmaster@localhost
                    DocumentRoot /var/www/www.example.com
                    SSLEngine on
                    SSLCertificateFile      /etc/ssl/certs/ssl-cert-snakeoil.pem
                    SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
           </VirtualHost>
           <VirtualHost _default_:443>
                    ServerName www2.example.com
                    ServerAdmin webmaster@localhost
                    DocumentRoot /var/www/www2.example.com
                    SSLEngine on
                    SSLCertificateFile      /etc/ssl/certs/ssl-cert-snakeoil.pem
                    SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
            </VirtualHost>

    </IfModule>

    ทดสอบด้วยคำสั่ง w3m
    mama@ubuntu:/etc/apache2/sites-available$ w3m https://www.example.com
    จะเห็นหน้าเว็บเพจ
    WWW Hello, world!

    mama@ubuntu:/etc/apache2/sites-available$ w3m https://www2.example.com
    จะเห็นหน้าเว็บเพจ
    WWW2 Hello, world!

    mama@ubuntu:/etc/apache2/sites-available$ w3m https://iserver.example.com
    จะหน้าเว็บเพจ default แสดงข้อความ
    Apache2 Ubuntu Default Page
    It work!

    mama@ubuntu:/etc/apache2/sites-available$ w3m https://iserver.example.com/test.php
    จะหน้าเว็บเพจ php info

    เรื่องราวของการทดสอบ virtualhost ของ apache2 web server บน ubuntu 14.04 server ก็มีเพียงเท่านี้

  • การสร้าง virtualhost บน Apache2 web server (2.4.x ขึ้นไป)

    ขอเล่าเรื่องการสร้าง virtualhost บน Apache2 web server (2.4.x ขึ้นไป) อย่างง่ายๆ แต่ก็เป็นผลมาจากการเปลี่ยนจาก ubuntu 12.04 server ไปเป็น ubuntu 14.04 server เมื่อเร็วๆนี้

    Apache 2.4.x เช่น 2.4.7 ที่มาพร้อม ubuntu 14.04 server จะมีการจัดการเรื่อง Document root ที่แตกต่างจากเวอร์ชั่นที่ต่ำกว่า เช่น Document root จะอยู่ที่ /var/www/html แทนที่จะเป็น /var/www เหมือนเดิม ดังนั้นเมื่อทำ virtualhost จึงต้องมีการวางไดเรกทอรีไว้ที่ /var/www และทำ virtualhost เช่น www.example.com และชี้ documentroot ที่ /var/www/www.example.com

    มาดูกันครับว่าจะต้องทำอย่างไรบ้าง เริ่มต้นที่หลังจากติดตั้ง ubuntu 14.04 เสร็จแล้ว พร้อมทั้งได้ติดตั้ง packages LAMP หากไม่แน่ใจก็ตรวจสอบด้วยคำสั่ง sudo tasksel
    ในบทความมีการอ้างถึง editor ที่ใช้แก้ไขไฟล์ชื่อ vi หากไม่คุ้นเคยวิธีใช้ก็ให้เปลี่ยนเป็นคำว่า nano จะเป็น full screen editor ใช้ง่ายกว่า

    ตรวจสอบว่าเรามีโดเมนเนมแล้ว (check domain name)
    mama@ubuntu:$ host www.example.com
    www.example.com is an alias for iserver.example.com.
    iserver.example.com has address 10.0.100.9

    เข้าไปที่ไดเรกทอรี
    mama@ubuntu:$ cd /var/www/

    สร้างไดเรกทอรีชื่อ www.example.com
    mama@ubuntu:/var/www$ sudo mkdir www.example.com

    สร้างไฟล์ตัวอย่างของเว็บไซต์
    mama@ubuntu:/var/www$ sudo vi www.example.com/index.php
    มีข้อความเพียง 1 บรรทัด
    <?php echo “WWW Hello, world!”; ?>

    ใช้คำสั่งแสดงรายการ จะเห็น
    mama@ubuntu:/var/www$ ls www.example.com/
    index.php

    ใช้คำสั่งแสดงข้อมูลในไฟล์ จะเห็น
    mama@ubuntu:/var/www$ cat www.example.com/index.php
    <?php echo “WWW Hello, world!”; ?>

    เข้าไปไดเรกทอรีสำหรับจัดการ config site
    mama@ubuntu:/var/www/html$ cd /etc/apache2/sites-available

    ใช้คำสั่งแสดงรายการ จะเห็น
    mama@ubuntu:/etc/apache2/sites-available$ ls
    000-default.conf  default-ssl.conf

    สร้างไฟล์สำหรับ config virtual host ชื่อมี .conf ต่อท้ายด้วย
    mama@ubuntu:/etc/apache2/sites-available$ sudo cp 000-default.conf www.example.com.conf

    แก้ไขไฟล์ www.example.com.conf
    mama@ubuntu:/etc/apache2/sites-available$ sudo vi www.example.com.conf
    แก้ไขเฉพาะบรรทัดข้างล่างนี้
    NameVirtualHost www.example.com:80
    <VirtualHost www.example.com:80>
    ServerName www.example.com
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/www.example.com

    สั่งให้ apache2 รับ site ใหม่
    mama@ubuntu:/etc/apache2/sites-available$ sudo a2ensite www.example.com

    สั่ง reload apache2
    mama@ubuntu:/etc/apache2/sites-available$ sudo service apache2 reload

    ทดสอบ www.example.com ด้วยคำสั่ง w3m
    mama@ubuntu:/etc/apache2/sites-available$ w3m http://www.example.com
    จะเห็นหน้าเว็บเพจ
    WWW Hello, world!
    กด Ctrl+c เลิกดู

    หากทำอีก site ชื่อ iserver.example.com ก็เลียนแบบด้านบน และเมื่อทดสอบด้วยคำสั่ง w3m
    mama@ubuntu:/etc/apache2/sites-available$ w3m http://iserver.example.com
    ก็จะได้เช่นเดียวกัน (ควรใส่ข้อความให้เกิดความแตกต่าง)
    ISERVER Hello, world!

    ต่อไปคุณต้องคิดต่อเองว่าถ้าต้องใช้ https ด้วยหรือไม่ ถ้าต้องการ จะใช้ self-signed certificate ที่ apache2 ให้มา หรือว่า จะซื้อ trusted root certificate ที่มีขายในอินเทอร์เน็ต

    เริ่มต้นตรวจสอบ จะพบว่า https ยังใช้งานไม่ได้ ควรที่จะเกิด error ไม่สามารถเข้าถึงได้ เพราะเรายังไม่ได้ enable https บน www.example.com
    จะเห็นแบบนี้
    mama@ubuntu:/etc/apache2/sites-available$ w3m https://www.example.com
    w3m: Can’t load https://www.example.com.

    เราสามารถ enable https โดยใช้คำสั่ง
    sudo a2enmod ssl
    sudo a2ensite default-ssl
    sudo service apache2 reload

    w3m https://www.example.com
    ก็ควรที่จะเชื่อมต่อไปยัง web server ได้ โดยที่จะยังมีคำเตือนในเรื่อง certificate ที่ไม่ถูกต้อง เนื่องจากเป็น self-signed certificate แต่จะเข้าไปยังเว็บเพจได้
    จะเห็นแบบนี้
    Apache2 Ubuntu Default Page
    It work!

    ต่อไปก็จะทำให้ใช้ https ได้แบบใช้ self-signed certificate
    ให้ copy ไฟล์ www.example.com.cof เป็นอีกไฟล์ให้มีชื่อ ssl ด้วยเพื่อให้จำง่าย
    mama@ubuntu:/etc/apache2/sites-available$ sudo cp www.example.com.conf www.example.com-ssl.conf

    แก้ไขไฟล์ www.example.com-ssl.conf
    mama@ubuntu:/etc/apache2/sites-available$ sudo vi www.example.com-ssl.conf
    แก้ไขสองบรรทัดแรกจาก
    NameVirtualHost www.example.com:80
    <VirtualHost www.example.com:80>
    เป็น
    NameVirtualHost www.example.com:443
    <VirtualHost www.example.com:443>
    และเพิ่ม
    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
    SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
    ก่อนบรรทัด
    </VirtualHost>
    หลังจากนั้น save file

    และใช้คำสั่งเพื่อให้ apache2 รับ site ใหม่
    sudo a2ensite www.example.com-ssl

    สั่ง reload apache2
    sudo service apache2 reload

    หลังจากนั้นเราก็จะสามารถเข้าถึง URL https://www.example.com ได้อย่างถูกต้อง

  • อยากได้ linux mint ไปใช้ ต้องทำอย่างไร

    หากท่านต้องการแผ่นดีวีดี linux mint เพื่อนำไปทดลองใช้งาน หรือ ติดตั้งลงฮาร์ดดิสก์ สำหรับท่านที่อยู่ต่างประเทศ แนะนำให้ไป download จากเว็บไซต์ http://www.linuxmint.com/ แต่สำหรับพวกเราที่อยู่ใน ม.อ. หรือ ในประเทศไทย สามารถเลือก download ได้ที่ https://licensing.psu.ac.th/ เลือก Search Results for: linux mint

    เวอร์ชั่นปัจจุบันที่เขียน blog ในวันนี้ เป็นเวอร์ขั่นที่ออกเมื่อ 31 พ.ค. 2557
    linux mint 17 อยู่ที่ https://licensing.psu.ac.th/linux-mint-17-qiana-released/

    การเลือกแผ่นดีวีดีที่ต้องการ

    • หากต้องการการแสดงผลที่หวือหวา วูบวาบ ก็เลือก cinnamon
    • หากต้องการให้ compat กับเกมส์ Windows ที่จะนำมาลงผ่านโปรแกรม Wine ของ linux ก็เลือก mate
    • หากเครื่องคอมฯมี RAM มากกว่า 4 GB ก็ใช้รุ่น 64 bit

    ไฟล์ iso ที่จะ Download มีชื่อแบบนี้

    • linuxmint-17-cinnamon-dvd-32bit.iso
    • linuxmint-17-cinnamon-dvd-64bit.iso
    • linuxmint-17-mate-dvd-32bit.iso
    • linuxmint-17-mate-dvd-64bit.iso

    การเขียนแผ่นดีวีดี linux mint จากไฟล์ iso เมื่อ download ไฟล์ iso ของ linux mint มาได้แล้ว

    • สำหรับ linux ก็ให้ใช้โปรแกรมสำหรับเขียนแผ่นดีวีดี ชื่อ Brasero จาก Menu > Sound & Video > Brasero > เลือก burn
    • สำหรับ Windows 7, 8, 8.1 คลิกขวาและเลือกคำสั่ง burn

    นอกจากนี้ ผมยังได้ทำแผ่นพิเศษขึ้นเพื่อแนะนำซอฟต์แวร์โอเพนซอร์สที่น่าใช้และติดตั้งเพิ่มได้จาก linux mint ไม่ได้ไป download จากที่เว็บไหนเลย หากสนใจวิธีทำก็อ่าน เบื้องหลังการทำแผ่น ครับ) หากต้องการ download ไฟล์ iso ของ linux mint ฉบับติดตั้งโปรแกรมเพิ่มแล้ว ที่นี่ครับ
    http://ftp.psu.ac.th/pub/linuxmint/linuxmint-17-psu-cc-32bit.iso
    md5sum: ตรวจสอบจากไฟล์ http://ftp.psu.ac.th/pub/linuxmint/linuxmint-17-psu-cc-32bit.iso.md5

    และมีของแถมเป็นแผ่นพับ (Bochure) คำแนะนำการใช้แผ่นดีวีดี linux mint
    http://opensource.cc.psu.ac.th/wiki-opensource/images/b/bb/Bochure-linuxmint-2-for-printing-only.pdf

    สุดท้าย ผมมีเอกสารแนะนำการใช้งาน linux mint อยู่บ้างที่นี่ครับ http://opensource.cc.psu.ac.th/Linuxmint