เลือกอิมเมจ Ubuntu แล้วตรวจสอบระบบที่ได้รับ
เลือกอิมเมจ Ubuntu จากสิ่งที่แอปรองรับก่อนสั่งเครื่อง แล้วตรวจระบบที่ได้รับจริง รุ่นและสถาปัตยกรรมมีผลต่อ runtime ฐานข้อมูล ส่วนขยาย และเครื่องมือกู้คืน การติดตั้งสำเร็จเพียงอย่างเดียวยังไม่ยืนยันความเข้ากันได้
VPSuntu · อัปเดต · อ่านประมาณ 5 นาที
เนื้อหาในคู่มือนี้
เลือกจากความต้องการของซอฟต์แวร์
จด Ubuntu รุ่นที่รองรับ runtime และฐานข้อมูล รวม architecture ของ native extensions, containers และ backup agents ตรวจช่วงบำรุงรักษาที่เหลือและอิมเมจที่ผู้ให้บริการมีในภูมิภาคที่ต้องใช้ หลังสร้างเครื่องให้ทดสอบก่อนย้ายข้อมูล
Ubuntu 24.04 ใช้ตระกูล Python 3.12, PHP 8.3 และ PostgreSQL 16 เป็นตัวอย่างจาก release notes ในต้นฉบับ แพตช์เปลี่ยนตามการอัปเดต แอปที่รองรับรุ่นเก่าไม่จำเป็นต้องรองรับรุ่นนี้ ใช้ตารางช่วงดูแล LTSประกอบการเลือก
ยืนยันรุ่นและสถาปัตยกรรมบน VPS
รันคำสั่งอ่านข้อมูลบน VPS แล้วเก็บผลไว้กับบันทึก deployment ก่อนติดตั้งเพิ่ม
cat /etc/os-release
uname -r
dpkg --print-architecture
uname -mบนหน้าจอขนาดเล็ก เลื่อนตารางด้านข้างเพื่อดูทุกคอลัมน์
| ผลลัพธ์ | ความหมาย |
|---|---|
| VERSION_ID ใน /etc/os-release | รุ่น Ubuntu ที่ติดตั้ง |
| uname -r | เคอร์เนลที่กำลังใช้งาน |
| amd64 / x86_64 | ชื่อแพ็กเกจและเครื่องสำหรับ x86 แบบ 64 บิต |
| arm64 / aarch64 | ชื่อที่ใช้กับ Arm แบบ 64 บิต |
เคอร์เนลอย่างเดียวไม่ได้บอก Ubuntu release หรือขอบเขตการดูแล ผู้ให้บริการอาจใช้ cloud kernel ไบนารี amd64 ไม่ได้รันแบบ native บน arm64 โดยอัตโนมัติ
ตรวจ provisioning และ cloud-init
อิมเมจจำนวนมากใช้ cloud-init ติดตั้งคีย์ สร้างบัญชี และจัดเครือข่าย ตรวจว่ามีก่อนขอสถานะ การไม่มีไม่ได้แปลว่าเสียเสมอไป ให้ดูวิธีสร้างเครื่องของผู้ให้บริการ
if command -v cloud-init >/dev/null 2>&1; then
cloud-init status --long
else
printf '%s\n' 'cloud-init is not installed; check the provider provisioning method.'
fiหากกำลังทำงานให้รอ ส่วน error หรือ degraded ต้องตรวจแม้ SSH เข้าได้ เมื่อมี cloud-init ให้ดู log ต่อไปนี้ ข้อความภาษาอังกฤษในคำสั่งคือผลลัพธ์ตัวอย่างที่คงจากต้นฉบับ
sudo tail -n 50 /var/log/cloud-init.log
sudo tail -n 50 /var/log/cloud-init-output.loglog อาจมีข้อมูลลับ ต้องปิดบังก่อนแชร์ อย่ารัน cloud-init clean หรือแทนไฟล์เครือข่ายเพียงเพื่อให้ error หาย การ provisioning เสร็จยังไม่ยืนยันว่าแอปหรือ backup job ทำงาน
ตรวจแพ็กเกจก่อนติดตั้ง
คำสั่ง update รีเฟรชรายการแพ็กเกจ ยังไม่ติดตั้งแอปเหล่านี้ ตรวจ candidate และ repository ของแต่ละรายการ
sudo apt update
apt-cache policy python3 php postgresql
apt-cache policy python3.12 php8.3 postgresql-16Installed: (none) คือยังไม่ติดตั้ง ส่วน Candidate: (none) คือแหล่งแพ็กเกจปัจจุบันไม่มีตัวเลือก ตรวจชื่อ architecture และ components ก่อนเพิ่ม repository อื่น Metapackage เช่น php เลือกรุ่นเริ่มต้น จึงควรตรวจแพ็กเกจระบุรุ่นด้วย
สำหรับซอฟต์แวร์ที่ติดตั้งแล้ว ตรวจ executable หรือ service จริง เช่น python3 --version และ php --version เครื่องมือ client ฐานข้อมูลอาจเป็นคนละรุ่นกับ server
ตัวอย่างการตัดสินใจเรื่องความเข้ากันได้
สมมติแอปรองรับเฉพาะ Python 3.10 และมี native extension เฉพาะ amd64 เป็นเงื่อนไขสมมติ ไม่ใช่ผลิตภัณฑ์จริง Ubuntu 24.04 arm64 ไม่ตรงสองจุด: Python เริ่มต้นเป็น 3.12 และส่วนขยายคนละ architecture
เปลี่ยนเป็น amd64 แก้ได้เฉพาะสถาปัตยกรรม virtual environment ใช้ interpreter ที่สร้างมัน ไม่ได้แปลง Python 3.12 เป็น 3.10 อย่าแทน system Python เพื่อให้แอปทำงาน พิจารณาอัปเดตแอปหรือ runtime/container ที่มีแผนดูแลชัดเจน รุ่น Ubuntu เก่าก็มีวันสิ้นสุดการดูแล
ใน staging ให้ทดสอบส่วนขยายจริง งานฐานข้อมูล background job และวงจร backup/restore จด app build และเวอร์ชันต่าง ๆ การเปิดหน้าแรกได้เป็นการทดสอบที่แคบเกินไป
แยกการดูแลโฮสต์ คอนเทนเนอร์ และแพ็กเกจ
คอนเทนเนอร์แยก dependencies แต่ยังพึ่งโฮสต์ ตรวจ native image ของ platform เก็บข้อมูลใน volume หรือ storage ที่อธิบายชัด และฝึกกู้คืนนอกคอนเทนเนอร์ การ pin รุ่นหรือ digest ช่วยทำซ้ำได้ แต่ต้องวางตารางอัปเดตด้วย
การดูแล Ubuntu release ไม่เท่ากับครอบคลุมทุกแพ็กเกจ Ubuntu Main, Ubuntu Pro, repository ภายนอก ไบนารีดาวน์โหลด และ container images อาจมีผู้ดูแลคนละราย จดว่าใครรับผิดชอบแต่ละชั้น
แยกอัปเดตแพ็กเกจกับอัปเกรด release
รีเฟรช package metadata ก่อนตรวจรายการด้านล่าง คำสั่งเหล่านี้ไม่อัปเกรด distribution
apt list --upgradable
systemctl --failed
if [ -f /var/run/reboot-required ]; then cat /var/run/reboot-required; fiเลือกช่วงบำรุงรักษาแล้วทบทวนอัปเดต บาง service อาจ restart ตัวบอก reboot มีประโยชน์เมื่อปรากฏ แต่การไม่มีไม่ได้ยืนยันว่าทุกอย่างใหม่หมด ทดสอบ release upgrade บนสำเนาหรือเครื่องใหม่ โดยตรวจ runtime, repositories, ฐานข้อมูล และ extensions ซ้ำ
แผนย้อนกลับต้องรวมข้อมูลที่เขียนหลังเปลี่ยนระบบ snapshot ก่อนอัปเกรดไม่มีคำสั่งซื้อที่เกิดภายหลัง เก็บรุ่น kernel, image ID, app build, ผล provisioning, งานที่ทดสอบ ผู้ดูแลแพ็กเกจ และการกู้คืนครั้งล่าสุดโดยไม่ใส่ secrets แล้วไปขั้นตอนเผยแพร่เว็บ
คำถามที่พบบ่อย
ต้องเลือก Ubuntu 24.04 เสมอไหม?
เป็นรุ่นตัวอย่างของคู่มือ เลือกรุ่นที่ยังได้รับการดูแลและทั้งแอปกับผู้ให้บริการรองรับ พร้อมบันทึกช่วงดูแลที่เหลือ
เปลี่ยนอิมเมจแล้วข้อมูลจะหายไหม?
การ reinstall ของผู้ให้บริการมักแทนดิสก์ ตรวจขั้นตอน ส่งออกข้อมูลและ config แล้วทดสอบกู้คืนก่อน การ reinstall ต่างจาก release upgrade