ตั้งค่า Timezone และซิงก์เวลาอัตโนมัติบน Linux Server
Cloud Server ส่วนใหญ่ตั้ง Timezone เป็น UTC มาตั้งแต่ต้น ซึ่งช้ากว่าเวลาประเทศไทย 7 ชั่วโมง ผลที่ตามมาคือเวลาใน Log ไม่ตรงกับเวลาที่เกิดเหตุจริง Cronjob ที่ตั้งไว้ตี 2 กลับทำงานตอน 9 โมงเช้า และเวลาในอีเมลหรือรายงานผิดเพี้ยน นอกจาก Timezone แล้ว นาฬิกาของเครื่องก็ต้องตรงด้วย เพราะเวลาที่คลาดเคลื่อนทำให้ SSL/TLS, การยืนยันตัวตนแบบ OTP และ Replication ของฐานข้อมูลมีปัญหาได้
คู่มือนี้อธิบายการตั้ง Timezone เป็น Asia/Bangkok และการเปิดซิงก์เวลาอัตโนมัติผ่าน NTP บน Ubuntu 22.04/24.04 (ใช้ systemd-timesyncd) และ AlmaLinux/Rocky Linux 8-9 (ใช้ chrony)
สิ่งที่ต้องเตรียม
- สิทธิ์ root หรือผู้ใช้ที่ใช้
sudoได้ - เซิร์ฟเวอร์ต้องออกอินเทอร์เน็ตทาง UDP Port 123 ได้ (ส่วนใหญ่เปิดอยู่แล้ว เพราะเป็นการเชื่อมต่อขาออก)
- ถ้าเซิร์ฟเวอร์รันฐานข้อมูลหรือแอปที่พึ่งพาเวลา ให้เลือกช่วงเวลาที่กระทบผู้ใช้น้อยสำหรับรีสตาร์ตบริการหลังเปลี่ยน Timezone
ขั้นตอนที่ 1: ดูการตั้งค่าเวลาปัจจุบัน
timedatectl
ตัวอย่างผลลัพธ์บนเครื่องที่ยังเป็น UTC
Local time: Sat 2026-09-19 02:15:04 UTC
Universal time: Sat 2026-09-19 02:15:04 UTC
RTC time: Sat 2026-09-19 02:15:04
Time zone: Etc/UTC (UTC, +0000)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
บรรทัดที่ต้องดูคือ Time zone, System clock synchronized (นาฬิกาซิงก์แล้วหรือยัง) และ NTP service (บริการซิงก์เวลาทำงานอยู่หรือไม่)
ขั้นตอนที่ 2: ตั้ง Timezone เป็นเวลาประเทศไทย
ดูชื่อ Timezone ที่ถูกต้องก่อน
timedatectl list-timezones | grep -i bangkok
ผลลัพธ์คือ Asia/Bangkok จากนั้นตั้งค่า
sudo timedatectl set-timezone Asia/Bangkok
คำสั่งนี้แก้ลิงก์ /etc/localtime ให้ชี้ไปยังข้อมูล Timezone ใหม่ และมีผลทันทีโดยไม่ต้องรีบูต ส่วน Ubuntu ยังมีไฟล์ /etc/timezone ที่บางโปรแกรมอ่าน ถ้าไฟล์นี้ยังแสดงค่าเดิม ให้รัน sudo dpkg-reconfigure -f noninteractive tzdata เพื่อให้ตรงกัน
หมายเหตุ: บางทีมเลือกให้เซิร์ฟเวอร์อยู่ที่ UTC ต่อไป แล้วให้แอปแปลงเป็นเวลาท้องถิ่นเอง ซึ่งสะดวกเมื่อมีเซิร์ฟเวอร์หลายประเทศ ถ้าเซิร์ฟเวอร์ทั้งหมดของคุณให้บริการในไทย การตั้งเป็น
Asia/Bangkokจะอ่าน Log และตั้ง Cronjob ได้ง่ายกว่า ประเทศไทยไม่มีการปรับเวลาตามฤดูกาล จึงไม่มีปัญหาเวลาซ้ำหรือหายไปปีละครั้ง
ขั้นตอนที่ 3: เปิดการซิงก์เวลาอัตโนมัติ
sudo timedatectl set-ntp true
คำสั่งนี้เปิดบริการซิงก์เวลาที่ติดตั้งอยู่ในเครื่อง แต่ละ Distro ใช้บริการต่างกัน ตรวจตามหัวข้อด้านล่าง
Ubuntu: systemd-timesyncd
systemctl status systemd-timesyncd
timedatectl timesync-status
สถานะต้องเป็น active (running) ส่วน timesync-status แสดง Server ที่ใช้ (ค่าเริ่มต้นคือ ntp.ubuntu.com) และค่า Offset ซึ่งควรเป็นหลักมิลลิวินาทีหรือน้อยกว่า ถ้าไม่พบ Service นี้ ให้ติดตั้งด้วย sudo apt install systemd-timesyncd
ถ้าต้องการเปลี่ยน Server เช่น ใช้ Pool ของประเทศไทย ให้สร้างไฟล์ตั้งค่าเพิ่มเติม
sudo mkdir -p /etc/systemd/timesyncd.conf.d
sudo nano /etc/systemd/timesyncd.conf.d/local.conf
[Time]
NTP=0.th.pool.ntp.org 1.th.pool.ntp.org
FallbackNTP=ntp.ubuntu.com
sudo systemctl restart systemd-timesyncd
AlmaLinux / Rocky Linux: chrony
sudo dnf install -y chrony
sudo systemctl enable --now chronyd
chronyc tracking
chronyc sources -v
chronyc tracking ต้องมี Leap status : Normal และค่า System time ที่ห่างจากเวลาจริงเพียงเล็กน้อย ส่วน chronyc sources ต้องมีอย่างน้อยหนึ่ง Server ที่ขึ้นต้นด้วย ^* ซึ่งหมายถึง Server ที่กำลังซิงก์อยู่
เปลี่ยน Server ได้ที่ไฟล์ /etc/chrony.conf โดยแก้บรรทัด pool เดิม เช่น
pool th.pool.ntp.org iburst
sudo systemctl restart chronyd
หมายเหตุ: ติดตั้งบริการซิงก์เวลาเพียงตัวเดียว ถ้าติดตั้ง
chronyบน Ubuntu แพ็กเกจจะถอดsystemd-timesyncdออกให้เอง แต่อย่าติดตั้งntpdคู่กับchronyเพราะจะแย่งกันปรับนาฬิกา
ขั้นตอนที่ 4: รีสตาร์ตบริการที่อ่าน Timezone ตอนเริ่มทำงาน
โปรแกรมหลายตัวอ่าน Timezone ครั้งเดียวตอนเริ่มทำงาน จึงยังใช้เวลาเดิมจนกว่าจะรีสตาร์ต ได้แก่
- Cron:
sudo systemctl restart cron(Ubuntu) หรือsudo systemctl restart crond(AlmaLinux/Rocky) - Syslog:
sudo systemctl restart rsyslogถ้ามีติดตั้ง - MySQL/MariaDB ที่ใช้
time_zone = SYSTEM(ค่าเริ่มต้น): รีสตาร์ตในช่วงเวลาที่กระทบผู้ใช้น้อย - PHP-FPM, Web Server และแอปอื่นที่รันค้างอยู่
สำหรับ PHP ควรตั้ง date.timezone = Asia/Bangkok ใน php.ini ด้วย เพราะ PHP ไม่ได้อ่าน Timezone ของระบบเสมอไป ถ้าไม่แน่ใจว่าต้องรีสตาร์ตอะไรบ้าง การรีบูตเครื่องหนึ่งครั้งเป็นวิธีที่ครอบคลุมที่สุด
ส่วน Cronjob ที่ตั้งไว้ก่อนหน้า จะเริ่มทำงานตามเวลาไทยหลังรีสตาร์ต Cron ถ้าเดิมคุณตั้งเวลาโดยคำนวณจาก UTC ไว้ (เช่น ตั้ง 0 19 * * * เพื่อให้ทำงานตี 2 เวลาไทย) ต้องแก้ใหม่ ดูรูปแบบเวลาได้ที่ วิธีตั้ง Cronjob หรือ Crontab บน Linux
ตรวจสอบผลลัพธ์
timedatectl
date
ผลลัพธ์ที่ถูกต้อง
Time zone: Asia/Bangkok (+07, +0700)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
และ date ต้องแสดงเวลาตรงกับนาฬิกาในประเทศไทย ลงท้ายด้วย +07 ค่า RTC in local TZ: no คือค่าที่ถูกต้องสำหรับเซิร์ฟเวอร์ Linux (นาฬิกาฮาร์ดแวร์เก็บเป็น UTC) ไม่ต้องเปลี่ยน
ปัญหาที่พบบ่อย
System clock synchronized: no
บริการซิงก์ยังติดต่อ Server ไม่ได้ ตรวจว่าไม่มี Firewall ปิดขาออก UDP 123 ดู Log ด้วย journalctl -u systemd-timesyncd -n 30 (Ubuntu) หรือ journalctl -u chronyd -n 30 (AlmaLinux/Rocky) หลังเปิดบริการใหม่ อาจต้องรอหนึ่งถึงสองนาทีจนซิงก์ครั้งแรกสำเร็จ
set-ntp แจ้ง Failed to set ntp: NTP not supported
ยังไม่มีบริการซิงก์เวลาติดตั้งอยู่ ให้ติดตั้ง systemd-timesyncd บน Ubuntu หรือ chrony บน AlmaLinux/Rocky ตามขั้นตอนที่ 3 แล้วรันคำสั่งอีกครั้ง
เวลาในแอปหรือฐานข้อมูลยังไม่เปลี่ยน
บริการนั้นยังไม่ได้รีสตาร์ต หรือตั้ง Timezone ของตัวเองไว้ ตรวจ MySQL/MariaDB ด้วย SELECT @@global.time_zone, @@system_time_zone, NOW(); และตรวจ PHP ด้วย php -i | grep date.timezone สำหรับ Container ของ Docker ต้องตั้งแยก เช่น ส่งตัวแปร TZ=Asia/Bangkok ให้ Container
หากตั้งค่าแล้วเวลายังไม่ตรง หรือไม่แน่ใจว่าบริการใดได้รับผลกระทบ ติดต่อทีมซัพพอร์ต 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
- เรื่องราวความประทับใจ
- โซลูชันสำหรับธุรกิจการผลิตและยานยนต์
- โซลูชันสำหรับธุรกิจการศึกษา
- โซลูชันสำหรับธุรกิจการเงิน
- โซลูชันสำหรับธุรกิจขนส่งและกระจายสินค้า
- โซลูชันสำหรับธุรกิจค้าปลีก
- โซลูชันสำหรับธุรกิจท่องเที่ยว
- โซลูชันสำหรับธุรกิจบริการสุขภาพและโรงพยาบาล
- โซลูชันสำหรับธุรกิจประกันภัย
- โซลูชันสำหรับธุรกิจพลังงานและสาธารณูปโภค
- โซลูชันสำหรับธุรกิจสื่อสารมวลชนและเอ็นเตอร์เทนเมนท์
- โซลูชันสำหรับธุรกิจอสังหาริมทรัพย์
- โซลูชันสำหรับธุรกิจเทคโนโลยี


