เรื่องเล่าจากการทำ ubuntu do-release-upgrade

มี ubuntu server 18.04.5 ที่มี open source software ชื่อ fogproject เวอร์ชั่นที่ใช้คือ 1.5.8 ซึ่งใช้สำหรับการ cloning Windows ในห้องบริการคอมพิวเตอร์ บางคนคงได้ใช้งานอยู่ และก็มี freeradius 3.0 ติดตั้งไว้ด้วย อยากจะขยับ ubuntu server จาก 18.04.5 ไปเป็น 20.04 ก็เลยทำคำสั่ง do-release-upgrade ในเครื่องทดสอบ ทำจนเสร็จได้ ubuntu 20.04 สมใจ ในระหว่างขั้นตอนการทำ upgrade นั้นก็จะมีหน้าคำถามว่า จะใช้ไฟล์คอนฟิกของโปรแกรมที่ตรวจพบว่าเรามีการไปแก้ไขไว้ จะเลือกที่ใช้อยู่ปัจจุบัน หรือ จะใช้ของใหม่ตาม package ก็เลือกว่า ใช้ของที่ใช้อยู่ ซึ่งก็ค่อยมาแก้ไขว่า ของใหม่มีอะไรใหม่บ้าง ให้ดูเทียบกับ ไฟล์.dpkg-list ตอนนี้เราได้ ubuntu 20.04 แล้ว ลองตรวจสอบดูสิว่า fogproject กับ freeradius ใช้งานได้มั้ย เอาหละสิ fogproject รันไม่ขึ้น ลอง reinstall ด้วยคำสั่ง ./installfog.sh -y ก็เจอฟ้องว่า “Stopping web service failed ค้นหาใน google ก็พบคำตอบว่า fogproject รุ่น 1.5.8 ไม่รองรับ ubuntu 20.04 ซึ่งหากใครเจอปัญหาตอนที่ fogproject 1.5.9 ยังไม่ออกมาให้ใช้ –มีหนาวแน่นอน– เพราะมันจะรันไม่ได้เลย ตรงนี้น่ากังวลมาก ๆ และควรระวังมาก ๆ แต่บังเอิญว่า ตอนเวลานี้ fogproject รุ่น 1.5.9 ออกมาเพื่อแก้ปัญหาใช้กับ ubuntu 20.04 ได้แล้ว พร้อมให้ download แล้วที่เว็บไซต์ จะมีปัญหาเกี่ยวกับ php ด้วย คือ มันจะไม่ได้ php7.4 โดยทันที ซึ่งเป็นรุ่นที่มาพร้อมกับ ubuntu 20.04 หากต้องการลงเพิ่มด้วยคำสั่ง apt install php7.4 อันนี้อยากบอกว่า ซอฟต์แวร์ของคุณอาจจะต้องใช้ php เวอร์ชั่นเก่า ก็ควรระมัดระวังด้วย หลังจากนั้นก็ไปเอา fogproject 1.5.9 มาติดตั้ง จะทำการติดตั้ง php7.4 ให้อัตโนมัติหากยังไม่มี php7.4 ซึ่งก็ทำให้ใช้งาน fogproject ได้ดังเดิม ต่อมาตรวจสอบ freeradius ก็พบว่ามีการเปลี่ยนเวอร์ชั่นขึ้นเล็กน้อยเช่นกัน และในขั้นตอน upgrade นั้น เราก็เลือกว่าจะใช้ไฟล์คอนฟิกที่เราแก้ไขไว้ ผลคือ ม้นไม่สร้าง symbolic link file ไปยังไดเรกทอรี /etc/freeradius/3.0/sites-enabled ซึ่งจะต้องมี 2 ไฟล์คือ defaults กับ inner-tunnel ซึ่งก็จะสร้างได้ด้วยคำสั่ง ln -s โดยเราต้องสร้างไดเรกทอรีนั้นขึ้นมาก่อน แล้ว cd เข้าไปในไดเรกทอรีนั้น แล้วใช้คำสั่ง ln -s ../sites-available/default default และ ln -s ../sites-available/inner-tunnel inner-tunnel ตอนนี้ก็ start service freeradius ได้แล้ว มาลองทดสอบ freeradius user ผ่าน webservice ก็เจอว่า SoapClient error เนื่องจากไม่มี php7.4-soap ก็ติดตั้งด้วยคำสั่ง apt install php7.4-soap ทดสอบอีกทีด้วย username กับ password ของมหาวิทยาลัย ใช้กับ freeradius ได้ (มาเล่าต่อจากเมื่อวาน) พอจะใช้งาน PXE boot

