ข้ามไปที่เนื้อหาหลัก

สรุป: อัปเดต Ubuntu Server อย่างไรให้ปลอดภัย ลดโอกาสเว็บล่มหลัง Reboot


การอัปเดต Ubuntu Server ไม่ใช่เรื่องน่ากังวล แต่สิ่งที่เสี่ยงที่สุดคือ การรีบ Reboot โดยไม่ตรวจสอบระบบ เพราะการรีสตาร์ตเครื่องคือการเริ่มต้น Service, Kernel, Network และ Application ใหม่ทั้งหมด หากมี Service ใดไม่สามารถเริ่มทำงานได้ เว็บไซต์อาจใช้งานไม่ได้ทันที

1. รู้ก่อนว่าเซิร์ฟเวอร์ให้บริการอะไร

ก่อนอัปเดต ควรรู้ว่ามีองค์ประกอบใดกำลังทำงานอยู่ เช่น

  • Web Server: Nginx, Apache
  • Application: Node.js, PHP-FPM, Python, Docker
  • Database: MySQL, PostgreSQL
  • Cache: Redis
  • Worker หรือ Queue Service

การรู้โครงสร้างระบบจะช่วยให้ตรวจสอบหลัง Reboot ได้ครบทุกส่วน


2. Backup ก่อนทุกครั้ง

ควรมีแผนย้อนกลับเสมอ

  • Snapshot VM หรือ Cloud Instance
  • Backup Database และทดสอบว่าสามารถ Restore ได้
  • สำรองไฟล์ Config เช่น
    • /etc/nginx
    • .env
    • docker-compose.yml
    • Cron Job
  • เก็บไฟล์ Config ไว้ใน Git หรือพื้นที่สำรอง

Backup ที่ไม่เคยทดสอบการกู้คืน อาจไม่ใช่ Backup ที่ใช้งานได้จริง


3. ตรวจสุขภาพระบบก่อนอัปเดต

df -h

free -h

systemctl --failed

sudo journalctl -p err -b

ตรวจสอบว่า

  • Disk เหลือเพียงพอ
  • RAM ปกติ
  • ไม่มี Service ล้มอยู่ก่อน
  • ไม่มี Error สำคัญตั้งแต่ Boot ล่าสุด

หากมีปัญหาเดิมอยู่ ควรแก้ก่อนอัปเดต เพื่อไม่ให้สับสนว่าปัญหาเกิดจากการ Update หรือไม่


4. ดูรายการที่จะอัปเดตก่อน

sudo apt update

apt list --upgradable

sudo apt upgrade --simulate

การใช้ --simulate

ช่วยให้เห็นว่า

  • Kernel
  • OpenSSL
  • Docker
  • Nginx
  • Database
  • Library สำคัญ

จะถูกอัปเดตหรือไม่

อย่าใช้

sudo apt upgrade -y

โดยไม่ตรวจสอบรายการก่อน โดยเฉพาะบน Production Server


5. อัปเดตอย่างระมัดระวัง

sudo apt upgrade

หากระบบถามเกี่ยวกับไฟล์ Config

  • เก็บ Config เดิมไว้ก่อน
  • เปรียบเทียบความแตกต่างภายหลัง
  • อย่ารีบเขียนทับไฟล์ที่ทีมงานเคยแก้ไข


6. ใช้ Full Upgrade เมื่อจำเป็น

sudo apt full-upgrade

คำสั่งนี้อาจ

  • เพิ่ม Package
  • ลบ Package
  • เปลี่ยน Dependency

จึงควรใช้เฉพาะเมื่อเข้าใจผลกระทบ และควรทำในช่วง Maintenance Window


7. ตรวจว่าจำเป็นต้อง Reboot หรือไม่

test -f /var/run/reboot-required && echo reboot-needed

ไม่ใช่ทุกการอัปเดตจำเป็นต้อง Restart

แต่หากมี

  • Kernel
  • libc
  • Security Patch สำคัญ

ควรวางแผน Reboot ให้เรียบร้อย


8. วางแผน Reboot

สำหรับระบบ Production

  • แจ้งทีมงาน
  • เปิด Maintenance Page
  • หากมีหลายเครื่อง ให้ใช้ Rolling Update

