Day: May 22, 2014

  • การติดตั้ง 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
  • การติดตั้ง Apache2 + PHP5 บนเครื่อง Ubuntu 14.04 LTS

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

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

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

    # sudo apt-get install -y apache2 
    

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

    # sudo service apache2 restart
    

    จะเห็นได้ว่าจะมี Warning เกี่ยวกับ Domain Name ไม่ต้องตกใจครับ สามารถใช้งานได้ แต่เพราะยังไม่ได้จด Domain ให้กับ IP เครื่องที่ติดตั้ง ทุกครั้งที่ Restart ก็จะมีการฟ้องจนกว่าจะจดครับ

    ถ้าไม่ต้องการให้ขึ้น Warning ดังกล่าว ให้ทำการแก้ไขไฟล์ /etc/apache2/apache2.conf ดังนี้

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

    sudo nano /etc/apache2/apache2.conf
    

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

    ServerName localhost

    3. จากนั้นทำการ Restart Apache อีกครั้งจะไม่พบข้อความ Warning อีกแล้ว

    # sudo service apache2 restart

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

    http://192.168.99.1
    

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

    sudo a2enmod ssl
    sudo a2ensite default-ssl

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

    # sudo service apache2 restart
    

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

    https://192.168.99.1
    

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

    sudo a2dismod ssl
    sudo a2dissite default-ssl

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

    # sudo service apache2 restart
    

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

    ifconfig

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

    2014-05-22_102420

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

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

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

    1. เปิดไฟล์ /etc/apache2/sites-enabled/000-default.conf

    sudo nano /etc/apache2/sites-enabled/000-default.conf
    

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

    <VirtualHost *:8080>

    3. เปิดไฟล์ /etc/apache2/ports.conf

    sudo nano /etc/apache2/ports.conf
    

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

    Listen 8080

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

    # sudo service apache2 restart
    

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

    http://192.168.99.1:8080

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

    sudo apt-get install -y php5 libapache2-mod-php5
    

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

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

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

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

    http://192.168.99.1/info.php
  • Server High Availability คืออะไร

    “เคยได้ยินคำว่า Server เรามี Uptimeถึง 99% ไหม” 

    High Availability มีชื่อย่อในวงการสั้น ๆ ว่า HA องค์กรหรือหน่วยงานมากมายในปัจจุบันมีการวัดประสิทธิภาพการให้บริการด้วย HA โดยจะมีหน่วยการวัดที่เรียกว่า Uptime ซึ่งคิดจากเวลาเป็น % ของการให้บริการ โดยมีชื่อเรียกระดับการให้บริการตามตารางดังนี้

    Availability % Downtime per year Downtime per month* Downtime per week
    90% (“one nine”) 36.5 days 72 hours 16.8 hours
    95% 18.25 days 36 hours 8.4 hours
    97% 10.96 days 21.6 hours 5.04 hours
    98% 7.30 days 14.4 hours 3.36 hours
    99% (“two nines”) 3.65 days 7.20 hours 1.68 hours
    99.5% 1.83 days 3.60 hours 50.4 minutes
    99.8% 17.52 hours 86.23 minutes 20.16 minutes
    99.9% (“three nines”) 8.76 hours 43.8 minutes 10.1 minutes
    99.95% 4.38 hours 21.56 minutes 5.04 minutes
    99.99% (“four nines”) 52.56 minutes 4.32 minutes 1.01 minutes
    99.999% (“five nines”) 5.26 minutes 25.9 seconds 6.05 seconds
    99.9999% (“six nines”) 31.5 seconds 2.59 seconds 0.605 seconds
    99.99999% (“seven nines”) 3.15 seconds 0.259 seconds 0.0605 seconds

    ระดับที่หลายหน่วยงานหรือหลายอุปกรณ์พยายามจะโฆษณา จะอยู่ที่ระดับ Five nines หรือ Uptime 99.999% นั่นเอง ซึ่งจะเห็นได้ว่าจะมี Downtime แค่ 5.26 นาที ต่อปีเท่านั้น ซึ่งมองในด้านอุปกรณ์เครือข่าย จะมีปัจจัยน้อยที่จะทำให้เกิด Downtime แต่ในส่วนของ Server นั่นจะมีปัจจัยมากกว่าเพราะประกอบด้วยอุปกรณ์มากชิ้น แต่ปัญหาดังกล่าวในปัจจุบันน้อยลง หลังจากเข้าสู่ยุคของ Cluster หรือ Cloud เพราะจะมีเครื่องคอยทำงานแทนกันอยู่ตลอดเวลานั่นเอง

    network_ha_design
    ตัวอย่างการทำ HA ระดับองค์กร

    โดยคำว่า HA มักจะใช้คู่กับสิ่งที่เราจะต้องการจะสื่อว่าจะทำอย่างไรให้ระบบมี Uptime สูง ๆ เช่น Server High Availability ก็คือทำให้เครื่อง Server มีการให้สามารถทำงานได้โดยไม่ Hang ไม่ดับ ถ้าใช้กับคำว่า Web Server High Availability ก็หมายความว่า จะทำอย่างไรให้สามารถให้บริการ Web Site โดยไม่มีอาการล่ม ซึ่งบางครั้งเราจะมีการ ตัด Downtime ที่เป็นการวางแผนเอาไว้ก่อนแล้ว หรือเรียกสั้น ๆ ว่าการ Maintenance ระบบนั่นเอง

    การที่จะทำให้เกิดสิ่งที่เรียกว่า HA ก็มีอยู่ 3-4 แบบใหญ่ ๆ ที่สามารถนำมาใช้เพื่อเพิ่ม Uptime ได้ดังนี้

    การใช้เทคโนโลยีคลัชเตอร์ (Cluster) : คือการนำเครื่องหลาย ๆ เครื่องมาตั้งค่าให้เหมือนกัน และทำงานได้เสมือนว่ามี Server แค่ตัวเดียว ในกรณที่เมื่อเครื่องใดเครื่องหนึ่งเสียหายจะไม่ส่งผลต่อการให้บริการ

    การทำรีดันแดนซ์ (Redundancy) : คือการใช้อุปกรณ์จำนวนสองชุดขึ้นไปทำงานพร้อมกัน ทำให้ได้ประสิทธิภาพเต็มที่ นิยมใช้ในระบบเครือข่าย

    การทำโหลดบาลานซ์ (Load Balance) : เราสามารถที่จะเอาเครื่อง Server หลาย ๆ เครื่องมาเชื่อมต่อกัน เพื่อให้ทำงานหลาย ๆ อย่างร่วมกัน

    การเรพพลีเคนและแบคอัพ (Replication & Backup) : คือการคัดลอกข้อมูลจากระบบหลักไประบบรอง เมื่ออุปกรณ์หลักเกิดล่ม ก็จะมีการเปิดระบบสำรองใช้ได้ทันที

    โดยการทำ Load Balance ยังสามารถอธิบายเพิ่มเติมได้ 3 ลักษณะด้วยกันดังนี้

    Round-Robin : คือการใช้วิธีหมุนวนไปเรื่อย ๆ ซึ่งอาจทำได้ทั้งแบบ Round-Robin ที่อุปกรณ์ Load Balance หรือการจด DNS แบบ Round Robin

    Sticky  : คือการยึดติดกับ Session ในกรณีที่เมื่อระบบมีการเลือก Server ไปแล้วก็จะให้ ผู้ใช้คนเดิมใช้ Server เดิมไปจนกว่าจะหมด Session (นึกถึงกรณีต้อง Login ก่อนใช้งาน ถ้าเปลี่ยน Server ไปเรื่อย ๆ คงไม่ดีแน่)

    Work Load : คือการตรวจสอบประสิทธิภาพของ Server ก่อนที่จะเลือก โดยเลือกจากเครื่องที่ยังมีประสิทธิภาพดีกว่าก่อน ทำให้ระบบโดยรวมจะมีประสิทธิภาพดีกว่าแบบ Round-Robin เหมาะกับระบบที่มีประสิทธิภาพ Server แตกต่างกัน (เครื่องแรงปนเครื่องอ่อน)

    จากที่กล่าวไปเราสามารถใช้หลาย ๆ วิธีผสมกันก็ได้เพื่อจุดมุ่งหมายเดียวกันคือการเพิ่ม Uptime โดยเครื่องมือที่เป็น Opensource ที่ใช้วัด และที่มีมานานรวมทั้งเป็นยอมรับคือเครื่องมือตระกูล nagios และ cacti นั่นเอง แต่อย่าลืมไปละครับว่าเครื่องมือเหล่านั้นต้องรันอยู่บนเครื่องที่มี Uptime สูงด้วย ไม่ใช่ คนตรวจสอบก็ Down, อุปกรณ์ ก็ Down ไม่เช่นนั้นอาจจะได้ค่าหลอก ๆ ไม่ตรงกับความเป็นจริงก็เป็นได้

    “ถึงเวลาต้องทำ HA กันหรือยังเอ่ย ?”

     

    Reference : 
    [1] http://en.wikipedia.org/wiki/High_availability
    [2] http://smart.tnis.com/th/articles/details/30/%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2%E0%B8%82%E0%B8%B5%E0%B8%94%E0%B8%84%E0%B8%A7%E0%B8%B2%E0%B8%A1%E0%B8%AA%E0%B8%B2%E0%B8%A1%E0%B8%B2%E0%B8%A3%E0%B8%96%E0%B9%83%E0%B8%AB%E0%B9%89%E0%B8%AD%E0%B8%87%E0%B8%84%E0%B9%8C%E0%B8%81%E0%B8%A3%E0%B8%94%E0%B9%89%E0%B8%A7%E0%B8%A2-HIGH-AVAILABILITY
    [3] http://www.dctwo.com.au/virtual/virtual_server_hardware_platform.html
    [4] http://bomber.exteen.com/20040813/cluster-load-balance