Read More »

Canonical Livepatch Service

Canonical Livepatch Service Apply critical kernel patches without rebooting. โฆษณา Fixes are applied automatically, without restarting your system Reduces downtime, keeping your Ubuntu LTS systems secureand compliant Included as part of all Ubuntu Advantage for Infrastructuresupport packages ใครควรใช้ เครื่อง ubuntu 16.04 ขึ้นไป เริ่มได้ เปิดเว็บ https://auth.livepatch.canonical.com/ เลือก Ubuntu user แล้วกดปุ่ม Get your Livepatch token ก็จะไปหน้านี้ กด Accept all and visit site ก็ให้ log in ให้เรียบร้อย หากยังไม่ได้สมัคร user ของ Ubuntu one ก็ให้เลือก I don’t have an Ubuntu One account เพื่อสร้าง account หลังจากกด Create account ให้ไปเช็คเมล์ที่ใช้ลงทะเบียนแล้วกด verify ก็จะได้หน้าที่มี Token สำหรับลงทะเบียน ติดตั้งโปรแกรมชื่อ canonical-livepatch ด้วยคำสั่ง เมื่อติดตั้งเสร็จได้ผลลัพธ์ว่า canonical-livepatch 9.5.5 from Canonical✓ installed แล้วต่อด้วยคำสั่ง copy จากในเว็บได้เลย โดย $TOKEN คือค่าที่ได้จากในหน้าเว็บ ก็จะได้ผลว่าประมาณว่า Successfully enabled device. Using machine-token: xxxxxxxxxxx เสร็จ!!! แบบง่ายๆ และงงๆ และสำหรับ 1 email address สามารถใช้ token เดียวกันได้ 3 เครื่อง สำหรับผู้ใช้ฟรี!! ตั้งแต่ใช้มาประมาณ 1 ปีครึ่ง ก็ไม่รู้ว่ามีอัพเดตอะไรบ้างเหมือนกัน กรั่กๆ ตรวจสอบสถานะของ canonical-livepatch ด้วยคำสั่ง ก็จะได้ประมาณว่า จบขอให้สนุก อ้างอิง https://ubuntu.com/security/livepatch

Read More »

How to apache2 HTTP/2

