อัปเกรด Ubuntu เป็น LTS รุ่นใหม่ด้วย do-release-upgrade
Ubuntu รุ่น LTS (Long Term Support) ได้รับการอัปเดตความปลอดภัยมาตรฐาน 5 ปีนับจากวันออก เช่น Ubuntu 20.04 สิ้นสุด Standard Support ไปเมื่อเดือนพฤษภาคม 2025 และ 22.04 จะสิ้นสุดในเดือนเมษายน 2027 เมื่อรุ่นที่ใช้อยู่ใกล้หมดระยะสนับสนุน คุณมีสองทางเลือก คือสร้างเซิร์ฟเวอร์ใหม่แล้วย้ายข้อมูล หรืออัปเกรดในที่เดิมด้วยเครื่องมือ do-release-upgrade ของ Ubuntu
บทความนี้อธิบายการอัปเกรดในที่เดิมจาก 22.04 เป็น 24.04 (หลักการเดียวกันใช้กับ 20.04 เป็น 22.04) พร้อมขั้นตอนเตรียมตัวที่ช่วยให้กู้คืนได้ถ้าเกิดปัญหา การอัปเกรดต้องทำทีละรุ่น LTS เท่านั้น จาก 20.04 ไป 24.04 ต้องผ่าน 22.04 ก่อนเสมอ
สิ่งที่ต้องเตรียม
- สิทธิ์
sudoและเวลาหยุดให้บริการ (Maintenance Window) อย่างน้อย 1 ชั่วโมง ในช่วงที่มีผู้ใช้น้อย - Backup หรือ Snapshot ทั้งเครื่อง ที่ทดสอบแล้วว่ากู้คืนได้ (ดู การ Backup Server บน Cloud ของ TDC) และสำรองฐานข้อมูลแยกอีกชุดด้วย mysqldump
- ช่องทางเข้าเครื่องสำรองที่ไม่ผ่าน SSH เช่น Console ผ่านหน้าเว็บ (ดู การ Remote เข้า Console Server ผ่าน Web UI)
- พื้นที่ว่างใน
/อย่างน้อยประมาณ 5 GB และใน/boot(ถ้าแยก Partition) พอสำหรับ Kernel ใหม่ - เครื่องต้องไม่มี Control Panel ที่มีขั้นตอนอัปเกรด OS ของตัวเอง เช่น Plesk หรือ DirectAdmin ให้ตรวจเอกสารของผู้ผลิต Panel ก่อนเสมอ
หมายเหตุ: ถ้าเป็นเครื่อง Production ที่สำคัญ วิธีที่เสี่ยงน้อยกว่าคือสร้างเครื่องใหม่ด้วย Ubuntu 24.04 ติดตั้งซอฟต์แวร์ ย้ายข้อมูล ทดสอบ แล้วค่อยสลับ DNS ส่วนการอัปเกรดในที่เดิมเหมาะกับเครื่องที่ติดตั้งซอฟต์แวร์จากแพ็กเกจมาตรฐานของ Ubuntu เป็นหลัก
ขั้นตอนที่ 1: ตรวจรุ่นปัจจุบันและสิ่งที่จะเปลี่ยน
lsb_release -a
df -h / /boot
ก่อนอัปเกรด ให้ทำรายการซอฟต์แวร์สำคัญ เพราะเวอร์ชันจะกระโดดพร้อมกันหลายตัว:
| ซอฟต์แวร์ | 22.04 | 24.04 | สิ่งที่ต้องทดสอบ |
|---|---|---|---|
| PHP | 8.1 | 8.3 | ปลั๊กอินและโค้ดเก่าที่ใช้ฟังก์ชันที่ถูกยกเลิก |
| MariaDB | 10.6 | 10.11 | ระบบจะอัปเกรดไฟล์ข้อมูลให้ ต้องมี Backup |
| Python | 3.10 | 3.12 | สคริปต์และ virtualenv ต้องสร้างใหม่ |
| Nginx | 1.18 | 1.24 | Config ส่วนใหญ่ใช้ได้ต่อ |
ถ้าคุณเคยติดตั้ง PHP จาก PPA (ดู ติดตั้ง PHP หลายเวอร์ชันบน Ubuntu) หรือซอฟต์แวร์จาก Repository ภายนอก เช่น Docker, Node.js, MySQL ของ Oracle ให้จดไว้ เพราะตัวอัปเกรดจะปิด Repository ภายนอกทั้งหมดระหว่างอัปเกรด และคุณต้องเปิดกลับเองภายหลัง
ขั้นตอนที่ 2: อัปเดตรุ่นปัจจุบันให้ครบก่อน
sudo apt update
sudo apt full-upgrade -y
sudo apt autoremove --purge -y
ถ้ามีไฟล์ /var/run/reboot-required ให้รีบูตก่อนดำเนินการต่อ:
[ -f /var/run/reboot-required ] && sudo reboot
ตรวจว่าไม่มีแพ็กเกจค้าง (held) ซึ่งจะทำให้การอัปเกรดหยุดกลางทาง:
apt-mark showhold
ถ้ามีรายการ ให้พิจารณา sudo apt-mark unhold ชื่อแพ็กเกจ หรือหาเหตุผลว่าทำไมถูก hold ไว้ก่อน
ขั้นตอนที่ 3: ติดตั้งและตั้งค่าตัวอัปเกรด
sudo apt install -y update-manager-core
grep Prompt /etc/update-manager/release-upgrades
ค่าต้องเป็น Prompt=lts (อัปเกรดเฉพาะรุ่น LTS) ถ้าเป็น never ตัวอัปเกรดจะไม่เสนอรุ่นใหม่ ให้แก้เป็น lts
ขั้นตอนที่ 4: เตรียม SSH สำรอง
เมื่อรันผ่าน SSH ตัวอัปเกรดจะเปิด SSH Daemon ตัวที่สองที่พอร์ต 1022 ให้เป็นช่องทางสำรองหาก SSH หลักมีปัญหาระหว่างอัปเกรด ถ้าใช้ Firewall ให้เปิดพอร์ตนี้ชั่วคราว:
sudo ufw allow 1022/tcp
หากเซิร์ฟเวอร์มี Security Group หรือ Firewall ภายนอกจากฝั่งผู้ให้บริการ ให้เปิดพอร์ตนั้นเพิ่มด้วย และจำไว้ว่าต้องปิดกลับหลังอัปเกรดเสร็จ
ตัวอัปเกรดจะรันตัวเองภายใต้โปรแกรม screen โดยอัตโนมัติ ถ้าการเชื่อมต่อหลุดกลางทาง ให้ SSH กลับเข้ามาแล้วดู Session ด้วย sudo screen -ls จากนั้นกลับเข้าไปด้วย sudo screen -x งานจะยังทำต่อไม่หยุด (หลักการเดียวกับ ใช้ tmux ให้คำสั่งทำงานต่อแม้ SSH หลุด)
ขั้นตอนที่ 5: เริ่มอัปเกรด
sudo do-release-upgrade
ลำดับเหตุการณ์ที่จะพบ:
- ตัวอัปเกรดตรวจรุ่นใหม่ แจ้งเรื่อง SSH พอร์ต 1022 และถามว่าจะดำเนินการต่อหรือไม่ ตอบ
y - แจ้งว่า Repository ภายนอกถูกปิด (Third party sources disabled) กด Enter
- สรุปจำนวนแพ็กเกจที่จะติดตั้ง อัปเกรด และลบ พร้อมขนาดที่ต้องดาวน์โหลด อ่านรายการที่จะถูกลบให้ดี แล้วตอบ
y - ระหว่างติดตั้ง อาจมีหน้าจอถามว่าจะรีสตาร์ต Service อัตโนมัติหรือไม่ ตอบ
Yes - เมื่อพบไฟล์ Config ที่คุณเคยแก้ไข เช่น
/etc/ssh/sshd_configจะถามว่าจะใช้ไฟล์ใหม่ของผู้ผลิตหรือเก็บไฟล์เดิม ส่วนใหญ่ควรเลือก keep the local version currently installed (ค่า Default คือN) เพื่อไม่ให้การตั้งค่าที่คุณทำไว้หาย สามารถกดDเพื่อดูความแตกต่างก่อนตัดสินใจ - ถามว่าจะลบแพ็กเกจที่ล้าสมัยหรือไม่ ตอบ
yได้ ถ้าไม่มีซอฟต์แวร์ที่คุณติดตั้งเองอยู่ในรายการ - สุดท้ายถามว่าจะรีบูตหรือไม่ ตอบ
y
ระยะเวลาทั้งหมดขึ้นกับความเร็วเครือข่ายและจำนวนแพ็กเกจ โดยทั่วไป 20-60 นาที อย่ากด Ctrl+C หรือปิดเครื่องระหว่างติดตั้งแพ็กเกจ
ตรวจสอบผลลัพธ์
หลังรีบูตและเข้า SSH ได้แล้ว:
lsb_release -a
uname -r
systemctl --failed
lsb_release ต้องแสดง Ubuntu 24.04.x LTS และ systemctl --failed ควรแสดง 0 loaded units listed ถ้ามี Service ล้มเหลว ให้ดูสาเหตุด้วย journalctl -u ชื่อservice -b (ดู อ่าน Log ระบบบน Linux ด้วย journalctl)
งานหลังอัปเกรดที่ต้องทำ:
- ปิดพอร์ต 1022 ที่เปิดไว้:
sudo ufw delete allow 1022/tcp - เปิด Repository ภายนอกกลับ ใน 24.04 ไฟล์จะอยู่ที่
/etc/apt/sources.list.d/และถูกเปลี่ยนให้ปิดไว้ ตรวจแต่ละไฟล์ว่าผู้ผลิตรองรับ 24.04 (ชื่อรหัสnoble) แล้ว ก่อนแก้ชื่อรหัสจากjammyเป็นnobleแล้วรันsudo apt update - ตรวจ PHP-FPM รุ่นใหม่: Socket เปลี่ยนจาก
php8.1-fpm.sockเป็นphp8.3-fpm.sockต้องแก้fastcgi_passใน Nginx หรือ Handler ใน Apache และย้ายค่าที่เคยแก้ใน/etc/php/8.1/ไปที่/etc/php/8.3/ - เปิดเว็บไซต์ทุกเว็บและทดสอบฟังก์ชันหลัก เช่น Login, ฟอร์ม, การส่งอีเมล
ปัญหาที่พบบ่อย
No new release found
ตรวจว่า Prompt=lts และรุ่นปัจจุบันอัปเดตครบแล้ว Ubuntu จะเปิดให้อัปเกรดแบบ LTS ไป LTS หลังออกรุ่นย่อยแรก (.1) ของรุ่นใหม่ ห้ามใช้ตัวเลือก -d บนเครื่อง Production เพราะเป็นการอัปเกรดไปรุ่นที่ยังพัฒนาอยู่
Please install all available updates for your release before upgrading
ยังมีแพ็กเกจที่ไม่ได้อัปเดต ให้กลับไปทำขั้นตอนที่ 2 อีกครั้ง รวมถึงรีบูต
การอัปเกรดหยุดกลางทางด้วย dpkg error
อย่ารีบูตทันที ให้ลองซ่อมแพ็กเกจที่ค้างก่อน:
sudo dpkg --configure -a
sudo apt --fix-broken install
sudo apt full-upgrade
ถ้ายังแก้ไม่ได้และเว็บต้องกลับมาทำงานโดยเร็ว ให้กู้คืนจาก Snapshot ที่ทำไว้ แล้ววางแผนใหม่ด้วยการสร้างเครื่องใหม่แทน
เข้า SSH ไม่ได้หลังรีบูต
เข้าผ่าน Console บนหน้าเว็บ แล้วตรวจ sudo sshd -t ว่าไฟล์ Config มี Error หรือไม่ บน 24.04 SSH ใช้ Socket Activation ผ่าน ssh.socket ถ้าคุณเคยเปลี่ยนพอร์ต SSH ไว้ ให้ตรวจตามบทความ วิธีเปลี่ยน SSH Port บน Linux Server ว่าพอร์ตยังถูกต้อง
หากไม่มั่นใจว่าเครื่องของคุณเหมาะกับการอัปเกรดในที่เดิม หรืออัปเกรดแล้วพบปัญหา ติดต่อทีมซัพพอร์ต THAI DATA CLOUD ได้ที่ https://thaidata.cloud/contact/
- Categories:
- Cloud
- Tags:
- Cloud
- Cloud Server
Related Posts
หมวดหมู่ที่น่าสนใจ
- Account Settings
- AD Server
- AI
- Alibaba Cloud
- Anti-Spam Gateway
- AWS Amazon Web Services
- Campaign
- CentOS/AlmaLinux
- Cloud
- Cloud Backup
- Cloud Communication
- Cloud Migration
- Cloud Security
- Cloud Server Management
- Cloud Solution
- Cloud Solution for Government
- Cloud Solutions by Industry
- Cloud Storage
- Cloud VPS App Plus +
- Cloud VPS DirectAdmin
- Cloud VPS Plesk
- CSR
- Cyber Security
- Cybersecurity
- Data Sovereignty
- Database Server
- DDoS
- Digital Tranformation
- Digital Transformation
- Direct Mail
- Directadmin
- Domainname
- Ecommerce
- ERP
- Generative AI
- Getting Started
- Google Cloud
- Google G Suite
- Huawei Cloud
- IT News
- Linux Server
- Managed Cloud Services
- Managed Service Provider
- Manual
- Microsoft
- Microsoft 365
- Microsoft Azure
- News
- On-premise
- Private Mail Server
- Promotion
- Recommend Solution (Enterprise)
- Server
- Sovereign Cloud
- THAI DATA CLOUD Platform
- Ubuntu
- Ubuntu
- Uncategorized
- VMware
- VPS Server
- Web Design
- Web Hosting
- Web Hosting (DirectAdmin)
- Web Hosting (Plesk)
- Web Technologies
- Windows Server
- Wordpress
- Zimbra
- เรื่องราวความประทับใจ
- โซลูชันสำหรับธุรกิจการผลิตและยานยนต์
- โซลูชันสำหรับธุรกิจการศึกษา
- โซลูชันสำหรับธุรกิจการเงิน
- โซลูชันสำหรับธุรกิจขนส่งและกระจายสินค้า
- โซลูชันสำหรับธุรกิจค้าปลีก
- โซลูชันสำหรับธุรกิจท่องเที่ยว
- โซลูชันสำหรับธุรกิจบริการสุขภาพและโรงพยาบาล
- โซลูชันสำหรับธุรกิจประกันภัย
- โซลูชันสำหรับธุรกิจพลังงานและสาธารณูปโภค
- โซลูชันสำหรับธุรกิจสื่อสารมวลชนและเอ็นเตอร์เทนเมนท์
- โซลูชันสำหรับธุรกิจอสังหาริมทรัพย์
- โซลูชันสำหรับธุรกิจเทคโนโลยี


