新伺服器的名稱就是你下單時填的那個,時鐘則是 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) | 在重新啟動 rsyslog 之前持續寫入 UTC 時間 |
/etc/timezone(Ubuntu) | 仍然是 Etc/UTC |
所以要重新啟動記錄服務,以及所有長時間執行並輸出時間的程式,例如你的應用程式:
sudo systemctl restart rsyslog
Debian 12 和 13 不會安裝 rsyslog。它們的記錄只在 journal 裡,journal 會自動跟著新時區走。
少數舊程式是從 /etc/timezone 而不是系統設定讀取時區。如果其中某個仍顯示 UTC,就把同樣的名稱寫進這個檔案,再重新啟動那個程式:
echo Asia/Tokyo | sudo tee /etc/timezone
切換之前,先檢查一下 crontab。原本依 UTC 03:00 寫的 0 3 * * *,現在會在東京時間 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。
選哪個方案
主機名稱和時區不用錢,所以任何方案都可以:小型 Linux 伺服器用 Nano,每月 $3;Windows Server 2022 用 Windows-Small,每月 $11。所有方案都在 VPS 頁面,付款方式為 Base、Ethereum 或 Polygon 網路上的 USDT、USDC 或 ETH。
評論
目前還沒有評論。歡迎成為第一位。