วันพุธที่ 2 ธันวาคม พ.ศ. 2558

ติดตั้ง Openvpn 2.3.2 บนโอเอส Ubuntu Desktop 14.04.3 LTS

หลังจากหายหน้าหายตาไปหลายสัปดาห์ ก็เป็นโอกาสอันดีอีกครั้งหนึ่งที่ผู้เ่ขียนได้เริ่มจับงานด้านการสร้างระบบเครือข่ายเสมือนส่วนตัว(virtual private network) สำหรับงานการทำ VPN นี้ตั้งใจจะนำมาทดสอบระบบกล้องวงจรปิดที่ต้องการรีโมตและบันทึกข้อมูลผ่านเครือข่ายที่มีความซับซ้อน ปัญหาหลักของกล้องวงจรปิดแบบไอพี (ip camera) ก็คือตัวเครื่องบันทึกข้อมูลสามารถรับสัญญาณภาพภายในเครือข่ายแลนเท่านั้นหากต้องการส่งข้ามเน็ตเวิร์คหรือผ่านอุปกรณ์ nat ย่อมไม่สามารถทำงานได้

ด้วยเหตุของความสลับซับซ้อนของระบบเครือข่ายโดยเฉพาะอย่างยิ่งหากต้องการดูภาพจากกล้องแบบเวลาจริงผ่านเครือข่ายมือถือแบบ 3G/4G ด้วยแล้วโอกาสที่จะทำงานได้ย่อมเป็นไปไม่ได้เลย ด้วยเหตุนี้การใช้งานเครือข่ายแบบเสมือนส่วนตัวน่าจะช่วยแก้ปัญหาในเรื่องนี้ได้ แต่ข้อนี้ผู้เขียนยังไม่เคยได้ทดสอบ เพื่อป้องกันการสับสนวันนี้เรามาสร้างเครื่องเซิร์ฟเวอร์หรือเครื่องลูกข่ายสำหรับใช้งานโปรแกรม openvpn กัน

ขั้นตอนที่ 1 ดำเนินการติดตั้งโปรแกรม openvpn และโปรแกรมสร้างคีย์สาธารณะ easy-rsa
#apt-get install openvpn easy-rsa

ขั้นตอนที่ 2 หลังจากติดตั้งโปรแกรมเสร็จสิ้นสมบูรณ์ตามขั้นตอนที่ 1 แล้วให้แก้ไขไฟล์ vars อยู่ในโฟลเดอร์ /etc/openvpn/easy-rsa
export KEY_COUNTRY="TH"
export KEY_PROVINCE="Nonthaburi"
export KEY_CITY="Saima"
export KEY_ORG="Thai Prosperous IT Co.,Ltd."
export KEY_EMAIL="             @gmail.com"

ขั้นตอนที่ 3 จากนั้นให้ดำเนินการตามขั้นตอนต่อไปนี้ source vars เป็นการบอกสคริปให้รู้จักตัวแปรที่ได้แก้ไขใหม่ ส่วน clean-all เป็นการลบค่าเก่าของโฟลเดอร์ keys
#source vars
#./clean-all

ขั้นตอนที่ 4 เป็นการสร้าง Certificate Authority(CA) หรือคีย์หลักในการให้ใบรับรองดิจิตอล
#./build-ca

