EQVPS

วิธีเปลี่ยนชื่อโฮสต์และเขตเวลาบน VPS

เปลี่ยนชื่อเซิร์ฟเวอร์และตั้งนาฬิกาให้ตรงกับเขตเวลาของคุณบน Ubuntu, Debian และ Windows Server โดยไม่มีคำเตือนของ sudo ที่เกิดหลังใช้ hostnamectl อย่างเดียว พร้อมตรวจ cron ล็อก และการซิงก์เวลาหลังเปลี่ยน ทุกขั้นตอนทดสอบบนอิมเมจของเรา

เซิร์ฟเวอร์ใหม่ใช้ชื่อที่คุณพิมพ์ตอนสั่งซื้อ และนาฬิกาอยู่ที่ UTC ทั้งสองอย่างเปลี่ยนได้ง่าย การเปลี่ยนชื่อมีกับดักหนึ่งข้อ คือคำสั่งที่ใช้กันทั่วไปจะทิ้งบรรทัดเก่าไว้ใน /etc/hosts และบน Ubuntu sudo จะบ่นเรื่องนี้ก่อนทุกคำสั่ง คู่มือนี้แก้ทั้งสองเรื่องบน Ubuntu และ Debian และแสดงคำสั่งสำหรับ Windows Server เราทดลองทุกขั้นตอนบนอิมเมจของเราเอง

คุณต้องมีผู้ใช้ที่ใช้ sudo ได้ คู่มือตั้งค่า Ubuntu จะสร้างให้

1. ดูชื่อและเวลาปัจจุบัน

hostnamectl
timedatectl

เซิร์ฟเวอร์ Ubuntu 24.04 ใหม่ของเราแสดงชื่อจากการสั่งซื้อเป็นชื่อโฮสต์แบบคงที่ พร้อม Time zone: Etc/UTC, System clock synchronized: yes และ NTP service: active ส่วน Debian 12 และ 13 ก็เหมือนกัน การซิงก์นาฬิกาทำงานอยู่แล้ว ไม่ต้องติดตั้ง NTP

2. เปลี่ยนชื่อโฮสต์

เลือกชื่อสั้น หรือชื่อเต็มถ้าจะให้ตรงกับระเบียน DNS ที่คุณดูแล เช่น web1.example.com:

sudo hostnamectl set-hostname web1.example.com

ชื่อเปลี่ยนทันที แต่ /etc/hosts ยังผูก 127.0.1.1 ไว้กับชื่อเก่า บน Ubuntu อาการนี้โผล่ทันที:

sudo: unable to resolve host web1.example.com: No address associated with hostname

hostname -f ก็ล้มเหลวแบบเดียวกัน Debian หาชื่อเจอด้วยวิธีอื่นจึงไม่แสดงคำเตือน แต่ /etc/hosts ของมันก็ล้าสมัยไม่ต่างกัน ให้แก้ไฟล์ทั้งสองระบบ:

sudo sed -i 's/^127\.0\.1\.1 .*/127.0.1.1 web1.example.com web1/' /etc/hosts
grep 127.0.1.1 /etc/hosts
hostname -f

หลังจากนั้น sudo ก็เงียบ hostname -f แสดง web1.example.com และ hostname -s แสดง web1

ความเห็นที่ด้านบนของ /etc/hosts บอกว่า cloud-init เป็นผู้ดูแลไฟล์นี้ และสิ่งที่คุณแก้อาจหายไป บนอิมเมจของเรา cloud-init เขียนไฟล์นี้เฉพาะตอนบูตเซิร์ฟเวอร์ครั้งแรก เรารีบูต แล้วทำให้ cloud-init มองการบูตครั้งถัดไปเป็นอินสแตนซ์ใหม่ ชื่อและบรรทัดของเราใน /etc/hosts ยังอยู่ทั้งสองครั้ง

ชื่อโฮสต์มีอยู่บนเซิร์ฟเวอร์ของคุณเท่านั้น ถ้าเครื่องอื่นต้องเข้าถึงด้วยชื่อนี้ ให้เพิ่มระเบียน DNS ด้วย การชี้โดเมนไปที่ VPS อธิบายวิธีไว้ สำหรับเมลเซิร์ฟเวอร์ ระเบียนย้อนกลับก็สำคัญ ดู การตั้งค่า DNS ย้อนกลับ

3. เปลี่ยนเขตเวลา

แสดงรายชื่อเขตเวลาแล้วเลือกของคุณ เซิร์ฟเวอร์ของเรามี 497 เขต:

timedatectl list-timezones | grep -i tokyo
sudo timedatectl set-timezone Asia/Tokyo
timedatectl

ตัวนาฬิกาไม่ขยับ สิ่งที่เปลี่ยนมีแค่การแสดงเวลาและการอ่านตารางเวลาท้องถิ่น นี่คือสิ่งที่เราเห็นหลังเปลี่ยนจาก UTC เป็น Asia/Tokyo:

อะไรหลังเปลี่ยน
date, journalctlเป็นเวลาโตเกียวทันที
cronเป็นเวลาโตเกียวทันที: งานที่ตั้งไว้ 09:48 ทำงานตอน 09:48:01 JST โดยไม่ต้องรีสตาร์ต
/var/log/syslog (Ubuntu)ยังเขียนเวลา UTC จนกว่าจะรีสตาร์ต rsyslog
/etc/timezone (Ubuntu)ยังเป็น Etc/UTC

