**บล็อกนี้ยาวเลยทีเดียว เอาเป็นว่าตัดแบ่งออกเป็น 4 ตอนหล่ะกันนะ จะพยายามเขียนให้จบเร็วที่สุด ^_^
I. เกริ่นหน่อย
II. การติดตั้ง(รวมถึงการย้ายข้อมูลจากระบบเดิม)
III. การปรับแต่งให้ระบบ (Server, MySQL) ให้ได้ประสิทธิภาพที่ดีขึ้น
IV. การติดตั้งระบบอื่นเพื่อการสนับสนุนระบบการทำงานของหน่วยบริการ
ที่มาและเหตุผล ….
ดูเป็นทางการกันเลยทีเดียว แต่ความเป็นจริง ๆ แล้วมันก็มาจากเหตุผลบ้าน ๆ นั่นแหล่ะว่าเพราะมันมีปัญหา แล้วปัญหาก็คือ
- ข้อมูลการให้บริการในแต่ละวันมีปริมาณเยอะขึ้น รวมกับของเก่าที่เป็นข้อมูลที่เคยให้บริการมามันก็เยอะขึ้นเรื่อย ๆ พออะไร ๆ มันเยอะขึ้น สิ่งที่ต้องทำก็มากขึ้น (คน + เครื่อง) เพราะงั้นสเกลในระดับเดิม ๆ ที่เคยทำมามันก็เริ่มรองรับไม่ได้แล้ว เป็นเรื่องธรรมดา
- มีเกณฑ์ระบบเทคโนโลยีสารสนเทศของ รพสต.ติดดาว อันนี้คือปัญหาใช่ไหม 555 ถ้าเราดูเกณฑ์แล้วมันก็เป็นเรื่องที่ควรทำนั่นแหล่ะ
เครื่องแม่ข่าย (Server) ก็ควรทำหน้าที่ให้บริการในระบบเครือข่ายแก่เครื่องลูกข่าย (Client) ถึงแม้เดิมทีทรัพยากรในหน่วยบริการจะมีจำกัด จนต้องทำเครื่องเป็น Server ในโหมด Developer มานานนมละจนหลายคนเข้าเข้าใจว่าเครื่องที่ลงโปรแกรม JHCIS Server คือ Server จริง ๆ ในรูปแบบ Client – Server - พฤติกรรมใช้งาน พบว่าระบบปฏิบัติการ (Windows) เจ๊ง ติดไวรัส ไฟล์ถูกเข้ารหัส โปรแกรมติดหนอน ระบบทำงานช้า ส่วนหนึ่งมาจากพฤติกรรมใช้งานของผู้ใช้งานที่ไม่ระมัดระวังเอง ยิ่งเครื่องถูกใช้จากมากหน้าหลายตา ความเสี่ยงก็ยิ่งเพิ่มขึ้นมากเท่านั้น คุณแสกนไวรัสก่อนเปิดแฟลชไดร์ฟรึยัง ?
- ข้อจำกัดของระบบปฏิบัติการที่ใช้งานอยู่ เชื่อแน่ว่าเกิน 90 % เครื่องทำงานบนระบบปฏิบัติการวินโดวส์ (ตอนนี้เวอร์ชั่น 10 อัพเดทกันรึยัง) สำหรับวินโดวส์เองมีมีรุ่นที่ใช้งานเป็น Server แต่ด้วยราคาและความยากในการสรรหา ดูราคาในท้องตลาดกัน
ส่วนใหญ่ที่ใช้งานก็เป็นกลุ่ม Desktop Edition มันก็เหมาะเป็น Desktop นั่นแหล่ะ เราขืนใจระบบมากไป - อยากได้ Server ที่เสถียร (เหงาใช่ไหมจะไปหา ♪♪ จะไปเช็ดน้ำตาให้ตอนนี้
เคยเป็นเพื่อนมาอย่างไร ก็ยังเป็นทุกนาที ♪♪ ตึ่งโป๊ะ) ส่วนใหญ่แล้วระบบปฏิบัติการที่ใช้ในกลุ่ม Server ก็จะเป็น *nix (Linux UNIX บลาาาา) สรุปคือมันดี อึด ถึก ทน เหมาะ สำหรับการประมวลผลและให้บริการในเครือข่าย #ทำไมมันดีจัง แต่… มันก็ต้องแลกมาด้วยความยากและระยะเวลาการเรียนรู้ ระบบปฏิบัติการนี้ก็เลยจำกัดอยู่ในกลุ่มเล็ก ๆ กลุ่มที่ทำงานด้านคอมพิวเตอร์ แต่…ทุกอย่างก็ง่ายขึ้นเมื่อมี Ubuntu
Ubunu คืออะไร
อูบุนตู (Ubuntu) เป็นระบบปฏิบัติการคอมพิวเตอร์ที่เป็นระบบปฏิบัติการแบบเปิดซึ่งมีพื้นฐานบนลินุกซ์ดิสทริบิวชันที่พัฒนาต่อมาจากเดเบียน การพัฒนาสนับสนุนโดยบริษัท Canonical Ltd ซึ่งเป็นบริษัทของนายมาร์ก ชัทเทิลเวิร์ธ ชื่อของดิสทริบิวชันนั้นมาจากคำในภาษาซูลู และภาษาโคซา (ภาษาในแอฟริกาใต้) ว่า Ubuntu ซึ่งมีความหมายในภาษาอังกฤษคือ “humanity towards others”
Ubuntu เป็น Linux ที่ถูกหลอมลวมจากความเสถียรและความง่ายในการใช้งานเข้าด้วยกัน (เรากำลังพูดถึง Desktop Edition นะ ส่วน Server Edition ก็ละไว้สำหรับกลุ่มแอดมินเค้าเหอะ ส่วนเรื่องการปรับแต่งประสิทธิภาพบางส่วนเพื่อทำให้เครื่องที่ใช้ Ubuntu เหมาะสำหรับ Server อยู่ท้าย ๆ นะ)
การติดตั้ง Ubuntu GNOME 17.04
- หลังจากดาวน์โหลดไฟล์ติดตั้งมาแล้วก็ทำการสร้างตัวติดตั้งจาก USB ได้เลย ในที่นี้จะใช้โปรแกรมชื่อ Rufus (ปัจจุบัน Version 2.17) ขั้นตอนก็ไม่ซับซ้อนเลือกไฟล์ ubuntu-gnome-17.04-desktop-amd64.iso แล้วก็กดปุ่ม start เลย (ภาพ screen shot จากเว็บอ่ะนะ)
- เรียบร้อยจากขั้นตอนที่ 1 ก็เริ่มติดตั้งกัน หน้าจอแรกจะขึ้นมาให้เราเลือก
– Try Ubuntu GNOME กรณีอยากเล่นเนตชิล ๆ ไปด้วยก็เลือกตัวนี้ได้แล้วค่อยกด Install ต่อได้เหมือนกัน
– Install Ubuntu GNOME
- ขึ้นหน้าจอเตรียมการติดตั้ง กรณีเนตแรงและต้องการลดระยะเวลาการติดตั้งก็ติ๊ก Download ตามภาพ
- พอกด Continue จะขึ้นหน้าจอเตรียมฮาร์ดดิสก์สำหรับติดตั้ง มีตัวเลือก
– Erase disk and install Ubuntu GNOME ตัวเลือกนี้ระบบติดตั้งจะเตรียมดิสก์แบบฉันคิดให้นะ นายไม่ต้องทำไร
– Something else ส่วนตัวนี้ก็ตรงข้ามกับข้างบน นายทำเองอยากได้แบบไหนก็จัดเลย
เราก็เลือกแบบที่ 2 สิ 555 คือต้องบอกเบื้องต้นก่อนว่าเครื่องมีฮาร์ดดิสก์ 2 ลูก
– ลูกแรก ขนาด 10 GB ไว้ติดตั้งตัว OS (Ubuntu)
– ลูกที่สอง ขนาด 1 GB ไว้เก็บไฟล์สำรองจากระบบสำรอง (เดี๋ยวจะกล่าวถึงในตอนที่ 4 แต่ก็เตรียมไว้เบื้องต้นตามนี้)
- เริ่มทำการแบ่งพาร์ติชั่น ปกติเราจะแบ่งออกเป็น
– /boot ขนาด 1 GB
– swap ขนาด 1 GB
-/ (root)
มีเพิ่มคือเราแยกพาร์ติชั่น /var และสร้างพาร์ติชั่น /data ในฮาร์ดดิสก์อีกลูก ส่วนใครสงสัยว่าจะใช้ขนาดเท่าไหร่ในแต่ละพาร์ติชั่นก็ไปอ่านได้ตามนี้
ส่วนตัวเลือกตรงคอมโบบ็อกซ์ Device for boot loader installation ก็ให้เลือกฮาร์ดดิสก์ตัวแรกไป
- กด Install Now จะขึ้นหน้าจอให้เลือก Location เราคนไทยก็เลือก Bangkok ไป
- กด Continue ก็เลือก Keyboard Layout ซึ่งจะสัมพันธ์กับข้อที่แล้ว ฉลาดเน๊อะ
- กด Continue จะให้ใส่ข้อมูลชื่อผู้เข้าใช้งาน รหัสผ่านและชื่อเครื่อง ส่วนจะใส่อะไรไปก็จำให้ดี ๆ ส่วนชื่อเครื่องเองก็มีผลกับเรื่องของ Host name ในระบบเครือข่ายด้วย
- พอกด Continue ไปก็จะเริ่มการติดตั้งตัว Ubuntu GNOME ง่ายไหม ^_^ ก็รอ สำหรับใครที่เลือก Try Ubuntu GNOME ในข้อแรกก็สามารถเล่นอินเตอร์เนตชิล ๆ รอได้เลย
- เมื่อทำการติดตั้งเสร็จก็จะแสดงหน้าจอแบบนี้ ยินดีด้วยทุกอย่างกำลังไปได้สวย
กด Restart ได้เลย
พร้อม ๆ กับที่ระบบให้เราถอด USB ตัวติดตั้งออกและกด ENTER ต่อเพื่อเริ่มต้นระบบใหม่ - ช่วงระหว่างการรอการบูตมีประเด็นที่ทำไมต้องเลือก Ubuntu GNOME 17.04
– แรกเลยคือต้องการความสด ณ ปัจจุบันเวอร์ชั่นนี้คือเวอร์ชั่นล่าสุดที่ Ubuntu สร้างออกมาสิ่งที่จะได้คือเคอร์เนล 4.10 แหล่ะ อันนี้ใหม่ชัวร์รวมทั้งแพคเกจ/โปรแกรม ต่าง ๆ (ส่วนเราเองก็ใช้ 17.10 แบบ Daily build อยู่เลย)
– เวอร์ชั่นนี้ไม่ใช่ Long term support (LTS) releases are for 5 years. นั่นหมายความว่าเราจะได้รับการซัพพอร์ตแค่ 9 เดือน สำหรับรุ่น Regular ซึ่งก็คือหมดในเดือนมกราคม 2018 นั่นเอง สำหรับใครที่ต้องการการซัพพอร์ตยาว ๆ ก็สามารถเลือกเวอร์ชั่น 16.04 ซึ่งตอนนี้ปรับปรุงเป็น 16.04.3 แล้ว ตัวนี้เป็น LTS
– ทำไมไม่ใช้ Server Edition ถ้าจะทำ Server ประเด็นนี้ก้ำกึ่งเราอธิบายแบบนี้หล่ะกัน ประเด็นแรก ด้วยความที่ JHCIS ถูกใช้ในหน่วยบริการปฐมภูมิ (รพ.สต.) เป็นส่วนใหญ่ ผู้ที่ใช้งานก็เป็นพยาบาล นักวิชาการสาธารณสุข ทันตาภิบาล พนักงานบันทึกข้อมูล คนงาน ในพื้นที่ห่างไกล ไม่มีหรอกนักคอมพิวเตอร์หรือกลุ่มคนด้านนี้เฉพาะ อาจจะมีบ้างที่เป็น Power User ที่สนใจเรื่องนี้ แต่ความคุ้นชินกับระบบการติดต่อแบบคอมมานไลน์นี่คงยากและลำบากเกินไป (อันนี้ขอระบายหน่อย รพ.สต ในอำเภอเราไกลสุด ~38 กิโลเมตร การสนับสนุนมันทำได้จำกัด จำกัดมาก ๆ T_T) ภาพนี้เป็นวันที่เราออกไปช่วยติดตั้งระบบนี้แหล่ะ ไม่ใช่ รพ.สต.ที่ไกลสุดนะ แต่ไปเส้นทางนี้แหล่ะ หมอกเต็มเลย
ประเด็นที่สอง ถ้าเราอยากให้ผู้ใช้งาน/คนใช้ไม่ต่อต้านมากไป อย่าทำให้มันยากเกินไปสำหรับการเรียนรู้ วันนึงข้างหน้าเราอาจะเห็น รพ.สต.ใช้ LibreOffice แทน Microsoft Office ใช้ Openshot ตัดต่อวิดีโอออกเยี่ยมผู้ป่วย ก็ได้ ตอนนั้นถนนในประเทศเราคงปูด้วยทองคำไปละ
– ถ้าไม่อยากใช้ Server Edition แบบคอมมานด์ไลน์ก็มี Cent OS มี Debian มี Open SUSE บลา ๆ ที่จริงมันมีมากกว่าความชอบนะ ถ้าสังเกตจากความนิยมแล้ว Debian Base จะได้รับความนิยมสูงสุด
- พอเริ่มต้นระบบใหม่อีกครั้งจะขึ้นหน้าจอแบบนี้ก็เริ่มใช้งานได้เลย ชื่อผู้ใช้และรหัสผ่านก็ที่ตั้งไว้จากก่อนหน้านี้
- ถึงขั้นนี้ก็ยังต้องทำเพิ่มนิดหน่อย ถ้าเปรียบเหมือน Windows นี่ก็แค่เพิ่งติดตั้ง OS เสร็จแค่นั้น ยังไม่มีแพคเกจ/โปรแกรมที่เราจำเป็นต้องใช้สำหรับทำเป็น JHCIS Server เลย ซึ่งแพคเกจที่เราจะทำการติดตั้งและจำเป็นต้องใช้มีดังนี้
– MySQL Server ตัวนี้เป็น RDBMS สำหรับเก็บข้อมูลจากโปรแกรม JHCIS
– MySQL Workbench สำหรับติดต่อกับ MySQL Server แบบ GUI
– TeamViewer สำหรับทำ Remote Desktop กรณีที่ต้องขอความช่วยเหลือจากคนใจดี
– แพคเกจอื่น ๆ ที่จำเป็น
โดยเริ่มต้นก็ทำการเปิดโปรแกรม Terminal ขึ้นมา (เลี่ยงไม่ได้นะ ยังไงก็ต้องได้ใช้คอมมานด์ไลน์บ้าง แต่ก็จะพยายามให้น้อยที่สุดหล่ะกัน)
เริ่มคำสั่งแรกเลยคือทำการอัพเดตระบบซะ (sudo ก็คือใช้สิทธิ์ของผู้ดูแลระบบซึ่งก็คือคนติดตั้งนั่นแหล่ะ ก็กรอกรหัสผ่านไปอีกครั้ง)sudo apt update && sudo apt upgrade -y
ติดตั้ง MySQL Server ในที่นี้เราจะใช้เวอร์ชั่น 5.7 (นี่ก็ใหม่ เราอยากได้ของสดอยู่แล้วหนิ ^_^) การติดตั้งเพื่อให้ง่ายเราจะใช้ตัวช่วยนั่นก็คือ
tasksel
sudo apt install tasksel sudo tasksel
จะขึ้นหน้าจอสำหรับเลือกแพคเกจ/โปรแกรม
ให้เลือกเลือกแพคเกจ/โปรแกรม ตามนี้ (เดี๋ยวจะได้ใช้นะครับ จะอธิบายทีหลัง)
– LAMP Server
– Samba File Server
– Ubuntu GNOME Desktop (อันนี้เลือกอยู่ก่อนหน้าแล้ว)
– OpenSSH Server
– Basic Ubuntu Server
การเลือก/ยกเลิก ก็กด Space Bar นะ แล้วก็กด Tab มาที่ <ok> - จะขึ้นหน้าจอการติดตั้งแพคเกจ/โปรแกรมที่เราเลือก
พอถึงขั้นตอนการติดตั้ง MySQL Server ก็ให้ระบุ Password ของผู้ใช้งาน root (คนที่ใหญ่สุดในโปรแกรม MySQL)
แล้วก็ยืนยัน Password เดิม
** ประเด็นเรื่อง Password ของ root นี่ ขอพูดนิดนึงนะ ส่วนจะทำตามหรือไม่ก็คงอีกเรื่อง ผลกระทบมันก็เรื่องความเสี่ยง/ความปลอดภัยของข้อมูลเป็นหลัก โดยปกติในฐานะของผู้ดูแลระบบฐานข้อมูล (Database Administrator) Password ของ root จะต้องเดายาก เข้าถึงได้เฉพาะผู้ดูแล ส่วนโปรแกรมอื่น/ระบบอื่น/ผู้ใช้งานอื่น ก็สร้าง User ให้พร้อมกำหนดสิทธิ์/ระดับการใช้งาน ให้ทีหลัง User root แทบที่จะไม่ถูกนำมาใช้ในระดับอื่นเลยนอกจาก Administrator อย่างเดียว ปกติระบบจริง ๆ ที่เน้นความปลอดภัยก็ทำกันในลักษณะนี้นะ เอาเป็นว่าได้พูดแล้วนะแล้วแต่หล่ะกันระบบใครระบบมัน ^_^ - เมื่อติดตั้งแพคเกจ/โปรแกรม เสร็จเรียบร้อยลองมาตรวจดูว่า MySQL Server ซึ่งเป็นตัวเอกของบทความนี้ถูกติดตั้งไปรึยังและทำงานได้ไหม
sudo systemctl status mysql
กรณีที่ไม่มีอะไรผิดพลาดจะขึ้นหน้าจอนี้ เป็นอันว่าใช้ได้
- ที่นี้ก็ติดตั้งโปรแกรม MySQL Workbench ต่อได้เลย (ควรมีนะถ้าอยากเลี่ยงคอมมานด์ไลน์) โดยการกดที่ Software และค้นหาตามภาพ เจอก็กด Install
เสร็จแล้วก็ลองเปิดเข้าใช้งานหน้าตาคร่าว ก็ตามรูป เป็น MySQL Client อีกตัวหนึ่ง (Official จาก MySQL)
- ทำการติดตั้งแพคเกจอื่น ๆ ที่จำเป็น
sudo apt install pv gdebi
- ทำการติดตั้ง TeamViewer เพื่อใช้สำหรับ Remote Desktop กรณีต้องการความช่วยเหลือ (คาดหวังให้ทำ DDNS หรือ VPN ไว้นี่คงยากหน่อย T_T)
โดยให้ Download โปรแกรมจากเว็บไซต์ ปัจจุบันเวอร์ชั่น v12.0.85001 (deb 32-Bit / 64-Bit Multiarch)
sudo dpkg --add-architecture i386 sudo apt update sudo dpkg -i teamviewer_i386.deb
เรียกใช้งานก็จะขึ้นหน้าจอแบบนี้ (License ก็จะเป็น Non-Commercial มันก็จำกัดแหล่ะ ถ้าอยากใช้ระยะยาวก็ซื้อนะ )
- ทีนี้ก็เหลือการย้ายข้อมูลจากระบบเดิมขึ้นระบบใหม่
ช่วงรอตอนที่ 2/2 ก็ลองติดตั้งกันดูนะครับ ติดปัญหาอะไรก็ลอง ๆ Discus กันได้ หรือมีคำแนะนำอื่น ๆ เพิ่มเติมก็ยินดี ^_^ - ก่อนย้ายข้อมูลจาก JHCIS เครื่องเดิม เรามาดูโครงสร้างฐานข้อมูล jhcisdb กันก่อน จะเห็นว่าฐานข้อมูลประกอบไปด้วย ตาราง (Tables), Stored Procedures, Functions เพราะฉะนั้นขั้นตอนการส่งออก/นำเข้า ก็ต้องให้สิ่งเหล่านี้ออกไปด้วยและนำเข้าให้ครบถ้วน
เมื่อพร้อมก็เริ่มกันเลย Tool ที่ใช้เราจะใช้mysqldump
mysqldump --user=<USER NAME> -p --host=<HOST NAME/IP Address> --port=<PORT> --add-drop-database --add-drop-table --max_allowed_packet=1G --default-character-set=utf8 --skip-lock-tables --routines --events --triggers --single-transaction --databases "jhcisdb" > jhcisdb.sql
ก็ให้ระบุ ค่าที่ถูกต้องแทนตัวแปรในคำสั่ง
<USER NAME> : ถ้าเดิม ๆ ก็จะเป็น root นั่นแหล่ะ
<HOST NAME> : ชื่อเครื่อง JHCIS Server เดิมหรืออาจระบุเป็น IP Address ก็ได้เช่นกัน
<PORT> : เดิม ๆ เป็น 3333 ในกรณีที่ไม่เปลี่ยนแปลงมาก่อน
รันคำสั่งเสร็จก็รอ รอ ^_^ ส่วนพารามิเตอร์ที่ใช้สามารถอ่านเพิ่มเติมได้ที่นี่ - เมื่อได้ไฟล์ส่งออกมาเรียบร้อยแล้ว ก็เริ่มขั้นตอนการจัดการ JHCIS Server เครื่องใหม่ ปกติแล้วเราก็มักจะสร้าง User และจัดการเรื่องสิทธิ์การใช้งาน ก่อน ทั้งนี้ทั้งนั้นจำเป็นต้องรันคำสั่ง เพื่อกำหนดค่าความปลอดภัยเบื้องต้นของ MySQL Server
sudo mysql_secure_installation
ถัดมาก็สร้างฐานข้อมูล (คำสั่ง ของ
mysqldump
ด้านบนจะเพิ่มการสร้างฐานข้อมูลด้วย ถ้ามันไม่มีอยู่นะ แต่เราสร้างเองก็ได้)CREATE SCHEMA `jhcisdb` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
ตามด้วยการกำหนดสิทธิ์การเข้าใช้งานฐานข้อมูล
CREATE USER 'user_name'@'localhost' IDENTIFIED BY 'password'; CREATE USER 'user_name'@'%' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON jhcisdb.* TO 'user_name'@'localhost'; GRANT ALL PRIVILEGES ON jhcisdb.* TO 'user_name'@'%'; FLUSH PRIVILEGES;
แล้วเราก็นำเริ่มเข้าฐานข้อมูล jhcisdb กัน
mysql -u<user_name> -p jhcisdb < jhcisdb.sql
ถ้าไม่มีอะไรผิดพลาดก็ลองเช็ค ตาราง (Tables), Stored Procedures, Functions ดูครบถ้วน JHCIS Server เครื่องใหม่ก็พร้อมใช้งาน
- ถัดมาก็ลองเปิดโปรแกรม JHCIS Client แล้วกำหนดค่าการเชื่อมต่อฐานข้อมูลใหม่ เป็นเครื่องที่เราสร้างใหม่ตะกี้ ถ้าสามารถใช้งานได้
** ปกติพอร์ตมาตรฐานของ MySQL จะเป็นพอร์ต 3306 กรณีเราไม่ได้เปลี่ยนแปลงค่าคอนฟิกใด ๆ
** มีบางเครื่องที่เข้าใช้งานแล้ว JHCIS แจ้งเตือนหน้าจอแบบนี้
ก็ไม่ต้องตกใจไปนะ ให้เช็คเบื้องต้นดังนี้คือ
– ในฐานข้อมูล jhcisdb มีตาราง _tmpicd10% หรือไม่ ถ้ามีก็ไม่มีอะไรให้ตกใจ
– ให้ทำการสร้างตาราง p เปล่า ๆ ขึ้นมาเพื่อแก้บัคก่อน (ตารางนี้ไม่มีผลกับการบันทึกอะไร เพียงแต่ทำให้ Code ไม่หลุดเข้า try-catch เฉย ๆ)
– ให้ทำการ Disable strict mode ใน MySQL Server เพื่อให้ compatible กับ MySQLเวอร์ชั่นเก่า ตามลิงค์นี้
– เบื้องต้นก็ได้รายงาน/สอบถามไปทางอาจารย์สัมฤทธิ์แล้วนะครับ ^_^
การปรับแต่งให้ระบบ (Server, MySQL) ให้ได้ประสิทธิภาพที่ดีขึ้น
เดิม ๆ แล้ว Ubuntu หรือ Linux ดิสโทรอื่น ๆ เองเป็นระบบปฏิบัติการที่ถูกสร้างมาแบบ “out-of-box” หมายความว่ามันเพียงพอสำหรับการใช้งาน แต่ถ้าต้องการรีดประสิทธิภาพให้ได้ออกมาเต็มที่ก็จำเป็นต้องปรับแต่งเพิ่มเติม
ซึ่งผู้ใช้งานก็ต้องยอมรับความเสี่ยงข้อนึงว่ามันมีสิทธิ์ที่จะบูตเครื่องไม่ขึ้นเลยก็ได้ เพราะฉะนั้นก็ทำด้วยความระมัดระวังนะครับ หรือถ้าพอใจประสิทธิภาพที่ใช้งานอยู่ ณ ปัจจุบันก็ข้ามเซคชั่นนี้ไปเลยก็ได้ เตือนละน้าาาา ^_^
Sysctl Tweaks
ไฟล์ sysctl.conf เป็นไฟล์ที่เกี่ยวข้องกับเคอร์เนลโดยตรงฉะนั้น อยากให้กลับไปอ่านย่อหน้าตะกี้อีกรอบนะ เราสามารถแก้ไข้ไฟล์ sysctl.conf ได้ โดยการเปิดด้วย Text Editor ทั่ว ๆ ไป เอาที่ถนัดนั่นแหล่ะ
sudo gedit /etc/sysctl.conf
หน้าตาตอนจะแก้ไข ก็ประมาณนี้
และทำการเพิ่มรายการต่อไปนี้ลงท้ายสุดของไฟล์
### IMPROVE SYSTEM MEMORY MANAGEMENT ### # Increase size of file handles and inode cache fs.file-max = 2097152 # Do less swapping vm.swappiness = 10 vm.dirty_ratio = 50 vm.dirty_background_ratio = 2 ### GENERAL NETWORK SECURITY OPTIONS ### # Number of times SYNACKs for passive TCP connection. net.ipv4.tcp_synack_retries = 2 # Allowed local port range net.ipv4.ip_local_port_range = 2000 65535 # Protect Against TCP Time-Wait net.ipv4.tcp_rfc1337 = 1 # Decrease the time default value for tcp_fin_timeout connection net.ipv4.tcp_fin_timeout = 15 # Decrease the time default value for connections to keep alive net.ipv4.tcp_keepalive_time = 300 net.ipv4.tcp_keepalive_probes = 5 net.ipv4.tcp_keepalive_intvl = 15 ### TUNING NETWORK PERFORMANCE ### # Default Socket Receive Buffer net.core.rmem_default = 31457280 # Maximum Socket Receive Buffer net.core.rmem_max = 12582912 # Default Socket Send Buffer net.core.wmem_default = 31457280 # Maximum Socket Send Buffer net.core.wmem_max = 12582912 # Increase number of incoming connections net.core.somaxconn = 4096 # Increase number of incoming connections backlog net.core.netdev_max_backlog = 65536 # Increase the maximum amount of option memory buffers net.core.optmem_max = 25165824 # Increase the maximum total buffer-space allocatable # This is measured in units of pages (4096 bytes) net.ipv4.tcp_mem = 65536 131072 262144 net.ipv4.udp_mem = 65536 131072 262144 # Increase the read-buffer space allocatable net.ipv4.tcp_rmem = 8192 87380 16777216 net.ipv4.udp_rmem_min = 16384 # Increase the write-buffer-space allocatable net.ipv4.tcp_wmem = 8192 65536 16777216 net.ipv4.udp_wmem_min = 16384 # Increase the tcp-time-wait buckets pool size to prevent simple DOS attacks net.ipv4.tcp_max_tw_buckets = 1440000 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_tw_reuse = 1
กรณีที่ต้องการแก้ไขอื่นเพิ่มเติมหรืออยากรู้แหล่ะมันคืออะไร ผลจากบรรทัดนั้นจะได้อะไรตามไปอ่านได้ที่นี่
แล้วก็เริ่มใช้ค่าใหม่ได้เลยโดยใช้คำสั่ง sysctl -p
หรือถ้าอยากลองว่ามันรอดไหมออกหมู่หรือจ่าก็สั่ง Reboot เครื่องได้เลย
MySQL Performance Tuning and Optimization
เครื่องนี้เป็น Database Server การจะไม่ปรับความสามารถของ MySQL ดูจะเป็นเรื่องที่บาปพอสมควร -*- แต่ก็เตือนไว้อีกนั่นแหล่ะ ไม่ระวังก็มีผลทำให้ MySQL Server Start ไม่ขึ้นกันเลยทีเดียว ถ้าอยากได้เอกสาร/บทความอ่านก่อนหน้าปรับจริงก็ตามไปอ่านได้ที่นี่ อื่น ๆ เพิ่มเติม ก็ไปทำลิงค์ข้างล่างได้เลย
- Ten MySQL performance tuning settings after installation
- MySQL Performance Tuning: Tips, Scripts and Tools
ทั้งนี้ทั้งนั้นก็ลองใช้ Tool ของ Percona : Percona Configuration Wizard for MySQL ทดสอบปรับแต่งดูก่อนได้
การปรับแต่งความปลอดภัยและ Firewall
Firewall คือ ระบบรักษาความปลอดภัยของเครื่องคอมพิวเตอร์ (อ่านว่า ไฟร์วอลล์) ไม่ให้ถูกโจมตีจากผู้ไม่หวังดีหรือการสื่อสารที่ไม่ได้รับอนุญาต ซึ่งส่วนใหญ่จะมาจากระบบเครือข่ายอินเตอร์เน็ต รวมถึงเครือข่าย LAN ด้วย ซึ่งในปัจจุบัน Firewall มีทั้งอุปกรณ์ที่เป็น Hardware และ Software
ในที่นี้เราจะใช้ Software ที่ติดมากับ Linux/Ubuntu แต่ใช้ Tool จัดการที่มันง่ายขึ้น เริ่มต้นก็ติดตั้งแพคเกจ gufw
sudo apt install gufw sudo gufw
สิ่งที่เราควรทำคือเปิดเฉพาะสิ่งที่ต้องใช้ ง่ายไหม ^_^ โดยการคลิกที่ Rules > Add (+)
ในที่นี้เราอนุญาตเฉพาะบริการ MySQL และ SSH
ในกรณีที่ใครคุ้นชินกับ iptable
ก็ทำได้เฉกเช่นเดียวกัน ^_^