วันนี้อัพเกรตเครื่อง licensing เป็น 20.04.1 เลยมาดูว่ามีอะไรที่ควรเปลี่ยนอีกบ้าง ก็มี HTTP/2 นี่ละ ออกมาหลายปีแล้วยังไม่ได้เริ่มใช้งาน เท่าที่ตรวจสอบเว็บเซิร์ฟเวอร์ฝั่ง windows เป็น http/2 เกือบหมดแล้ว https://thanwa.medium.com/http-2-คืออะไร-แตกต่างจาก-http-1-1-อย่างไร-5dfb14e46ae4 HTTP/1.1 และ HTTP/2 ต่างกันอย่างไร เริ่มได้ ตรวจสอบก่อนว่า server ใช้ http/2 หรือไม่ทำได้โดยใช้ web developer tool บน web browser เช่น Firefox กด F12 คลิกหัวข้อ Network ซึ่งในครั้งแรกจะไม่สามารถดูได้ว่าใช้ http/2 แล้วหรือไม่ ให้คลิกขวาดังรูป แล้วเลือก Protocol จะได้เป็น จะเห็น http/1.1 ในช่อง Protocol ถ้าเป็น http/2 จะได้ดังภาพ ขั้นตอนต่อไปนี้ทำบน Ubuntu 20.04.1 อาจใช้ได้กับ 18.04.x ด้วยเช่นกัน เริ่มด้วยการเปิด module ของ apache2 ที่ชื่อ http2 ด้วยคำสั่ง เมื่อตรวจสอบแฟ้ม /etc/apache2/mods-enabled/http2.conf (ด้วย editor ที่ชื่นชอบ) จะพบว่ามีข้อความต่อไปนี้อยู่แล้ว โดยปกติ Http/1 จะถูกเรียกใช้ก่อนเสมอ เว้นแต่ว่า web browser นั้นจะรองรับ http/2 แต่เราต้องการ http/2 ถูกเลือกก่อนจึงต้องกำหนดตามนั้น แต่ web browser ก็มีการเลือก Protocol เองด้วยเพื่อเป็นการบังคับให้เลือก ตามลำดับของ server ให้ใส่ข้อความต่อไปนี้เพิ่มลงไป *** จากการทดสอบพบว่า web browser สมัยใหม่เลือก http/2 ก่อนอยู่แล้ว ไม่จำเป็นต้องใส่ก็ได้ เพราะงั้นแค่เปิดดูแล้วก็ออกจากแฟ้ม รีสตาร์ท apache2 ด้วยคำสั่ง ตรวจสอบว่า เป็น http/2 แล้วหรือไม่ด้วยคำสั่ง ได้ผลดังภาพ แปลว่า http/2 ทำงานแล้ว ทีนี้เว็บเรามันทำด้วย mod_php ต้องเปลี่ยนมาใช้ PHP-FPM ติดตั้ง php7.4-fpm เพิ่มด้วยคำสั่ง ปิดการใช้งาน mod_php ด้วยคำสั่ง ปิดการใช้งาน apache mpm_prefork ด้วยคำสั่ง หลังจากนั้นเปิด การทำงานของ mpm_event, proxy_fcgi และ setenvif เปิดการทำงานของ php7.4-fpm ด้วยคำสั่ง ให้ php7.4-fpm ทำงานทุกครั้งที่รีสตาร์ท เปิดการทำงานของ php7.4-fpm ใน apache2 เริ่มการทำงานของ apache2 ใหม่ ทดสอบว่าเป็น http/2 แล้วด้วยคำสั่ง ได้ผลดังภาพ จริงๆ ตรวจสอบด้วย web browser ก็ได้ แต่อยากอวด command line จบขอให้สนุก อ้างอิง https://httpd.apache.org/docs/2.4/howto/http2.html

Read More »

Windows Terminal (2)

Q: วันก่อนติดตั้ง WSL2 แล้วอยากใช้งาน bash บน Windows Terminal ด้วยทำไง? A: กด แล้วเลือก Ubuntu 20.04 ไงล่ะ!! Q: ไม่อยากกดเอาแบบเปิดมาแล้วเป็น ubuntu เลยอ่ะ A: แก้ Settings คลิก เลือก Settings จะเป็นการเปิดการตั้งค่าต่างๆ ด้วย Text Editor ที่ชื่นชอบ เลื่อนลงมาดูเรื่อยๆ จะเจอว่ามี Ubuntu-20.04 อยู่ สนใจบรรทัดที่เขียนว่า “guid”: ให้ copy ข้อความที่อยู่ภายใน “{ }” มาทั้งหมด จากตัวอย่างคือ 07b52e3e-de2c-5db4-bd2d-ba144ed6c273 แล้วให้เลื่อนจอขึ้นไปด้านบนจนเห็นบรรทัดที่มีข้อความว่า “defaultProfile”: แทนที่ข้อความที่อยู่ภายในเครื่องหมาย “{ }” ด้วยข้อความที่ copy ไว้ เปลี่ยนเป็น แล้ว save ปิดแล้วเปิดใหม่ก็จะได้ Ubuntu-20.04 เป็นค่า default จบขอให้สนุก

Read More »