Tag: ubuntu 14.04

  • สร้าง DLNA Media Server ผ่าน Ubuntu ด้วยโปรแกรม MiniDLNA

    อุปกรณ์ที่บ้านรองรับ DLNA (มือถือ, PC, Notebook, TV ฯลฯ) มี Notebook เก่า ๆ อยู่เครื่องไม่รู้เอามาทำอะไรดี จะทำ Stream Media Server ใช้ง่าย ๆ ได้ยังไง

    อยากรู้ DLNA คืออะไรเชิญอ่านได้ที่นี่ครับ

    http://www.deviceacademy.com/forum/th/node/858

    เกี่ยวกับ Project MiniDLNA

    http://sourceforge.net/projects/minidlna/

    https://help.ubuntu.com/community/MiniDLNA

    ขั้นตอนการติดตั้ง DLNA Media Server ผ่าน Ubuntu ด้วยโปรแกรม MiniDLNA

    1. วิธีการขั้นแรกก็ติดตั้ง Ubuntu 14.04 LTS จะ Desktop หรือ Server แล้วแต่ศรัทธา

    2. ติดตั้ง MiniDLNA

    sudo apt-get install minidlna

    3. สร้าง Folder สำหรับทำ Media Server ดังนี้

    mkdir /home/[user]/music
    mkdir /home/[user]/picture
    mkdir /home/[user]/video
    sudo mkdir /var/cache/minidlna

    4. แก้ไขไฟล์ดังนี้

    sudo vim /etc/minidlna.conf

    4.1) ตั้งค่าในส่วนของ folder ที่จะให้ DLNA Server ให้บริการโดยแบ่งเป็น 3 แบบ คือ A = Audio, V= Video, P = Picture

    # If you want to restrict a media_dir to a specific content type, you can
    # prepend the directory name with a letter representing the type (A, P or V),
    # followed by a comma, as so:
    # * "A" for audio (eg. media_dir=A,/var/lib/minidlna/music)
    # * "P" for pictures (eg. media_dir=P,/var/lib/minidlna/pictures)
    # * "V" for video (eg. media_dir=V,/var/lib/minidlna/videos)
    #media_dir=/var/lib/minidlna
    media_dir=A,/home/[user]/music
    media_dir=P,/home/[user]/picture
    media_dir=V,/home/[user]/video

    4.2) ตั้งในส่วนของ network_interface โดยอุปกรณ์ที่จะใช้งานได้ต้องอยู่วงเดียวกับ DLNA Server

    # Network interface(s) to bind to (e.g. eth0), comma delimited.
    # This option can be specified more than once.
    network_interface=eth0

    4.3) ตั้งค่าชื่อที่จะปรากฎที่อุปกรณ์เมื่อจะเข้าใช้งาน DLNA Server

    # Name that the DLNA server presents to clients.
    # Defaults to "hostname: username".
    friendly_name=DLNA Media Server

    4.4) ทำการตั้งค่า Folder ที่ไว้เก็บ Database และ Cache หน้าปก Album Art (อาจจะทำให้การ Update ข้อมูลเมื่อมีการใส่ file ใหม่หน่วงบ้าง แต่เวลาเรียกไฟล์เยอะ ๆ จะได้เร็วขึ้น)

    # Path to the directory that should hold the database and album art cache.
    db_dir=/var/cache/minidlna

    4.5) ตั้งค่าให้เขียน log file เอาไว้ debug software

    # Path to the directory that should hold the log file.
    log_dir=/var/log

    4.6) ตั้งให้ scan file อัตโนมัติเมื่อมีไฟล์ใหม่

    # Automatic discovery of new files in the media_dir directory.
    inotify=yes

    5. ตั้งให้ start โปรแกรมเมื่อเปิดเครื่องโดยทำการแก้ไขไฟล์

    sudo vim /etc/default/minidlna

    – ตรวจสอบค่า START_DAEMON ว่าเป็น yes หรือไม่

    # Start the daemon if set to "yes"
    START_DAEMON="yes"

    5. ทำการ Restart MiniDLNA Server ดังนี้

    sudo service minidlna restart

    ที่เหลือก็แค่เปิด tv notebook pc ดูครับ โดยไฟล์ที่ใส่ลงไป จะโยนผ่าน samba share, ssh, ftp แล้วแต่จะสะดวกครับ โดยข้อจำกัดมีอยู่บ้างครับ คือไฟล์ที่ DLNA Support แน่ ๆ ก็ mp4 แต่พวก flv ไม่ครับส่วน mkv อันนี้รองรับเปิดได้ครับ (จริง ๆ ก็อยู่ที่อุปกรณ์ปลายทางด้วยว่ารองรับ codec ไหม)

    ส่วนอุปกรณ์ที่รองรับมีอีกคำนอกเหนือ DLNA คือ UPnP ลองดูแล้วครับ กล่อง TV Digital หลายกล่องก็รองรับอยู่นะครับ ส่วน SMART TV มีแน่ ๆ ครับ จริง ๆ Windows Media Player ก็ทำเป็น DLNA Server ได้เช่นเดียวกับแต่จะเรียกว่า Media Stream ครับ

    จริง ๆ youtube ก็ทำ stream ได้เช่นกัน แต่ไม่ได้ stream ตรง ๆ แต่เหมือน remote control ซึ่งก็หน่วงพอสมควร แต่ DLNA ที่ผมใช้ก็เพื่อดูหนัง MV การ์ตูนซะมากกว่า ซึ่งจะไม่มีการ remote control ต้องควบคุมที่อุปกรณ์เอง ทำหน้าที่เป็นแค่ share file server แต่ share ทั้งทีก็ทำให้ใช้ได้ทุกรูปแบบ โดยวิธีใช้ประมาณโหลดเสร็จก็โยนใส่ notebook ที่ลง dlna server ไว้ แล้วก็ปิดเครื่องที่โหลดทิ้ง นอนดูผ่านทีวี หรือดูผ่านมือถือได้เลย

  • การติดตั้ง snmpd และการตั้งค่า shorewall บน Ubuntu 14.04 LTS

    ในบทความนี้จะเกี่ยวกับการตั้งค่า snmpd บน ubuntu รวมถึงการเปิด port firewall ด้วยโปรแกรม Shorewall ดังนี้

    วิธีการติดตั้ง snmpd, shorewall บน ubuntu 14.04 LTS

    1) ทำการติดตั้งโปรแกรม snmpd และ shorewall ดังนี้

    sudo apt-get install -y snmp snmpd shorewall

    2) ทำการติดตั้ง mib เพิ่มเติมดังนี้

    sudo apt-get -y install snmp-mibs-downloader

    3) วิธีการทดสอบการว่าการใช้งาน snmp สามารถใช้งานหรือยังดังนี้

    sudo snmpwalk -Os -c public -v 2c localhost HOST-RESOURCES-MIB::hrSystemProcesses.0

    4) ทำการตั้งค่า community เพิ่มเติม (ไม่ควรใช้ public) โดยการแก้ไฟล์ดังนี้

    sudo nano /etc/snmp/snmpd.conf

    – เพิ่มข้อความดังนี้

    ...
    
    # Listen for connections from the local system only
    #agentAddress udp:127.0.0.1:161
    
    ...
    
    view systemonly included .1.3.6.1.2.1.1
    view systemonly included .1.3.6.1.2.1.25.1
    view systemonly included .1
    
                          # Full access from the local $
    #rocommunity public localhost
                          # Default access to basic sys$
    #rocommunity public default -V systemonly
    rocommunity happy default -V systemonly
    
    ...

    5) ทำการ restart snmpd

    sudo service snmpd restart

    6) ทดสอบ snmpwalk อีกครั้งจะพบ Error ดังนี้

    sudo snmpwalk -Os -c public -v 2c localhost HOST-RESOURCES-MIB::hrSystemProcesses.0
    Timeout: No Response from localhost

    7) ลองทดสอบอีกครั้งโดยเปลี่ยน community จาก public เป็น happy ดังนี้

    sudo snmpwalk -Os -c happy -v 2c localhost HOST-RESOURCES-MIB::hrSystemProcesses.0
    hrSystemProcesses.0 = Gauge32: 34

    8) เราสามารถดูค่า mib ทั้งหมดได้ดังนี้ (เรื่องจากเราเปิด view .1 ซึ่งหมายถึงเปิดทั้งหมด โดยปกติ default จะไม่แสดงทั้งหมด)

    sudo snmpwalk -Os -c happy -v 2c localhost

    9) สำหรับ snmpd จะใช้ port 161 UDP ซึ่งจะต้องตั้งค่า shorewall ให้เสร็จก่อน โดยมีขั้นตอนการติดตั้งแบบรวดเร็วดังนี้

    – ทำการสร้าง default config

    sudo cp /usr/share/doc/shorewall/examples/one-interface/zones /etc/shorewall
    sudo cp /usr/share/doc/shorewall/examples/one-interface/interfaces /etc/shorewall
    sudo cp /usr/share/doc/shorewall/examples/one-interface/policy /etc/shorewall
    sudo cp /usr/share/doc/shorewall/examples/one-interface/rules /etc/shorewall

    – ทำการตั้ง startup shorewall อัตโนมัติ

    sudo nano /etc/default/shorewall

    – ทำการแก้ไข startup จาก 0 เป็น 1

    # prevent startup with default configuration
    # set the following varible to 1 in order to allow Shorewall to start
    
    startup=1 
    ...

    – จากนั้นทำการแก้ไข rule เพื่อเพิ่ม port 161 udp ดังนี้

    sudo nano /etc/shorewall/rules

    – เพิ่มข้อความในส่วนท้ายไฟล์ดังนี้

    ...
    # Permit all ICMP traffic FROM the firewall TO the net zone
    
    ACCEPT $FW net icmp
    
    #SSH
    ACCEPT net:192.168.99.0/24 fw tcp 22
    #SNMP
    ACCEPT net:192.168.99.0/24 fw udp 161

    – ทำการ restart shorewall ดังนี้

    sudo service shorewall restart

    8) เราสามารถทดสอบ query snmp จากเครื่องอื่น ได้ดังนี้ (คำสั่งนี้สั่งบนเครื่องอื่นที่ต้องการดึงค่า)

    sudo snmpwalk -Os -c happy -v 2c 192.168.99.10

    สามารถอ่านรายละเอียดการติดตั้งและตั้งค่า shorewall เพิ่มเติมได้ที่
    http://opensource.cc.psu.ac.th/%E0%B8%95%E0%B8%B4%E0%B8%94%E0%B8%95%E0%B8%B1%E0%B9%89%E0%B8%87_shorewall_%E0%B8%9A%E0%B8%99_ubuntu

  • การติดตั้งโปรแกรมและการตั้งค่าเบื้องต้น Cacti บน Ubuntu 14.04 LTS

    โปรแกรม Cacti เป็นโปรแกรม Monitor แบบหนึ่งแต่จะเน้นการ Monitor ผ่าน snmp ซึ่งจุดเด่นจะอยู่ที่การสร้าง graph ที่ค่อนข้างชัด ดูง่าย ทำให้ช่วยวิเคราะห์ปัญหาย้อนหลังทำได้ง่ายกว่า

    วิธีการติดตั้ง Cacti บน Ubuntu 14.04 LTS

    1) ทำการติดตั้งชุดโปรแกรม Lamp Server (Linux + apache + mysql + php) ดังนี้

    sudo apt-get install lamp-server^

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

    sudo apt-get -y install rrdtool

    3) ทำการติดตั้งโปรแกรม snmp ทั้งโปรแกรม server และ client ดังนี้

    sudo apt-get -y install snmp snmpd

    4) ทำการติดตั้ง mib เพิ่มเติมดังนี้

    sudo apt-get -y install snmp-mibs-downloader

    5) วิธีการทดสอบการว่าการใช้งาน snmp สามารถใช้งานหรือยังดังนี้

    sudo snmpwalk -Os -c public -v 2c localhost HOST-RESOURCES-MIB::hrSystemProcesses.0

    6) ทำการติดตั้งโปรแกรม Cacti และ spine ดังนี้

    sudo apt-get -y install cacti cacti-spine

    2014-07-24_204947 2014-07-24_205027 2014-07-24_205058

    7) ทำการเข้าหน้าติดตั้ง Cacti ผ่าน web ดังนี้

    http://localhost/cacti

    2014-07-24_205323 2014-07-24_205409 2014-07-24_205448

    8) จากนั้นทำการ Login เข้า web โดยมี Default User : admin, Password : admin ดังนี้

    http://localhost/cacti

    2014-07-24_205538

    9) หลังจากนั้นระบบจะบังคับให้เปลี่ยนรหัสผ่านดังนี้

    2014-07-24_205855

     

    เสร็จสิ้นการติดตั้ง Cacti แล้วครับ เหลือการตั้งค่า spine ซึ่งเป็นตัวช่วยให้ทำงานดีขึ้นกว่าแบบที่เป็น cmd.php เนื่องจากโปรแกรมเขียนด้วยภาษา C จึงทำงานได้เร็วกว่า โดยทำการตั้งค่าดังรูป (อย่าลืม save ด้วยนะครับ)

    2014-07-25_071624 2014-07-25_071701

    ส่วนวิธีใช้งานสามารถดูได้ที่บทความนี้ครับ

    http://sysadmin.psu.ac.th/2014/07/25/cacti-howtouse/

     

  • การติดตั้ง NRPE บน Ubuntu 14.04

    เพื่อไม่ให้เสียเวลามาเริ่มกันเลยครับ

    วิธีการติดตั้ง Nrpe บน Ubuntu 14.04

    1) ทำการติดตั้งโปรแกรม nrpe (มองว่าเป็น server ให้ nagios มาเรียกเพื่อดึงค่า) ดังนี้

    sudo apt-get install -y nagios-nrpe-server

    2) ทำการแก้ config /etc/nagios/nrpe.cfg เพื่อใส่ชื่อเครื่องที่อนุญาตให้มาดึงค่าได้ ดังนี้

    sudo nano /etc/nagios/nrpe.cfg
    ...
    
    #
    # NOTE: This option is ignored if NRPE is running under either inetd or xinetd
    
    allowed_hosts=127.0.0.1,monitor

    3) จากนั้นทำการ Restart nrpe ดังนี้

    sudo /etc/init.d/nagios-nrpe-server restart

    4) ให้กลับไปดูใน web nagios จะพบว่ามีการแสดงข้อมูลในส่วนของ nrpe (ในกรณีที่สร้าง service nrpe เรียบร้อยแล้ว)

    ยกตัวอย่างวิธีการเพิ่ม Plugin ให้กับ nrpe บน Ubuntu 14.04

    plugin ที่ให้มายังไม่มีในส่วนของการ monitor memory โดยให้สร้างใน path /usr/lib/nagios/plugins/ และทำการสร้าง command เพิ่มเติมในไฟล์ /etc/nagios/nrpe.cfg ประมาณนี้

    cd /usr/lib/nagios/plugins
    sudo wget http://ftp.psu.ac.th/pub/psu-monitor/check_mem.sh
    sudo chmod ugo+x check_mem.sh
    sudo nano /etc/nagios/nrpe.cfg
    ...
    
    command[check_zombie_procs]=/usr/lib/nagios/plugins/check_procs -w 5 -c 10 -s Z
    command[check_total_procs]=/usr/lib/nagios/plugins/check_procs -w 150 -c 200 
    command[check_mem]=/usr/lib/nagios/plugins/check_mem.sh 85 95
  • 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

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

  • การสร้าง 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 ได้อย่างถูกต้อง

  • การทดสอบประสิทธิภาพ Web Server ประเภท Static Page : Apache2 vs Lighttpd บนเครื่อง Ubuntu 14.04 LTS

    เครื่องมือในการทดสอบ
    Web Server OS : Ubuntu 14.04 LTS
    Client OS : Windows 8.1
    Software : Apache Jmeter 2.11

    Environment :
    Web Server
    Ubuntu Server (Oracle VM VirtualBox)
    Intel Haswell 1.6GHz (2.30GHz) 4 core RAM 512G
    Client
    Windows 8.1 (Physical Notebook)
    Intel Haswell 1.6GHz (2.30GHz) Intel Haswell 4 core RAM 8G
    – รันอยู่บนเครื่องเดียวกัน
    – ใช้ค่า Default ไม่มีการ Tuning เพิ่มเติม

    วิธีการทดสอบ

    1. ทำการตั้งค่า Apache ให้อยู่คนละ Port กับ Lighttpd2014-05-23_063514

    2. ทำการสร้าง Static Page โดยมีตำแหน่ง และ HTML Code (index.html) ดังนี้

    Apache : /var/www/html/index.html
    สำหรับ Apache ให้ rename ไฟล์เดิมก่อนเนื่องจากมีไฟล์อยู่แล้วด้วยคำสั่งดังนี้

    sudo mv /var/www/html/index.html /var/www/html/index.html_bak
    

    Lighttpd : /var/www/index.html

    <!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.0 Transitional//EN">
    <html>
    <head>
    <title>Webserver test</title>
    </head>
    <body>
    This is a webserver test page.
    </body>
    </html>

    3. เปิดโปรแกรม Jmeter ทำการ Add Thread Group, HTTP Request, View Results Tree และ Graph Results
    2014-05-23_063658

    4. ทำการทดสอบโดยชี้ไปที่ Web Site ของ Web Server ที่ต้องการ โดยมีตัวอย่างดังรูป
    (จะสังเกตุว่ามีการตั้งค่า Timeout = 1500 ms เพื่อป้องกันโปรแกรมค้าง เนื่องจาก Web Server ไม่ยอมตอบ)
    2014-05-23_105637

    *หมายเหตุ ระหว่างรัน Test สามารถตรวจสอบการทำงานของเครื่อง Web Server โดยติดตั้งโปรแกรมชื่อ htop ดังนี้

    sudo apt-get install -y htop
    

    พิมพ์คำสั่ง htop จะปรากฎหน้าจอดังรูป2014-05-23_065732

    การตั้งค่าทดสอบ

    Number of Threads (users) : 500,1000,2000,2500,3000
    Ramp-Up Period (in seconds) : 1
    Loop Count : 1

    ตัวอย่างการทดสอบ

    จำนวน Users ที่เปิด Page ไม่สำเร็จ

    Number of Threads (users) 500 1000 2000 2500 3000
    Apache2 0 28 424 2232 Jmeter Hang
    Lighttpd 0 0 3 1418 Jmeter Hang

    ซึ่งการทดสอบแบบไม่มีการ Tuning อาจจะไม่ Fair สำหรับแต่ละ Web Server (แม้ผลจะออกมาชัดว่า Lighttpd เหนือกว่า) เพราะยังไม่ได้มีการดึงประสิทธิภาพหรือตั้งค่า Limit Connection ให้รองรับได้สูงสุด และยังมีในส่วนของ Cache หลาย ๆ แบบที่จะช่วยให้ไม่ต้องประมวลผล Page เดิม ๆ ซ้ำบ่อย ๆ แต่ถึงกระนั้นวิธีนี้เป็นวิธีการหนึ่งที่ใช้ในการทดสอบก่อนจะมีการใช้งานจริง เพื่อทำให้เราเตรียมการได้ทันท่วงที เช่นทดสอบแล้วมีบ้าง SQL ที่ใช้เวลานานกว่าปกติ หรือ database connection limit

    สำหรับ Jmeter นั้นสามารถทำอะไรได้อีกมากมาย สามารถเขียน Script ในลักษณะของ Batch Job เพื่อดู Flow การทำงานของทั้ง Web Database และอื่น ๆ ถ้าใครอยากศึกษาเพิ่มเติมสามารถหาอ่านได้จาก Google ทั่ว ๆ ไปครับ

    Reference :
    [1] http://www.cyberciti.biz/tips/howto-performance-benchmarks-a-web-server.html

  • การติดตั้ง Lighttpd + PHP5 บนเครื่อง Ubuntu 14.04 LTS

    มาเริ่มขั้นตอนการติดตั้งกันเลยครับ

    วิธีการติดตั้ง Lighttpd Web Server

    1. ทำการติดตั้ง Lighttpd ผ่าน apt-get ดังนี้ครับ

    # sudo apt-get install -y lighttpd

    2. ให้ทำการ Restart Lighttpd ด้วยคำสั่ง

    # sudo service lighttpd restart
    

    3. ทำการทดสอบเข้าใช้งาน HTTP โดยพิมพ์คำสั่ง http://หมายเลขไอพีของเซิร์ฟเวอร์ เช่น

    http://192.168.99.1

    4. ในกรณีที่ต้องการติดตั้ง SSL ให้พิมพ์คำสั่งเพื่อเปิด site ดังนี้

    sudo lighttpd-enable-mod ssl
    

    5. หลังจากนั้นทำการ สร้าง key จาก default cer (ถ้ามี key จริงสามารถนำมาแทนได้ในภายหลัง)

    ในกรณีที่ไม่เคยติดตั้ง apache ให้ติดตั้งโปรแกรม ssl-cert ก่อนดังนี้

    sudo apt-get install -y ssl-cert
    

    ทำการรวม Key โดยสร้างเป็นไฟล์ใหม่ เก็บไว้ที่ /etc/lighttpd/snakeoil.pem

    sudo sh -c 'cat /etc/ssl/certs/ssl-cert-snakeoil.pem /etc/ssl/private/ssl-cert-snakeoil.key > /etc/lighttpd/snakeoil.pem'
    

    6. จากนั้นทำการเข้าไปแก้ไฟล์ระบุ เพื่อระบุตำแหน่ง cer ให้ถูกต้อง

    sudo nano /etc/lighttpd/conf-enabled/10-ssl.conf
    

    7. ทำการแก้ไขข้อความในไฟล์ดังนี้

    ssl.pemfile = "/etc/lighttpd/snakeoil.pem"
    

    8. จากนั้นให้สั่ง Restart Lighttpd  ตามปกติ

    # sudo service lighttpd restart
    

    9. ทำการทดสอบเข้าใช้งาน HTTPS โดยพิมพ์คำสั่ง https://หมายเลขไอพีของเซิร์ฟเวอร์ เช่น

    https://192.168.99.1
    

    *หมายเหตุ วิธีการดู IP ให้พิมพ์ดังนี้

    ifconfig

    ให้วิธีการดูให้สังเกตุตามรูปตัวอย่าง

    2014-05-22_102420

    – eth0 เป็น ip จาก nat interface
    – eth1 เป็น ip จาก bridge interface
    – lo เป็น ip จาก loopback interface

    วิธีการเปลี่ยน Lighttpd Server Default Port

    *ยกตัวอย่างการเปลี่ยนจาก port 80->8081

    – เปิดไฟล์ /etc/lighttpd/lighttpd.conf

    sudo nano /etc/lighttpd/lighttpd.conf
    

    – แก้ไขข้อความในไฟล์ดังนี้ (วิธีการ save ให้กด Ctrl-X แล้วกด y แล้ว enter)

    server.port = 8081

    วิธีการติดตั้ง PHP5 เพื่อใช้งานกับ Lighttpd Web Server
    1. ทำการติดตั้ง PHP5 ดังนี้

    sudo apt-get install php5-cgi
    

    2. ทำการเปิดใช้งาน module เพื่อให้สามารถใช้งาน php บน lighttpd ได้

    sudo lighty-enable-mod fastcgi
    sudo lighty-enable-mod fastcgi-php
    

    3. จากนั้นให้สั่ง Restart Lighttpd  ตามปกติ

    # sudo service lighttpd restart

    4. วิธีการสร้างไฟล์ตรวจสอบสามารถทำได้ดังนี้

    – เปิดไฟล์ /var/www/info.php

    sudo sh -c 'echo "<?php echo phpinfo(); ?>" > /var/www/info.php'
    

    – จากนั้นทำการเปิด web http://หมายเลขไอพีของเซิร์ฟเวอร์/info.php ตัวอย่าง

    http://192.168.99.1/info.php
  • วิธีตั้งค่า Apache web server 2.4.x แตกต่างจาก 2.2.x

    asf_logo_wide
    เก็บตกจากวันวานเปิดอบรม Workshop Linux System Administration II (WS-LSA2) ที่ศูนย์คอมฯ 2 วัน ผมเตรียมเอกสาร workshop วิธีตั้งค่าหลายๆเรื่องบน ubuntu 12.04 แต่พอดีกับที่ ubuntu 14.04 ออกมาแล้ว จึงนำ ubuntu 14.04 มาให้ผู้เรียนใช้ติดตั้ง มันก็ไม่มีอะไรแตกต่างไปจาก ubuntu 12.04 ตั้งแต่เริ่มต้น installation จนกระทั่งมาถึงเรื่องที่เราจะตั้งค่าเกี่ยวกับ Apache web server ซึ่งทำให้ต้องแก้ไขเอกสารประกอบการสอนกันสดๆตอนนั้นเลย (ฮา)

    เพราะว่า Apache Web Server ที่อยู่ในแผ่น ubuntu 14.04 นั้นเป็นเวอร์ชั่น 2.4.7 ซึ่งมี Default Document Root อยู่ที่ /var/www/html ต่างจาก Apache Web Server เวอร์ชั่นก่อนหน้านี้ (2.2.x) ที่มี Default Document Root อยู่ที่ /var/www เป็นต้น

    พอจะสรุปได้ดังนี้

    Apache Web Server 2.2.x ทำแบบนี้
    1.พื้นที่ default ของ Apache Web Server คือไดเรกทอรี /var/www
    หากจะติดตั้ง Joomla CMS เราจะเตรียมพื้นที่สำหรับติดตั้ง joomla ไว้ที่ไดเรกทอรี /var/www/testjoomla ด้วยคำสั่ง sudo mkdir -p /var/www/testjoomla

    2.website config file จะอยู่ที่ไดเรกทอรี /etc/apache2/sites-available
    จะมีไฟล์ชื่อ default และ default-ssl มาให้
    และหากจะสร้าง VirtualHost pma.example.com เราก็สร้าง config file ที่มีชื่อไฟล์อย่างไรก็ได้ เช่น /etc/apache2/sites-available/pma หลังจากนั้นเราก็ enable VirtualHost นี้ จาก config ที่เราสร้างขึ้นใหม่ โดยการใช้คำสั่ง sudo a2ensite pma แล้วก็สั่ง restart apache

    3.เมื่อเข้าไปดูในไฟล์ default
    DocumentRoot จะอยู่ที่ /var/www

    4.Apache2 config file จะอยู่ที่ /etc/apache2/conf.d
    สมมติว่าต้องการเพิ่มการป้องกัน joomla web server ด้วย config file ชื่อ jce จะต้องทำดังนี้
    สร้างไฟล์ที่จะมีชื่ออย่างไรก็ได้ เช่น /etc/apache2/conf.d/jce แค่นี้ก็ได้แล้ว แล้วก็สั่ง restart apache และเมื่อจะไม่ใช้ config file jce นี้แล้ว ก็แค่ลบไฟล์นี้ทิ้ง

    แต่สำหรับ Apache Web Server 2.4.x วิธีการจะแตกต่างไป ดังนี้
    1.พื้นที่ default ของ Apache Web Server คือไดเรกทอรี /var/www/html
    หากจะติดตั้ง Joomla CMS เราจะต้องเตรียมพื้นที่สำหรับติดตั้ง joomla ไว้ที่ไดเรกทอรี /var/www/html/testjoomla ด้วยคำสั่ง sudo mkdir -p /var/www/html/testjoomla

    2.website config file จะอยู่ที่ไดเรกทอรี /etc/apache2/sites-available
    จะมีไฟล์ชื่อ 000-default และ default-ssl มาให้ (ต่างจาก 2.2.x)
    และหากจะสร้าง VirtualHost pma.example.com เราก็ต้องสร้าง config file ที่มี .conf ต่อท้ายชื่อไฟล์ด้วย เช่น /etc/apache2/sites-available/pma.conf
    หลังจากนั้นเราก็ enable VirtualHost นี้ จาก config ที่เราสร้างขึ้นใหม่ โดยการใช้คำสั่ง
    sudo a2ensite pma แล้วจึงจะสั่ง restart apache สำเร็จ

    3.เมื่อเข้าไปดูในไฟล์ default
    DocumentRoot จะอยู่ที่ /var/www/html

    4.Apache2 config file จะอยู่ที่ไดเรกทอรี /etc/apache2/conf-available และต้องสั่ง enable config file ที่ต้องการใช้งานก่อนจึงจะใช้งานได้ แล้วจะเกิดไฟล์ขึ้นอยู่ที่ไดเรกทอรี /etc/apache2/conf-enabled
    สมมติว่าต้องการเพิ่มการป้องกัน joomla web server ด้วย config file ชื่อ jce จะต้องทำดังนี้ เราต้องตั้งชื่อให้มี .conf ต่อท้ายด้วยคือ /etc/apache2/conf-available/jce.conf
    และใช้คำสั่งเพื่อ enable config file ดังนี้ sudo a2enconf jce แล้วก็สั่ง restart apache จึงจะสำเร็จ และเมื่อจะไม่ใช้ config file นั้น ก็จะต้องสั่งดังนี้ sudo a2disconf jce แล้วก็สั่ง restart apache จึงจะสำเร็จ

    ก็หวังว่าบทความนี้จะเป็น guide ให้แอดมินคิดออกว่า “เอ๊ะ! ทำไมเราตั้งค่าไม่ได้ทั้งๆที่เคยทำได้และทำอยู่บ่อยๆด้วย”

    ขอบคุณครับ