แนวทางคือ

  1. นำเครื่องแรกออกจาก Load Balancer
  2. Update
  3. Reboot
  4. ตรวจ Health
  5. จึงทำเครื่องถัดไป

ช่วยลด Downtime ของระบบได้อย่างมาก


9. หลัง Reboot อย่าดูแค่ SSH เข้าได้

ตรวจสอบ Service สำคัญ

systemctl status nginx

systemctl status php8.3-fpm

docker ps

systemctl --failed

SSH เข้าได้ ไม่ได้แปลว่าเว็บไซต์พร้อมใช้งาน


10. ทดสอบเหมือนผู้ใช้จริง

ภายในเครื่อง

curl -I http://127.0.0.1

ภายนอก

curl -I https://your-domain.example

จากนั้นตรวจสอบ

  • หน้า Login
  • API
  • Database Connection
  • Upload File
  • Dashboard
  • งาน Background

อย่าทดสอบเฉพาะหน้าแรกของเว็บไซต์


11. หากเว็บล่มหลัง Reboot

สาเหตุที่พบได้บ่อย

  • Service ไม่ได้ Enable
  • Firewall ปิด Port
  • Environment Variable ไม่ถูกโหลด
  • Mount Disk ยังไม่พร้อม
  • Database เริ่มช้ากว่า Application
  • Docker Container ไม่ได้ Restart อัตโนมัติ

ตรวจสอบ Log

sudo journalctl -u <service-name> -b

จะช่วยหาสาเหตุได้เร็วกว่าการเดา


12. สร้าง Health Check

ควรมี Endpoint เช่น

/health

ตรวจสอบว่า

  • Web Server ทำงาน
  • Database เชื่อมต่อได้
  • Redis พร้อม
  • Queue ทำงาน
  • Storage พร้อมใช้งาน

หรือสร้าง Script สำหรับตรวจทุกบริการในคำสั่งเดียว เพื่อใช้หลัง Reboot ทุกครั้ง


Checklist การอัปเดต Ubuntu Server

✅ Backup และ Snapshot ก่อนอัปเดต

✅ ตรวจสุขภาพระบบ (df, free, systemctl)

✅ ดูรายการ Package ที่จะอัปเดต

✅ ใช้ apt upgrade --simulate

✅ อ่านข้อความเกี่ยวกับ Config ก่อนกดตอบ

✅ Reboot เฉพาะเมื่อจำเป็น

✅ วางแผน Maintenance Window

✅ ตรวจสอบทุก Service หลัง Boot

✅ ทดสอบเว็บไซต์จากมุมมองผู้ใช้จริง

✅ ตรวจสอบ Log หากพบปัญหา


สรุป

การอัปเดต Ubuntu Server ที่ปลอดภัยไม่ใช่การหลีกเลี่ยงการ Reboot แต่คือการมีขั้นตอนที่ชัดเจน ได้แก่ สำรองข้อมูล ตรวจสอบรายการอัปเดต วางแผนช่วงเวลาบำรุงรักษา ตรวจสอบ Service หลัง Boot และทดสอบการทำงานของระบบอย่างครบถ้วน เมื่อทำเป็นมาตรฐานทุกเดือน การติดตั้ง Security Update จะกลายเป็นงานบำรุงรักษาปกติที่ลดความเสี่ยงและช่วยให้ระบบมีความปลอดภัยและเสถียรมากขึ้น


Bash file 

หากต้องการให้การอัปเดต Ubuntu Server ปลอดภัยและทำซ้ำได้ทุกครั้ง สามารถเขียน Bash Script เพื่อช่วยตรวจสอบระบบก่อนและหลังอัปเดตได้ โดย สคริปต์นี้จะไม่ Reboot อัตโนมัติ เพื่อให้ผู้ดูแลระบบเป็นผู้ตัดสินใจเอง

#!/usr/bin/env bash

#

# Ubuntu Server Safe Update Script

# Version: 1.0

#


set -euo pipefail


LOGFILE="/var/log/safe-update-$(date +%F-%H%M%S).log"


exec > >(tee -a "$LOGFILE")

exec 2>&1