Generating a 2048 bit RSA private key
....................................................................................................+++
......................................................................+++
writing new private key to 'ca.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [TH]:
State or Province Name (full name) [NONTHABURI]:
Locality Name (eg, city) [SAIMA]:
Organization Name (eg, company) [OpenVpn IP Camera Server]:
Organizational Unit Name (eg, section) [OpenVpnDevelopmentUnit]:
Common Name (eg, your name or your server's hostname) [OpenVpn IP Camera Server CA]:
Name [EasyRSA]:
Email Address [me@myhost.mydomain]:             @gmail.com

ขั้นตอนที่ 5 จากนั้นสร้าง Public Keys สำหรับเครื่องเซิร์ฟเวอร์
# ./build-key-server OpenVpnServer
# ./build-dh

ขั้นตอนที่ 6 ให้ทำการคัดลอกคีย์ต่อไปนี้ไปยังโฟลเดอร์ /etc/openvpn
#cd keys/
#cp myservername.crt myservername.key ca.crt dh2048.pem /etc/openvpn/

ขั้นตอนที่ 7 สำหรับเครื่องเซิร์ฟเวอร์ที่ต้องการสร้างเราเตอร์จากอินเตอร์เฟส Tunnel ไปยังเครือข่ายอื่นในระบบให้แก้ไขไฟล์ /etc/sysctl.conf เพื่อทำการฟอร์เวิร์ดไอพี

net.ipv4.ip_forward=1

เป็นอันสิ้นสุดการติดตั้ง Openvpn 2.3.2 บนโอเอส Ubuntu Desktop 14.04.3 LTS สำหรับไฟล์ server.conf คอนฟิกตัวอย่างสำหรับ server สามารถคัดลอกมาได้จากโฟลเดอร์ /usr/share/doc/openvpn/examples/sample-config-files/

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

สำหรับเนื้อหาในวันนี้ต้องขอขอบพระคุณ บจก.ไทย พรอสเพอรัส ไอที ผู้นำด้านการให้บริการระบบ GPS TRACKING ครบวงจรด้วยอุปกรณ์ชั้นนำนำเข้าจากยุโรปโดยตรง พร้อมระบบจีพีเอสเซิร์ฟเวอร์ออนไลน์ใช้งานได้ในประเทศไทย ไม่ต้องเปลืองทราฟฟิกไปยังต่างประเทศ

วันอาทิตย์ที่ 19 กรกฎาคม พ.ศ. 2558

เมื่อต้องสู้กับ สแปมเมลล์ บนซอฟต์แวร์ Zimbra Community 8.0.1.GA.5438

ยินดีต้อนรับสู่เวบบล็อกดีๆ ของคนรักโอเพ่นซอร์ส หลังจากไม่ได้อัพเดทมาหลายสัปดาห์ ผู้เขียนเองพักหลังก็ไม่ค่อยได้มีงานเกี่ยวกับด้านการดูแลระบบให้ได้แก้ไขมากนัก เพราะปัจจุบันงานที่ทำมุ่งเน้นไปยังธุรกิจ GPS TRACKER เป็นหลัก แต่อย่างไรก็แล้วแต่หากมีงานด้านการดูแลระบบเข้ามาให้แก้ไข ก็จะได้อัพเดทเรื่องราวดีๆ เหล่านี้ให้ได้ทราบกัน

เมื่อเดือนที่ผ่านมาปรากฏว่าเครื่อง Zimbra Community 8.0.1.GA.5438 ที่ผู้เขียนดูแลอยู่เป็นสแปม ไอพีติดแบล็กลิสต์ ในช่วงเวลาที่ผ่านมา 1 เดือนได้พยายามแจ้งไปยังเวบไซต์ต่างๆที่รายงานด้านสแปม จนสามารถปลดล็อกไอพีได้ แต่เซิร์ฟเวอร์เมลล์ของผู้เขียนก็ยังไม่สามารถส่งข้อความไปยังโดเมนในกลุ่มค่ายไมโครซอฟต์ได้ เช่น hotmail.com live.com และ msn.com จึงเป็นที่มา "เมื่อต้องสู้กับ สแปมเมลล์ บนซอฟต์แวร์ Zimbra Community 8.0.1.GA.5438"

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

ขั้นตอนที่ 1 โดยขั้นตอนการกำหนดค่าให้กับคอนฟิกของ fail2ban สามารถดำเนินการได้ดังนี้ ให้ทำการแก้ไขไฟล์ jail.conf


[zimbra-account]
enabled = true
filter = zimbra
action = iptables-allports[name=zimbra-account]
sendmail[name=zimbra-account, dest=admin@example.com]
logpath = /opt/zimbra/log/mailbox.log
bantime = 600
maxretry = 2

[zimbra-audit]
enabled = true
filter = zimbra
action = iptables-allports[name=zimbra-audit]
sendmail[name=Zimbra-audit, dest=admin@example.com]
logpath = /opt/zimbra/log/audit.log
bantime = 600
maxretry = 2

[zimbra-recipient]
enabled = true
filter = zimbra
action = iptables-allports[name=zimbra-recipient]
sendmail[name=Zimbra-recipient, dest=admin@example.com]
logpath = /var/log/zimbra.log
#findtime = 604800
bantime = 172800
maxretry = 2

[postfix]
enabled = true
filter = postfix
action = iptables-multiport[name=postfix, port=smtp, protocol=tcp]
sendmail-buffered[name=Postfix, dest=admin@example.com]
logpath = /var/log/zimbra.log
bantime = -1
maxretry = 5

ขั้นตอนที่ 2 จากนั้นให้ทำการสร้างไฟล์ zimbra.conf ในโฟลเดอร์ /etc/fail2ban/filter.d/
# Fail2Ban configuration file
#
# Author:
#
# $Revision: 1 $
#

[Definition]

# Option:  failregex
# Notes.:  regex to match the password failures messages in the logfile. The
#          host must be matched by a group named "host". The tag "<HOST>" can
#          be used for standard IP/hostname matching and is only an alias for
#          (?:::f{4,6}:)?(?P<host>[\w\-.^_]+)
# Values:  TEXT
#
failregex = \[ip=<HOST>;\] account - authentication failed for .* \(no such acco
unt\)$
                        \[ip=<HOST>;\] security - cmd=Auth; .* error=authenticat
ion failed for .*, invalid password;$
                        ;oip=<HOST>;.* security - cmd=Auth; .* protocol=soap; er
ror=authentication failed for .* invalid password;$
                        \[oip=<HOST>;.* SoapEngine - handler exception: authenti
cation failed for .*, account not found$
                        WARN .*;ip=<HOST>;ua=ZimbraWebClient .* security - cmd=A
dminAuth; .* error=authentication failed for .*;$
                        NOQUEUE: reject: RCPT from .*\[<HOST>\]: 550 5.1.1 .*: R
ecipient address rejected:

# .*\[ip=<HOST>;\] .* - authentication failed for .* \(invalid password\)
#
# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =
root@teltonika:/etc/fail2ban/filter.d# more zimbra.conf
# Fail2Ban configuration file
#
# Author:
#
# $Revision: 1 $
#

[Definition]

# Option:  failregex
# Notes.:  regex to match the password failures messages in the logfile. The
#          host must be matched by a group named "host". The tag "<HOST>" can
#          be used for standard IP/hostname matching and is only an alias for
#          (?:::f{4,6}:)?(?P<host>[\w\-.^_]+)
# Values:  TEXT
#
failregex = \[ip=<HOST>;\] account - authentication failed for .* \(no such account\)$
                        \[ip=<HOST>;\] security - cmd=Auth; .* error=authentication failed for .*, invalid password;$
                        ;oip=<HOST>;.* security - cmd=Auth; .* protocol=soap; error=authentication failed for .* invalid password;$
                        \[oip=<HOST>;.* SoapEngine - handler exception: authentication failed for .*, account not found$
                        WARN .*;ip=<HOST>;ua=ZimbraWebClient .* security - cmd=AdminAuth; .* error=authentication failed for .*;$
                        NOQUEUE: reject: RCPT from .*\[<HOST>\]: 550 5.1.1 .*: Recipient address rejected:

# .*\[ip=<HOST>;\] .* - authentication failed for .* \(invalid password\)
#
# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =





ขั้นตอนที่ 3 ให้สั่งเริ่มต้นการทำงานเซอร์วิส fail2ban ใหม่

#/etc/init.d/fail2ban restart

ขั้นตอนที่ 4 ให้ทดสอบการตรวจสอบดูว่าเราสร้างไฟล์ข้างต้นถูกต้องสมบูรณ์หรือไม่ พร้อมกับทดสอบการป้องกันดูว่าจะได้ผลหรือไม่

# fail2ban-regex /var/log/zimbra.log /etc/fail2ban/filter.d/zimbra.conf

Running tests
=============

Use regex file : /etc/fail2ban/filter.d/zimbra.conf
Use log file   : /var/log/zimbra.log


Results
=======

Failregex
|- Regular expressions:
|  [1] \[ip=<HOST>;\] account - authentication failed for .* \(no such account\)$
|  [2] \[ip=<HOST>;\] security - cmd=Auth; .* error=authentication failed for .*, invalid password;$
|  [3] ;oip=<HOST>;.* security - cmd=Auth; .* protocol=soap; error=authentication failed for .* invalid password;$
|  [4] \[oip=<HOST>;.* SoapEngine - handler exception: authentication failed for .*, account not found$
|  [5] WARN .*;ip=<HOST>;ua=ZimbraWebClient .* security - cmd=AdminAuth; .* error=authentication failed for .*;$
|  [6] NOQUEUE: reject: RCPT from .*\[<HOST>\]: 550 5.1.1 .*: Recipient address rejected:
|
`- Number of matches:
   [1] 0 match(es)
   [2] 0 match(es)
   [3] 0 match(es)
   [4] 0 match(es)
   [5] 0 match(es)
   [6] 1 match(es)

Ignoreregex
|- Regular expressions:
|
`- Number of matches:

Summary
=======

Addresses found:
[1]
[2]
[3]
[4]
[5]
[6]
    66.196.81.146 (Sun Jul 19 09:32:37 2015)

Date template hits:
225061 hit(s): MONTH Day Hour:Minute:Second
0 hit(s): WEEKDAY MONTH Day Hour:Minute:Second Year
0 hit(s): WEEKDAY MONTH Day Hour:Minute:Second
0 hit(s): Year/Month/Day Hour:Minute:Second
0 hit(s): Day/Month/Year Hour:Minute:Second
0 hit(s): Day/Month/Year Hour:Minute:Second
0 hit(s): Day/MONTH/Year:Hour:Minute:Second
0 hit(s): Month/Day/Year:Hour:Minute:Second
0 hit(s): Year-Month-Day Hour:Minute:Second
0 hit(s): Year.Month.Day Hour:Minute:Second
0 hit(s): Day-MONTH-Year Hour:Minute:Second[.Millisecond]
0 hit(s): Day-Month-Year Hour:Minute:Second
0 hit(s): TAI64N
0 hit(s): Epoch
0 hit(s): ISO 8601
0 hit(s): Hour:Minute:Second
0 hit(s): <Month/Day/Year@Hour:Minute:Second>

Success, the total number of match is 1

However, look at the above section 'Running tests' which could contain important
information.

จากตัวอย่างจะพบว่ามีการตรวจสอบพบไอพีที่ผิดกฏข้อที่ 6  "NOQUEUE: reject: RCPT from .*\[<HOST>\]: 550 5.1.1 .*: Recipient address rejected:" ซึ่งหากไอพีนี้กระทำซ้ำกันเพียง 2 ครั้งเซิร์ฟเวอร์ก็จะทำการแบบไอพีนี้ทันทีอย่างน้อย 1 ชั่วโมง



วันพฤหัสบดีที่ 23 เมษายน พ.ศ. 2558

กำหนดค่า PPPoE บนอุปกรณ์เกตเวย์ เพื่อเพิ่มประสิทธิภาพการทำงานของระบบไวไฟ

ยินดีต้อนรับสู่เวบบล็อกดีๆ ของคนรักโอเพ่นซอร์ส เพื่อการพัฒนาและสร้างองค์ความรู้แบบยั่งยืน กลุ่ม System administrator ส่วนใหญ่ไม่ใช่โปรแกรมเมอร์ทำให้เป็นเฉพาะผู้ใช้ ไม่ได้เป็นผู้สร้างหรือผู้พัฒนา ผู้เขียนก็เช่นเดียวกันเป็นหนึ่งในผู้ใช้โปรแกรมโอเพ่นซอร์ส ครั้งนี้ก็เช่นเดียวกันจะเป็นการแนะนำวิธีการกำหนดค่า PPPoE อินเทอร์เฟสให้กับอุปกรณ์เกตเวย์ Smoothwall Community 3.0 กัน

ตัวอุปกรณ์เกตเวย์เองจะมีหน้าต่างแบบ GUI ให้สามารถกำหนดค่าให้กับอินเทอร์เฟสเพื่อทำงานในโหมด PPPoE เพื่อเพิ่มประสิทธิภาพการทำงาน เหตุผลสำคัญสำหรับอุปกรณ์โมเด็มเร้าเตอร์ก็คือความร้อนและการรองรับเซสชั่นจำนวนมากๆ จะทำได้ไม่ดีหรือเกิดการหลุดของสัญญาณบ่อยๆ

การกำหนดค่าแบบนี้เราจะต้องตั้งค่าโมเด็มให้ทำงานในโหมด bridge หรืออาศัย ADSL เร้าเตอร์ทำหน้าที่แค่เป็นโมเด็ม ส่วนอุปกรณ์เกตเวย์ทำหน้าที่เป็นตัวจัดการการเชื่อมต่อแทนเพื่อให้สามารถรองรับโหลดจำนวนมากๆ โดยที่ไม่หลุดบ่อย

สำหรับการตั้งค่าตามตัวอย่างเป็นการเชื่อมต่อแบบ PPPoE ไปยังระบบ ADSL ของทรู การตั้งค่าก็ให้ทำตามรูป

Profiles: ตั้งชื่อโปรไฟล์
Interface: เลือกแบบ PPPoE
Number: ป้อนหมายเลขโทรศัพท์ที่ใช้เชื่อมต่อ ADSL
Persistent comnection: เชื่อมต่อแบบถาวร
Connect on PGateway restart: เปิดการใช้งานอินเทอร์เฟส PPPoE ทุกครั้งที่เริ่มระบบใหม่


ด้วยขั้นตอนตามตัวอย่างตามรูปข้างบนจะทำให้เราสามารถเชื่อมต่อระบบPPPoE สำหรับบริหารจัดการใช้งานระบบ ADSL ได้อย่างเต็มประสิทธิภาพ นอกจากนี้ผู้เขียนยังได้เปิดให้บริการ gps tracker เพื่อควบคุมบริหารจัดการรถยนต์ของบริษัทฯ หรือรถยนต์ส่วนตัวให้สามารถตรวจสอบเส้นทาง ดูข้อมูลย้อนหลัง ทราบสถานะของยานพาหนะ ในราคามิตรภาพ ที่สำคัญสินค้านำเข้าจากยุโรปโดยตรงคุ้มค่าทนทานกว่า

วันศุกร์ที่ 20 มีนาคม พ.ศ. 2558

ติดตั้ง wordpress บนเซิร์ฟเวอร์ Ubuntu 14.04.1 LTS

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

ผู้เขียนเคยติดตั้ง wordpress บนเซิร์ฟเวอร์ Ubuntu 14.04.1 LTS ไปเมื่อปลายๆปีที่แล้วก็ผ่านไป 3 เดือน เอกสารประกอบก็จำไม่ได้ พอต้องรีบกลายเป็นว่ามึนงงกันอยู่สองสามวัน เพิ่งปะติดปะต่อเรื่องราวที่เคยทำสำเร็จไปก็วันนี้เอง จึงช้าไม่ได้ที่จะได้อัพเดทกัน

เพื่อไม่ให้เป็นการเสียเวลา ผู้เขียนจะได้พาเข้าไปแนะนำวิธีติดตั้ง wordpress บนเซิร์ฟเวอร์ Ubuntu 14.04.1 LTS

ขั้นตอนที่ 1 ติดตั้งซอฟต์แวร์ wordpress สำหรับการติดตั้งบนระบบโอเอส Ubuntu นั้นง่ายมากเพียงพิมพ์คำสั่งต่อไปนี้


#apt-get install wordpress


ขั้นตอนที่ 2 สร้างซอฟต์ลิงค์ไปยังเวบไดเรคทอรี่ สำหรับเวบไซต์ของผู้เขียนได้เปลี่ยนจากตำแหน่งเดิมมาเป็น /var/www

#ln -s /usr/share/wordpress /var/www/html/wordpress

ขั้นตอนที่ 3 เป็นการแตกไฟล์สำหรับใช้ติดตั้งฐานข้อมูลของระบบ wordpress เอง

#gzip -d /usr/share/doc/wordpress/examples/setup-mysql.gz
#/usr/share/doc/wordpress/examples/setup-mysql -n wordpress localhost

ขั้นตอนที่ 4 เป็นตัวอย่างการติดตั้งฐานข้อมูลของเซิร์ฟเวอร์โดเมนอื่นๆ ของเราที่ต้องการ ขั้นตอนนี้สำคัญเพราะจะมีการใช้ค่อนข้างบ่อย บางครั้งหากต้องการเปิดเวบไซต์ใหม่หรือโดเมนใหม่ที่ต้องการใช้ wordpress

/usr/share/doc/wordpress/examples/setup-mysql -n wordpress_mydomain_org wordpress.mydomain.org
ขั้นตอนที่ 5 เป็นการสั่งรีสตาร์ทเซอร์วิส apache เพื่อโหลดค่าคอนฟิกต่างๆ ที่ได้มีการเปลี่ยนแปลงไว้แล้ว
/etc/init.d/apache2 restart

เป็นอันสิ้นสุดกระบวนการติดตั้ง wordpress บนเซิร์ฟเวอร์ Ubuntu 14.04.1  LTS  โดยให้เราเปิด url ที่ได้ทำการติดตั้งฐานข้อมูลลงไปในที่นี้ตามตัวอย่างมีอยู่ 2 urls คือ http://localhost และ http://wordpress.mydomain.org นั่นเองจากนั้นทำตามขั้นตอนในส่วนของ wizard จนจบ ส่วนเนื้อหาที่ต้องการศึกษาเพิ่มเติมสามารถเรียกดูได้จาก https://help.ubuntu.com/community/WordPress

ผู้เขียนต้องขอขอบคุณ บจก.ไทย พรอสเพอรัส ไอที ผู้นำด้านการให้บริการระบบจีพีเอสติดตามรถยนต์ ด้วยสินค้าคุณภาพ ได้มาตรฐาน มั่นใจว่าใช้งานได้ทนทานและยาวนานกว่า นอกจากนี้ผู้เขียนยังได้เขียนบทความเกี่ยวกับรถยนต์ vip-rent-car.com นำเสนอรถยนต์ที่ผ่านการทดสอบจากนิตยสารต่างๆ หรือสำนักข่าวยานยนต์ รวมถึงเรื่องราวที่ผู้เขียนสรุปขึ้นเอง สามารถเข้าไปติดตามกันได้เป็นประจำทุกๆ เดือน














วันพฤหัสบดีที่ 19 มีนาคม พ.ศ. 2558

wordpress ไม่ยอมอัพเดท Plug-in หรือ Theme ให้แบบนี้ต้องแมนนวลสิครับ

ยินดีต้อนรับสู่เวบบล็อกคนรักโอเพนซอร์ส รวบรวมประสบการณ์จริงจากการใช้งานนำเสนอเป็นข้อมูลอันเป็นประโยชน์ต่อการนำไปศึกษา พัฒนาต่อยอด งานของผู้เขียนนอกจากเปิดเวบใหม่ http://gpsvehicle.weloveshopping.com เพื่อจำหน่ายสินค้าอุปกรณ์จีพีเอสติดตามรถยนต์ ด้วยสินค้ามาตรฐาน ราคาถูก เป็นทางเลือกของการลงทุนที่คุ้มค่า มาวันนี้ก็เช่นเดียวกัน ผู้เขียนกำลังเตรียมขึ้นเวบไซต์ใหม่ด้วยเอนจิ้นของ wordpress ก็ยังติดขัดอยู่เรื่อยๆ ในเรื่องราวต่างๆ

ผู้เขียนเองเพิ่งประสบความสำเร็จกับการ อัพเดท Wordpress อัตโนมัติด้วย vsftp บนเซิร์ฟเวอร์ 14.04.1 LTS ปัญหาหนักใจอีกอันหนึ่งที่พบเจอก็คือ ปลั๊กอินไม่สามารถอัพเดทได้ขึ้นข้อความผิดพลาดดังตัวอย่างผู้เขียนทำการอัพเดท Theme ใหม่ ปรากฎข้อผิดพลาดดังตัวอย่าง
The update process is starting. This process may take a while on some hosts, so please be patient.
Enabling Maintenance mode…

Updating Theme Twenty Twelve (1/1)

Downloading update from https://downloads.wordpress.org/theme/twentytwelve.1.6.zip
Unpacking the update…
An error occurred while updating Twenty Twelve: Could not create directory.
Disabling Maintenance mode…
All updates have been completed.

เอายังไงดี งานนี้ wordpress ไม่ยอมอัพเดท Plug-in หรือ Theme ให้แบบนี้ต้องแมนนวลสิครับ เมื่อกระทำแบบอัตโนมัติไม่ได้ มันก็ต้องลงมือด้วยตัวเองกันละ จากตัวอย่างจะพบลิงค์ที่ดาวน์โหลด Theme งานนี้ก็เข้าไปดาวน์โหลดเองก็ได้

ขั้นตอนที่ 1 ให้เปลี่ยนไดเรคทอรี่ไปยังที่เก็บ Theme หากต้องการอัพเดท Plug-in ก็เปลี่ยนไดเรคทอรี่ไปยังปลั๊กอินแทน

#cd /var/www/wordpress/wp-content/themes

ขั้นตอนที่ 2 ดาวน์โหลด Theme  ที่เราไม่สามารถอัพเดทได้
#wget https://downloads.wordpress.org/theme/twentytwelve.1.6.zip

ขั้นตอนที่ 3 ให้ทำงานสำรองข้อมูล Theme เก่าไว้ก่อนหรือย้ายไปยังโฟลเดอร์อื่น จากนั้นทำการแตกไฟล์ Theme ใหม่ออกมาเป็นอันสิ้นสุดขั้นตอน
#unzip twentytwelve.1.6.zip

จะเห็นได้ว่าวิธีการอัพเดท Theme ใหม่แบบแมนนวลสามารถทำได้โดยไม่ยุ่งยาก แถมประหยัดเวลา ตัดปัญหากวนใจ หรือการเตือนจากเวบไซต์มี Theme หรือ Plug-in ใหม่มาแล้วนะ เมื่อไหร่จะได้ทำการอัพเดทสักที 






วันพุธที่ 18 มีนาคม พ.ศ. 2558

อัพเดท wordpress อัตโนมัติด้วย vsftp บน Ubuntu 14.04.1 LTS

ยินดีต้อนรับสู่เวบบล็อกดีๆ ของคนรักโอเพ่นซอร์ส รวบรวมประสบการณ์จริงของผู้เขียนที่ได้ผ่านการทดลองจริง ได้ผลจริง มาฝากกันเป็นประจำ การติดตั้งและใช้งาน wordpress นั้นเคยได้ยินชื่อมานาน แต่ยังไม่เคยได้ลองจริง ผู้เขียนทดลองติดตั้งสำเร็จมาร่วมเดือนแต่ยังหาวิธีการอัพเดท wordpress อัตโนมัติไม่ได้ พอคลิกไปอัพเดท ระบบจะพาไปสู่หน้าการป้อนรหัสสำหรับ ftp ซึ่งปกติเซอร์วิสนี้จะไม่ค่อยเปิดใช้กันเนื่องจากปัญหาด้านความปลอดภัยของระบบ

เซิร์ฟเวอร์ที่ผู้เขียนใช้งานอยู่เป็นระบบปฏิบัติการลินุกซ์ โอเอสเป็น Ubuntu 14.04.1 LTS นั่นเองการติดตั้งแพ็คเกจสามารถดำเนินการโดยขั้นตอนต่อไปนี้

ขั้นตอนที่ 1  ติดตั้งโปรแกรม vsftpd ก่อน

#apt-get install vsftp

ขั้นตอนที่ 2 กำหนดค่าคอนฟิกของไฟล์ vsftpd.conf ตามตัวอย่างที่ผู้เขียนเพิ่มเติมให้


listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
anon_world_readable_only=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
connect_from_port_20=NO
listen_port=2112

ขั้นตอนที่ 3 สั่งหยุดเซอร์วิสและเปิดเซอร์วิสใหม่ 

 #stop vsftpd
 #start vsftpd

ขั้นตอนที่ 4 แก้ไขไฟล์ wp-config.php โดยเพิ่มข้อความด้านล่างต่อไปนี้เข้าไปยังไฟล์คอนฟิก

if(is_admin()) {
add_filter('filesystem_method', create_function('$a', 'return "direct";' ));
define( 'FS_CHMOD_DIR', 0751 );
}

ขั้นตอนที่ 5 เพิ่มบัญชีรายชื่อผู้ใช้ ftps สำหรับใช้ในการล็อกอินเข้าสู่ระบบ
#adduser ftps --home /var/www/wordpress

ขั้นตอนที่ 6 เพิ่มยูสเซอร์ ftps เข้าไปในกลุ่มของ www-data โดยให้เข้าไปแก้ไขไฟล์ /etc/group เพิ่มข้อความ ftps ในบรรทัดตามตัวอย่าง
www-data:x:33:ftps


ขั้นตอนที่ 7 กำหนดสิทธิ์ให้กับยูส
 #chgrp -R www-data /var/www/wordpress
 #chmod -R g+w /var/www/wordpress

เป็นอันสิ้นสุดกระบวนการติดตั้งอัพเดท wordpress อัตโนมัติด้วย vsftpd บนระบบปฏิบัติการ Ubuntu 14.04.1 LTS  ผู้เขียนยังจะมีเรื่องราวการอัพเดท wordpress อีกเป็นระยะๆ จนกว่าจะสามารถขึ้นไชต์ใหม่ได้สำเร็จ แน่นอนที่สุดหากมีข้อมูลใดดีๆ จะต้องรวบรวมมานำเสนอกันอย่างแน่นอน ต้องขอขอบพระคุณ บจก.ไทย พรอสเพอรัส ไอที ผู้นำด้านการให้บริการ gps ติดตามรถ ด้วยสินค้าคุณภาพ ผ่านการรับรองมาตรฐานชั้นนำมาจากทั่วโลก

วันศุกร์ที่ 13 กุมภาพันธ์ พ.ศ. 2558

เพิ่มประสิทธิภาพการทำงานของ guest Windows 7 บน KVM ด้วยการติดตั้งไดร์เวอร์ Virtio

ยินดีต้อนรับสู่เวบไซต์ s-techthai.com รวบรวมประสพการณ์จริงของผู้เขียน เพื่อจัดเก็บเป็นองค์ความรู้เพื่อเป็นแนวทางในการนำมาใช้งานอีกครั้งหนึ่งหรือเกิดความคิดในการนำไปต่อยอด เป็นประโยชน์กับหลายๆ คนที่ยังมองไม่เข้าใจ ผู้เขียนเคยรัน guest Windows7 ultimate 64 bit  บน KVM สำหรับเซิร์ฟเวอร์ที่ใช้ระบบปฏิบัติ Ubuntu Server 14.04.1

โดยการสร้าง guest อิมเมจได้สำเร็จแต่พบปัญหาก็คือ ฮาร์ดดิสก์ที่ใช้มองเห็นเป็นแบบ IDE ส่วนการ์ดแลนเองก็เป็นแบบรุ่น RTL8139 ความเร็ว 100 Mbps ซึ่งพอจับคู่กับระบบปฏิบัติการ Windows 7 Ultimate 64 bit ด้วยแล้วการทำงานค่อนข้างช้ามาก การติดตั้งไดร์เวอร์ Virtio จะเป็นการช่วยเพิ่มประสิทธิภาพการทำงานของฮาร์ดแวร์ได้ดีขึ้น นอกจากนี้ยังสามารถใช้งานฮาร์ดแวร์โดยตรงผ่าน scsi pass through ได้ด้วย

ก่อนอื่นไปรู้จัก "full virtualization" หมายถึงจุดเด่นในการรัน OS เสมือนได้หลายแบบ แต่อย่างไรก็ตามมันจะช้า เพราะ hypervisor ต้องจำลองฮาร์ดแวร์จริงทำให้เกิดความยุ่งยากและไม่มีประสิทธิภาพ ส่วน "virtio" คือ virtualization standard เป็นการทำให้การ์ดเน็ตเวิร์คและดิสก์ไดร์เวอร์ทำงานในสภาวะเวอร์ชวลและทำงานร่วมกับ hypervisorได้ ซึ่งจะทำให้ guest ได้รับประสิทธิภาพเน็ตเวิร์คและการทำงานของดิสก์สูงขี้น ทั้งยังเป็นการเพิ่มสมรรถนะของ paravirtualization ด้วย

เมื่อผู้เขียนได้ข้อมูลการเพิ่มประสิทธิภาพโดยการติดตั้งไดร์ฟเวอร์ virtio ได้นั้นก็รีบทำการค้นคว้าหาข้อมูลการติดตั้งไดร์ฟเวอร์ virtio ลองใช้คีย์เวิร์ดภาษาไทยในการค้นหาก็ยังไม่มีใครแนะนำ เจอภาษาอังกฤษมาจากต้นฉบับก็อธิบายค่อนข้างสั้นและกระชับทำให้การเริ่มต้นทำได้ยากมาก  http://www.linux-kvm.org/page/Boot_from_virtio_block_device  แต่ก็พอจับประเด็นเป็นไกด์ไลน์ได้ว่า หากต้องการลงไดร์ฟเวอร์ virtio บนระบบปฏิบัติการ Windows XP ที่รัน guest อยู่แล้วให้ดำเนินการตามขั้นตอนต่อไปนี้
  • บนเครื่อง guest ให้ดาวน์โหลดวินโดร์ไดร์เวอร์ http://www.linux-kvm.org/page/WindowsGuestDrivers/Download_Drivers
  • ให้หยุดการทำงานของ guest และให้สร้างอิมเมจเพิ่มเข้าไปเป็นดิสก์ที่ 2 ของ guest
  • เริ่มการทำงาน guest ใหม่ เครื่องจะตรวจสอบไดร์เวอร์และทำการติดตั้งไดร์เวอร์ virtio
  • รีสตาร์ทเครื่อง guest ใหม่ ให้ลบดิสก์ที่ 2 ออก และทำการเปลี่ยนแปลงชนิดของดิสก์ก่อนแรกไปเป็น virtio 
จะเห็นว่าคำแนะนำตามเวบไซต์ virtio ค่อนข้างกระชับและแน่นอนที่สุดหากต้องทำจริง ทำได้หรือไม่และต้องทำยังไง เพื่อไม่ให้เป็นการเสียเวลาเราไปเริ่ม "เพิ่มประสิทธิภาพการทำงานของ guest  Windows 7 บน KVM ด้วยการติดตั้งไดร์เวอร์ Virtio" กันเลยดีกว่า ผู้เขียนจะได้แนะนำขั้นตอนต่างๆ เป็นแบบ GUI และทำไปทีละขั้นตอน เพื่อจะได้สามารถปฎิบัติงานได้จริง สำหรับโปรแกรมที่ใช้ก็คือ virtual machine manager นั่นเอง

ขั้นตอนที่ 1 ให้ดาวน์โหลด virtio วินโดร์ไดร์เวอร์ตามลิงค์ที่ผู้เขียนแปะให้ ผู้เขียนโหลดไว้บนเครื่องเซิร์ฟเวอร์ KVM http://alt.fedoraproject.org/pub/alt/virtio-win/latest/images/virtio-win-0.1-100.iso

ขั้นตอนที่ 2 ให้หยุดการทำงานของ guest จากนั้นให้แมป cd-rom ไดร์ฟไปยังไฟล์ virtio อิมเมจ จุดประสงค์สำคัญสำหรับขั้นตอนนี้ก็คือเป็นการนำไฟล์ไดร์ฟเวอร์ virtio ให้ไปปรากฎบน guest ตอนเริ่มการทำงานใหม่ที่ไดร์ฟซีดีรอมนั่นเอง
gps tracker

ขั้นตอนที่ 3 หลังจากนั้นให้ทำการสร้างดิสก์ที่ 2 ขนาด 1GB เป็นชนิด virtio ตามรูปตัวอย่าง โดยดิสก์ที่ 2 ที่สร้างได้จะเป็นตัวทำให้ guest ติดตั้ง virtio ไดร์ฟเวอร์
gps tracking
ขั้นตอนที่ 4 ดิสก์ที่ 2ให้เลือก Disk bus แบบ Virtio ช่อง Serial number ว่างไว้ ส่วนช่อง Storage format เลือกเป็นชนิด raw เมื่อดิสก์ที่ 2 ถูกสร้างสมบูรณ์แล้วจะมองเห็นเป็นดิสก์ 2 ก้อนตามรูป คือ ดิสก์ที่ 1 แบบ IDE ส่วนดิสก์ที่ 2 เป็นแบบ VIRTIO
gps tracker
ขั้นตอนที่ 5 จากนั้นให้ทำงานเริ่มต้นการทำงานของ guest ใหม่ ล็อกอินเข้าไปยังเครื่อง guest และเลือกไปที่ Device Manager เราจะสังเกตเห็นฮาร์ดแวร์ใหม่ PCI Device เพิ่มขึ้นมาแล้ว แต่ยังทำงานได้ไม่ถูกต้องหรือยังขาดไดร์เวอร์นั่นเอง
gps tracking

 ขั้นตอนที่ 6 คลิกขวาและเลือก Update Driver Software
gps tracker
ขั้นตอนที่ 7 เลือกไปที่ Browse my computer for driver software Locate and install driver software manually
gps tracker
ขั้นตอนที่ 8 เลือกไปที่ ไดร์ฟซีดีรอม WIN7/AMD64 กดเลือก OK
gps tracking


ขั้นตอนที่ 9 เข้าสู่การติดตั้งไดร์ฟเวอร์ virtio ระบบจะถามว่าคณต้องการติดตั้งดีไวซ์ซอฟต์แวร์ไหม ให้คลิกไปที่ Install เริ่มสบายใจได้แล้ว เราผ่านขั้นตอนต่างๆ ที่สำคัญๆ มาหมดแล้ว เหลืออีกไม่กี่อึดใจ การติดตั้งซอฟต์แวร์ก็จะสมบูรณ์
gps tracking

ขั้นตอนที่ 10  ระหว่างนี้รอสักครู่เมื่อติดตั้งซอฟต์แวร์ VirtIO Balloon Driver สมบูรณ์ ให้กด Close
gps tracker

ขั้นตอนที่ 11 กลับมาสู่หน้าหลัก Device Manager เป็นอันจบกระบวนการติดตั้งไดร์ฟเวอร์ Virtio จากนั้นให้ทำการชัตดาวน์เครื่อง


ขั้นตอนที่ 12 ให้กลับไปลบดิสก์ที่ 2 ออก และเปลี่ยนแปลงการตั้งค่าดิสก์ที่ 1 แบบ IDE ไปเป็นแบบ VIRTIO จากนั้นก็เปิดเครื่อง guest ใหม่เป็นอันจบขั้นตอน

จะเห็นได้ว่าการติดตั้งไดร์เวอร์ ดิสก์แบบ Virtio บน guest วินโดร์สามารถทำได้โดยไม่ยาก สำหรับการติดตั้งไดร์เวอร์การ์ดเน็ตเวิร์คเองก็มีวิธีการแบบเดียวกัน แค่นี้เราก็จะเห็นสมรรถนะของเวอร์ชวล paravirtualization ที่สามารถทำงานได้เต็มประสิทธิภาพ ใครที่ยังไม่เคยลองผู้เขียนแนะนำว่าต้องเปลี่ยนจาก IDE ไปเป็น VIRTIO เท่านั้น

ผู้เขียนต้องขอขอบพระคุณ บจก.ไทย พรอสเพอรัส ไอที ผู้นำด้านการให้บริการระบบซอฟต์แวร์ติดตามรถยนต์ ด้วยอุปกรณ์มาตรฐาน ราคาประหยัด นอกจากนี้ผู้เขียนยังเคยเขียนบทความที่ทำเองได้ เป็นการประยุกต์ใช้เวลาว่างให้เป็นประโยชน์ สามารถติดตามบทความได้ตามลิงค์ครับ  เมื่อโน็ตบุ๊คเครื่องเก่ง จอแตก SAMSUNG NP350V4X


วันจันทร์ที่ 2 กุมภาพันธ์ พ.ศ. 2558

เพิ่มขนาด Windows Guest อิมเมจบนเครื่อง Ubuntu Server KVM

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

KVM ย่อมาจาก Kernel Virtual Machine เป็นการสร้างเครื่องเสมือนเครื่องจริง เพื่อให้สามารถใช้งานฮาร์ดแวร์ได้อย่างเต็มประสิทธิภาพ และมีความสะดวกในการบริหารจัดการทรัพยากร เช่น ซึพียู ฮาร์ดดิสก์ และเมมโมรี เป็นต้น

ปัญหาที่ผู้เขียนจำเป็นต้องเพิ่มขนาด Windows Guest อิมเมจบนเครื่อง Ubuntu Server ที่รัน KVM ก็คือผู้เขียนรันอิมเมจ Windows 7 ขนาดความจุ 80GB เพิ่มเป็น 128GB เพื่อจัดเก็บข้อมูลหรือรองรับการทำงานที่ต้องใช้พื้นที่เพิ่มมากขึ้น เพื่อไม่ให้เป็นการเสียเวลาเราไปเริ่มกันเลยดีกว่า

ขั้นตอนที่ 1 ติดตั้งโปรแกรม virt-resize เพื่อใช้จัดการเวอร์ชวลอิมเมจ

apt-get install libguestfs-tools

 ขั้นตอนที่ 2 ให้ทำการ shutdown เวอร์ชวลอิมเมจที่ต้องการเพิ่มขนาดดิสก์ซะก่อน
virsh shutdown win7-ultimate-test

ขั้นตอนที่ 3 ตรวจสอบดูว่าเวอร์ชวลอิมเมจที่ใช้ มีการจัดการฮาร์ดดิสก์ไว้แบบไหน มีพาร์ติชั้นไหนบ้าง

virt-filesystems --long --parts --blkdevs -h -a vm_window7_ultimate_test

gps tracking

ขั้นตอนที่ 4 จากการตรวจสอบพบว่ามีฮาร์ดดิสก์ พาร์ติชั่น sda2 มีขนาด 80G เราต้องการขยายเพิ่มขึ้นไปเป็น 128G ขั้นตอนนี้ให้สร้างเวอร์ชวลอิมเมจใหม่ขนาด 128G
truncate -s 128G /mnt/3tb/home/outdisk/outdisk

gps tracking

ขั้นตอนที่ 5 เป็นขั้นตอนที่สำคัญคือการขยายเวอร์ชวลอิมเมจ  
virt-resize --expand /dev/sda2 /mnt/3tb/home/vm/vm_window7_ultimate_test  /mnt/3tb/home/outdisk/outdisk

gps tracking

เป็นอันสิ้นสุดกระบวนการเพิ่มขนาด Windows Guest อิมเมจบนเครื่อง Ubuntu Server KVM ข้อควรระวังก็คือเราต้องอย่าลืมสำรองเวอร์ชวลอิมเมจเดิมไว้ เพราะหากไม่สามารถเปิดเวอร์ชวลอิมเมจใหม่ได้ของเก่าก็ต้องไม่เสีย


ผู้เขียนต้องขอขอบคุณ บจก.ไทย พรอสเพอรัส ไอที ผู้นำด้านการให้บริการเช่ารถตู้ VIP รถเช่าผู้บริหาร มาตรฐานความปลอดภัยสูง พร้อมกันนี้หากต้องการท่องเที่ยวภายในประเทศอย่าลืมไปเยี่ยมชม ลำปาง เพชรบูรณ์ และน่าน ในหลงรักประเทศไทย ห้ามพลาดเมื่อฝันผลิบาน ลำปาง เพชรบูรณ์ และน่าน http://www.vntravelsupport.com/2014/12/blog-post.html