ดังนั้นให้รีสตาร์ตบริการล็อกและทุกอย่างที่ทำงานนานและพิมพ์เวลา เช่น แอปของคุณ:

sudo systemctl restart rsyslog

Debian 12 และ 13 ไม่ได้ติดตั้ง rsyslog ล็อกของมันอยู่ใน journal เท่านั้น ซึ่งปรับตามเขตเวลาใหม่เอง

โปรแกรมเก่าบางตัวอ่านเขตเวลาจาก /etc/timezone แทนการตั้งค่าระบบ ถ้ามีตัวไหนยังแสดง UTC ให้เขียนชื่อเดียวกันลงไปแล้วรีสตาร์ตโปรแกรมนั้น:

echo Asia/Tokyo | sudo tee /etc/timezone

ก่อนเปลี่ยน ให้ตรวจ crontab ของคุณ บรรทัด 0 3 * * * ที่เขียนไว้สำหรับ 03:00 UTC จะทำงานตอน 03:00 เวลาโตเกียวแทน คือเร็วขึ้นเก้าชั่วโมงในเวลาจริง

4. Windows Server

บน Windows Server 2022 ให้เปิด PowerShell ในฐานะผู้ดูแลระบบ การเปลี่ยนชื่อต้องรีสตาร์ต:

Rename-Computer -NewName web1 -Restart

ชื่อคอมพิวเตอร์ใน Windows จำกัดไว้ 15 ตัวอักษร จึงควรใช้ชื่อสั้นตรงนี้

สำหรับเขตเวลา ให้หา ID แล้วตั้งค่า มีผลทันทีโดยไม่ต้องรีสตาร์ต:

Get-TimeZone -ListAvailable | Where-Object Id -like '*Tokyo*'
Set-TimeZone -Id 'Tokyo Standard Time'
Get-TimeZone

ในเมื่อเข้าระบบแล้ว ก็เป็นจังหวะดีที่จะ ป้องกัน RDP

เลือกแพ็กเกจไหน

ชื่อโฮสต์และเขตเวลาไม่มีค่าใช้จ่าย แพ็กเกจไหนก็ได้ Nano $3/เดือน สำหรับเซิร์ฟเวอร์ Linux ขนาดเล็ก Windows-Small $11/เดือน สำหรับ Windows Server 2022 แพ็กเกจทั้งหมดอยู่ในหน้า VPS ชำระเงินด้วย USDT, USDC หรือ ETH บนเครือข่าย Base, Ethereum หรือ Polygon

คำถามที่พบบ่อย

cloud-init จะเปลี่ยนชื่อกลับหลังรีบูตไหม?

บนอิมเมจของเราไม่เปลี่ยน เราตั้งชื่อใหม่ด้วย hostnamectl รีบูต แล้วยังทำให้ cloud-init มองการบูตครั้งถัดไปเป็นอินสแตนซ์ใหม่ทั้งหมด ชื่อยังอยู่ทั้งสองครั้ง และสิ่งที่เราแก้ใน /etc/hosts ก็ยังอยู่ การติดตั้งใหม่จะได้ระบบใหม่ที่ใช้ชื่อเดิม

ทำไม sudo ขึ้นว่า «unable to resolve host» หลังเปลี่ยนชื่อ?

hostnamectl เปลี่ยนชื่อ แต่ไม่แก้ /etc/hosts ซึ่ง 127.0.1.1 ยังชี้ไปที่ชื่อเก่า บน Ubuntu sudo จึงพิมพ์ «unable to resolve host» ก่อนทุกคำสั่ง แทนชื่อเก่าด้วยชื่อใหม่ในบรรทัด 127.0.1.1 แล้วคำเตือนจะหายไป

เซิร์ฟเวอร์ควรใช้ UTC หรือเวลาท้องถิ่นของฉัน?

UTC เป็นค่าเริ่มต้นที่ปลอดภัยกว่า เวลาในล็อกของหลายเซิร์ฟเวอร์ตรงกัน และไม่มีการกระโดดของเวลาเมื่อเปลี่ยนเวลาออมแสง ให้เปลี่ยนเป็นเขตของคุณถ้าอยากอ่านงาน cron และเวลาในล็อกตามเวลาของคุณ ใช้ได้ทั้งสองแบบ และเปลี่ยนกลับได้ทุกเมื่อ

ต้องตั้งค่า NTP ไหม?

ไม่ต้อง อิมเมจ Ubuntu และ Debian ของเราซิงก์นาฬิกาด้วย systemd-timesyncd ตั้งแต่บูตครั้งแรก รัน timedatectl แล้วดูว่ามี «System clock synchronized: yes»

การเปลี่ยนเขตเวลาจะทำให้งาน cron พังไหม?

cron ใช้เขตเวลาใหม่ทันที บนเซิร์ฟเวอร์ Ubuntu 24.04 ของเรา งานที่ตั้งไว้ 09:48 เวลาโตเกียวทำงานตอน 09:48:01 เวลาโตเกียว โดยไม่ต้องรีสตาร์ต cron แต่ให้ตรวจงานที่เขียนโดยยึด UTC เพราะตอนนี้จะทำงานในชั่วโมงนั้นตามเวลาท้องถิ่นของคุณ

ความคิดเห็น

ยังไม่มีความคิดเห็น เป็นคนแรกสิ

แสดงความคิดเห็น

ความคิดเห็นจะถูกตรวจสอบก่อนแสดง