echo "======================================"

echo " Ubuntu Safe Update"

echo " Started : $(date)"

echo "======================================"


echo

echo "[1] Disk Usage"

df -h


echo

echo "[2] Memory"

free -h


echo

echo "[3] Failed Services"

systemctl --failed || true


echo

echo "[4] Boot Errors"

journalctl -p err -b --no-pager || true


echo

echo "[5] Updating Package List..."

apt update


echo

echo "[6] Upgradable Packages"

apt list --upgradable


echo

echo "[7] Simulate Upgrade"

apt upgrade --simulate


echo

read -p "Continue upgrade? (y/N): " ans


if [[ ! "$ans" =~ ^[Yy]$ ]]; then

    echo "Cancelled."

    exit 0

fi


echo

echo "[8] Running Upgrade..."

apt upgrade


echo

echo "[9] Checking Reboot Requirement"


if [[ -f /var/run/reboot-required ]]; then

    echo "======================================"

    echo " Reboot is REQUIRED"

    cat /var/run/reboot-required.pkgs 2>/dev/null || true

    echo "======================================"

else

    echo "No reboot required."

fi


echo

echo "Upgrade Completed."

echo "Log : $LOGFILE"


หลัง Reboot ใช้สคริปต์ตรวจสุขภาพระบบ

สร้างไฟล์ health-check.sh

#!/usr/bin/env bash


echo "=============================="

echo " Ubuntu Health Check"

echo "=============================="


echo

echo "Hostname : $(hostname)"

echo "Uptime   : $(uptime -p)"


echo

echo "Disk"

df -h


echo

echo "Memory"

free -h


echo

echo "Failed Services"

systemctl --failed


echo

echo "Nginx"

systemctl is-active nginx 2>/dev/null


echo

echo "Apache"

systemctl is-active apache2 2>/dev/null


echo

echo "PHP-FPM"

systemctl list-units --type=service | grep php || true


echo

echo "Docker"

docker ps 2>/dev/null || true


echo

echo "Redis"

systemctl is-active redis 2>/dev/null


echo

echo "MySQL"

systemctl is-active mysql 2>/dev/null


echo

echo "PostgreSQL"

systemctl is-active postgresql 2>/dev/null


echo

echo "HTTP Local Test"


curl -I http://127.0.0.1 --max-time 5 || true


echo

echo "HTTPS Local Test"


curl -k -I https://127.0.0.1 --max-time 5 || true


echo

echo "Boot Errors"


journalctl -p err -b --no-pager

วิธีใช้งาน

ให้สิทธิ์รันสคริปต์

chmod +x safe-update.sh

chmod +x health-check.sh

รันอัปเดต

sudo ./safe-update.sh

เมื่อ Reboot เสร็จแล้ว

sudo ./health-check.sh

แนะนำเพิ่มเติมสำหรับ Production Server

สามารถพัฒนาสคริปต์นี้ให้มีความสามารถเพิ่มขึ้น เช่น

  • สำรองไฟล์ /etc อัตโนมัติก่อนอัปเดต
  • สำรองฐานข้อมูล MySQL/PostgreSQL
  • ตรวจสอบพื้นที่ดิสก์ขั้นต่ำ (เช่น ต้องเหลือไม่น้อยกว่า 20%)
  • ส่งผลการอัปเดตไปยัง Slack, Discord หรือ LINE Notify
  • ตรวจสอบ Health Check ของเว็บไซต์หลายโดเมนพร้อมกัน
  • รองรับ Nginx, Apache, Docker, Docker Compose, Node.js, PHP, Python และ Redis โดยอัตโนมัติ
  • สร้างรายงานเป็นไฟล์ HTML หรือ Markdown เพื่อเก็บประวัติการอัปเดตแต่ละครั้ง

เวอร์ชันลักษณะนี้จะเหมาะสำหรับใช้เป็นเครื่องมือมาตรฐานในการดูแล Ubuntu Server ทั้งเครื่อง Development, Staging และ Production.



ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

Anvil แฟลต์ฟอร์ม สำหรับ Python Full Stack มีครบ จบในเครื่องมือเดียว

