ก่อนจะตั้งค่า Microsoft Outlook 2016 ให้สามารถใช้งานกับ Google Apps/Gmail Account ได้ต้องดำเนินการตามนี้ก่อน (เพราะ Microsft Outlook 2016 ยังไม่รองรับการยืนยันตัวตนด้วย OAuth 2.0 ซึ่งมีความปลอดภัย)
แบ่งเป็น 2 กรณีครับ



ก่อนจะตั้งค่า Microsoft Outlook 2016 ให้สามารถใช้งานกับ Google Apps/Gmail Account ได้ต้องดำเนินการตามนี้ก่อน (เพราะ Microsft Outlook 2016 ยังไม่รองรับการยืนยันตัวตนด้วย OAuth 2.0 ซึ่งมีความปลอดภัย)
แบ่งเป็น 2 กรณีครับ
ในบทความนี้ จะแสดงวิธีการใช้ Juju เพื่อติดตั้ง WordPress พร้อมแสดงวิธีการเฝ้าระวังด้วย Nagios และ การ Scale Out
จะง่ายไปไหน?
Juju [1] เป็นเครื่องมือในการการออกแบบ Service Oriented Architecture และ Application Oriented Deployment [2] ทำให้การออกแบบระบบที่ซับซ้อนและการ Scale Out ทำได้ง่ายขึ้น สามารถทำงานได้ตั้งแต่ในเครื่องคอมพิวเตอร์เครื่องเดียว ไปจนถึงการทำงานบน Private Cloud และ Public Cloud
ตัวอย่างเช่น หากต้องการระบบจัดการ Big Data ด้วย Hadoop ซึ่งประกอบด้วย Server หลายเครื่อง (Link: การติดตั้ง Hadoop อย่างง่าย) เดิมจะต้องใช้เวลาอ่านคู่มือ ทำลองติดตั้ง เมื่อได้ระบบขึ้นมาแล้ว ก็จะยังไม่สามารถใช้งานได้จริงทันที อย่างเช่น ต้องการใช้ Hadoop ในการทำเรื่อง Realtime Syslog Analytics [3] ประกอบด้วย Server จำนวนมาก ดังภาพ
วิธีการที่ทำให้ได้ระบบนี้มา ก็เพียงแค่ บอก Juju ว่าต้องการระบบอะไร แล้วสั่ง Deploy แล้วก็รอ
หลังจากนั้นก็ทำ Port Forward ด้วยคำสั่ง [4]
sudo iptables -A PREROUTING -t nat -i ens160 -p tcp –dport 9000 -j DNAT –to 10.107.107.xxx:9000
ก็จะสามารถใช้งานได้แล้ว
Reference
[2] https://jujucharms.com/docs/stable/about-juju
[3] https://jujucharms.com/realtime-syslog-analytics/
[4] http://opensource.cc.psu.ac.th/Note_on_port_forwarding_to_LXD_container
ผมมี server สำหรับห้องบริการคอมพิวเตอร์ ที่ทำหน้าที่จ่าย dhcp IP และ cloning Windows และใช้ pGina for Windows ในการ Login ก่อนเข้าใช้เครื่อง
เริ่มแรก server ก็มีการ์ดแลนเพียง 1 ใบ สำหรับห้องบริการคอมพิวเตอร์ห้องที่ 1 (eth0) ต่อมามีความต้องการให้ห้องบริการคอมพิวเตอร์ห้องที่ 2 ซึ่งจะเป็นอีก network ใช้ server ตัวเดียวกันนี้ด้วย จึงเพิ่มการ์ดแลนอีก 1 ใบ (eth1) ทำให้ตอนนี้มี eth0 และ eth1
ปัญหาคือ เมื่อ Windows ในห้องคอมฯ ห้องที่ 2 ตั้งค่า pGina RADIUS plugin ชี้ไปยัง IP ของ eth0 (192.168.99.20) ก็ทำงานไม่ได้ แต่ถ้าตั้งค่าชี้ไปยัง IP ของ eth1 (192.168.99.251) อย่างนี้ใช้งานได้ หรือใช้คำสั่ง ping 192.168.99.20 อย่างนี้ก็ไม่ได้ เช่นกัน
จึงค้นหาคำตอบ google search อยู่หลายวัน มีบทความที่ให้คำตอบใกล้เคียงที่สุด แต่ผมก็ต้องมาแต่ง config ใหม่ จนสำเร็จ โดยหลักใหญ่ ๆ คือ เครื่อง server ที่มีการ์ดแลน 2 การ์ดนี้จะเรียกว่า multi-homed server จำเป็นจะต้องตั้งค่าเพิ่มโดยใช้ iproute2 ซึ่งมีให้แล้วบน ubuntu server ที่ผมทดสอบนี้คือ ubuntu server 16.04 ครับ คือ ปรกติแล้วเครื่อง 1 เครื่อง จะมี default gateway เพียง 1 เท่านั้น เราจะใช้ iproute2 เพื่อแยกให้มี gateway สำหรับ IP ของ eth0 และ eth1 เพิ่มขึ้น
เรามาดูตัวอย่างกันครับ
เครื่องที่ทดสอบ มี 2 subnets (อันนี้ที่ต้องใช้ /25 เพราะผมไม่มี net class C ถึง 2 net จึงไปขอความช่วยเหลือทีมเครือข่ายให้ช่วยแบ่งครึ่ง net class C ให้ครับ)
1. net 192.168.99.0/25
IP 192.168.99.1 – 192.168.99.126 broadcast 192.168.99.127 gateway 192.168.99.1
2. net 192.168.99.128/25
IP 192.168.99.129 – 192.168.99.254 broadcast 192.168.99.255 gateway 192.168.99.129
1. ตรวจสอบ network interfaces ได้ผลลัพธ์ดังนี้
root@ubuntu:~# ifconfig eth0 Link encap:Ethernet HWaddr 00:4d:60:1e:fb:ab inet addr:192.168.99.20 Bcast:192.168.99.127 Mask:255.255.255.128 eth1 Link encap:Ethernet HWaddr 00:04:a5:fd:a4:9c inet addr:192.168.99.251 Bcast:192.168.99.255 Mask:255.255.255.128 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0
2. เพิ่ม 2 บรรทัดนี้ต่อท้ายในไฟล์ /etc/iproute2/rt_tables (ผมตั้งชื่อ routing table 1 ว่า rt1 และ routing table 2 ว่า rt2)
1 rt1 2 rt2
ผลลัพธ์ได้ดังนี้
root@ubuntu:~# cat /etc/iproute2/rt_tables # # reserved values # 255 local 254 main 253 default 0 unspec # # local # #1 inr.ruhep 1 rt1 2 rt2
3. เพิ่ม 4 บรรทัดนี้สำหรับ eth0
post-up ip route add 192.168.99.0/25 dev eth0 src 192.168.99.20 table rt1 post-up ip route add default via 192.168.99.1 dev eth0 table rt1 post-up ip rule add from 192.168.99.20/32 table rt1 post-up ip rule add to 192.168.99.20/32 table rt1
4. และเพิ่ม 4 บรรทัดนี้สำหรับ eth1 post-up ip route add 192.168.99.128/25 dev eth1 src 192.168.99.251 table rt2 post-up ip route add default via 192.168.99.129 dev eth1 table rt2 post-up ip rule add from 192.168.99.251/32 table rt2 post-up ip rule add to 192.168.99.251/32 table rt2
จากข้อ 3 และ ข้อ 4 ผลลัพธ์ได้ดังนี้
root@ubuntu:~# cat /etc/network/interfaces auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.99.20 netmask 255.255.255.128 gateway 192.168.99.1 dns-nameservers 192.100.77.10 192.100.77.11 post-up ip route add 192.168.99.0/25 dev eth0 src 192.168.99.20 table rt1 post-up ip route add default via 192.168.99.1 dev eth0 table rt1 post-up ip rule add from 192.168.99.20/32 table rt1 post-up ip rule add to 192.168.99.20/32 table rt1 auto eth1 iface eth1 inet static address 192.168.99.251 netmask 255.255.255.128 post-up ip route add 192.168.99.128/25 dev eth1 src 192.168.99.251 table rt2 post-up ip route add default via 192.168.99.129 dev eth1 table rt2 post-up ip rule add from 192.168.99.251/32 table rt2 post-up ip rule add to 192.168.99.251/32 table rt2
5. ทำการ restart server
แค่นี้ครับ
References:
1. Two Default Gateways on One System
(URL https://www.thomas-krenn.com/en/wiki/Two_Default_Gateways_on_One_System)
2. Linux iproute2 multiple default gateways
(URL https://www.iodigitalsec.com/2014/10/05/linux-iproute2-multiple-default-gateways/)
3. Number of IP Addresses and Multihoming
(URL http://www.tcpipguide.com/free/t_NumberofIPAddressesandMultihoming.htm)
การ Connect Navicat
Download : https://drive.google.com/file/d/0B45mg2kqF_HOSTA0UGh4SkVIZ00/view
1.โยน File ชื่อว่า ntunnel_mysql เข้าไปใน Server ที่ /home/wwwroot
2. run file ที่เว็บบราว์เซอร์ ด้วย : 192.168.xxx.xxx/ntunnel_mysql หรือ 192.168.xxx.xxx/ntunnel_mysql.php
3.เข้าไปที่โปรแกรม Navicat
– General
– Connection Name = ชื่อ db
– Host Name / IP Address = ปล่อยว่าง
– Port = 3306
– User Name = User ที่เรา Add ใน phpmyadmin
– Passwd = Passwd ที่เรา Add ใน phpmyadmin
– HTTP
– ติ๊กเลือก Use HTTP Tunnel
– Tunnel URL : http://192.168.xxx.xxx/ntunnel_mysql หรือ http://192.168.xxx.xxx/ntunnel_mysql.php
4. Test Connect
5. OK
หมายเหตุ: -ขอบคุณ คุณอาฮาหมัด เจ๊ะดือราแม จาก สถาบันวัฒนธรรมศึกษากัลยาณิวัฒนา
plugin ชื่อ member access (member-access.1.1.6.zip) ทำให้ในขณะนี้ไม่สามารถเพิ่มบทความที่ให้เฉพาะสมาชิกอ่านได้เท่านั้น แต่ต้องเปิดเป็น public ได้อย่างเดียว มิฉะนั้นในหน้าแรก (Home) จะไม่เป็นหน้าว่าง ๆ ต้อง login จึงเห็นบทความทุกเรื่องได้
“อยากให้บริการ Application กลางสักอันเวลาอัพเดตแล้วจะได้ของใหม่พร้อมกันไม่ต้องคอยไล่ลงทีละเครื่อง”
Remote Desktop Service (Remote Apps) คือ Application ที่รันภายใต้ Remote Desktop แต่ไม่ต้อง Remote เข้าไป แต่เพียงแค่รัน Icon ที่โหลดมากจากหน้า Web ใส่ User Password เท่านั้น ซึ่งสะดวกกว่าการไล่ติดตั้งโปรแกรมทุกเครื่อง แถมอัพเดตทีเดียวได้ Version ใหม่เหมือนกันทุกคน
* บทความนี้เป็นบทความปิด เพราะเราไม่ได้มีลิขสิทธิ์โดยตรงที่จะใช้งานได้ แต่เป็นการนำไปใช้งานเพื่อการศึกษาเท่านั้น ถ้าจะใช้งานจริงต้องซื้อ Remote Desktop Service License เองครับ (มหาลัยไม่เคยซื้อ Windows License นะครับ ที่ใช้กันอยู่ Microsoft แถมมากับ Windows Desktop และ Office ซึ่งให้มาจำนวนน้อยมาก โดยตั้งแต่ Windows Server 2016 จะไม่มีแล้วครับ) ถ้าจะใช้งาน(เพื่อการศึกษา)สามารถติดต่อสอบถามได้ที่ 2082 หรือ email : support@cc.psu.ac.th
จบแล้วครับ หวังว่าเป็นแนวทางใหม่ ๆ อีกแนวทางหนึ่งครับ (ตอนนี้อาจจะยังนึกไม่ออกว่าจะเอามาใช้อย่างไร แต่สำหรับคนที่ซื้อ License อะไรสักอย่างแล้วใช้งานได้แค่เครื่องเดียวจะเข้าใจดีครับว่ามีประโยชน์อย่างไร)
สิ่งที่ต้องมี
มีครบแล้วก็เริ่มกันเลย
อ้างอิง
https://msdn.microsoft.com/en-us/library/hh231721(v=sql.130).aspx
ปัจจุบันการสร้างแบบฟอร์มการรับลงทะเบียนออนไลน์สามารถทำได้ง่ายๆโดยใช้ Google Form โดยวันนี้มีโจทย์ว่า ต้องการรับลงทะเบียนผู้ที่จะร่วมเดินทาง กำหนดว่า ต้องการเดินทางกับรถบัสหมายเลขใด (มี 3 คัน) และต้องการแสดงผลทันทีว่า แต่ละคันมีจำนวนคนเท่าไหร่แล้ว และ ใครบ้างที่เดินทางไปในรถบัสคันนั้น
วิธีการคือ
เพื่อให้แสดงผลว่า รถบัสหมายเลขใด มีจำนวนคนเท่าไหร่
โดยที่ tq เป็น Query เขียนว่า select L, count(B) group by L label count(B) ‘จำนวน’
คือการแสดงคอลัมน์ L และ นับจำนวนโดยการ count โดยจัดกลุ่มตามคอลัมน์ L
นอกจากนั้นยัง label คอลัมน์ count(B) เป็นคำว่า “จำนวน”
และ key=XXXXXXXXXXX นั้น ให้เอาค่าจาก