Anvil แฟลต์ฟอร์ม สำหรับ Python Full Stack มีครบ จบในเครื่องมือเดียว Avil เป็นแฟลต์ฟอร์มสำหรับสร้างเว็บแอพลิเคชั่น ด้วยภาษา python สามารถใช้งานทั้ง HTML CSS JavaScript SQL ทั้งหมดนี้รวมในเครื่องมือที่ชื่อว่า Anvil Python ใช้สำหรับรันบนบราวเซอร์ เซอร์เวิรส์ และสร้าง UI ด้วยวิธีการ Drag-and-Drop เพียงลากวาง UK และยังสามารถเชื่อมต่อและใช้งาน Database  และยังสามารถ Integration กับแฟลต์ฟอร์มอื่นๆ ได้อีกด้วย โครงสร้างของ Anvil  การออกแบบง่ายๆ ด้วย drag-and-drop ใช้ python เป็น client-side และรันบน บราวเซอร์ Server-side รันบน Anvil Server สามารถใช้ Database ต่างๆ เพื่อเก็บข้อมูล สามารถรัน python บนเครื่องและตอบโต้กับแอปพลิเคขั่นไดด้

อะไรคือ NPU (Neural Processing Unit) มีความสำคัญอย่างไร แนวคิดมาจากไหน

ความหมาของคำว่า NPU (Neural Processing Unit)  NPU (Neural Processing Unit) คือ หน่วยประมวลผลโครงข่ายประสาทที่สร้างมาเพื่อใช้งานด้านปัญญาประดิษฐ์ เป็นหน่วยประมวลผลพิเศษที่ออกแบบมาเพื่อใช้ในแนวคิดของการเรียนรู้ของเครื่อง (Machine Learning) ของคอมพิวเตอร์โดยเฉพาะ ทำให้การประมวลผล AI ทรงประสิทธิภาพเพิ่มขึ้นจากเดิมของ TPU GPU และ CPU เช่น การจดจำภาพ, วิเคราะห์เสียง, หรือการแปลภาษา ทำได้รวดเร็วและประหยัดพลังงานกว่า CPU/GPU ทั่วไป โดยทำงานคล้ายโครงข่ายประสาทของมนุษย์ และพบได้ทั้งในสมาร์ตโฟน, คอมพิวเตอร์ (PC), และอุปกรณ์ AI อื่นๆ ในอนาคต เพื่อเร่งความเร็วของการทำงานของ AI สามารถจัดการงานและปัญหาที่ซับซ้อนได้อย่างมีประสิทธิภาพ  ประวัติความเป็นมาของ NPU (Neural Processing Unit)  ตั้งแต่ปี 1970 เป็นต้นมาเราได้ใช้เริ่มมีการใช้หน่วยการประมวลผลแบบดั้งเดิม คือ หน่วยประมวลผลกลาง (CPU) ถือเป็น "สมอง" และเป็นกลไกการทำงานของคอมพิวเตอร์ ดังนั้นซีพียู CPU ประมวลผลงานคำนวณแบบดั้งเดิมส่วนใหญ่มีหน้าที่รับผิดชอบการทำงานของแอปพลิเคชันให้มีศักยภาพหลากหลายเพิ่มมาเรื่อย แม้ว่าจะมีหลายประเภท แต่โดยทั่...

TomCat สำหรับติดตั้ง แก้ไข คอนฟิก ใช้งาน JSP

Apache Tomcat เป็น  HTTP Server ที่มีความสามารถนำภาษาจาวามาใช้งานได้  สามารถใช้เทคโนโลยีของภาษาจาวาที่เรียกว่า Java Servlet  และ Java Server Page (JSP)  Tomcat เป็นโปรแกรม Open-Source  อยู่ภายใต้การดูแลของ Apache Software Foundation  (ซึ่งเป็นผู้สร้าง Apache HTTP Server ที่เป็นที่นิยมใช้กันอย่างแพร่หลาย)  สามารถอ่านรายละเอียดของ Tomcat ได้ที่  http://tomcat.apache.org  โดยเลือกหัวข้อ “ Documentation”  และเลือก “Tomcat 7.0” ขั้นตอนการติดตั้ง Tomcat เรียงลำดับดังนี้