刚拿到的 VPS 时区可能是 UTC 或美国时区,日志时间与本地不符会给排查问题带来麻烦;语言环境和主机名使用默认值也不够规范。本文用三条核心命令——timedatectllocalectlhostnamectl——带你快速完成服务器基础信息的设置。

本文要点

  • 用 timedatectl 设置时区并开启 NTP 自动校时
  • 用 localectl 配置语言环境(locale)
  • 用 hostnamectl 设置服务器主机名
  • 验证三项设置均已生效

设置时区

查看当前时区:

timedatectl

输出的 Time zone 一行显示当前设置。将时区改为中国标准时间(CST,UTC+8):

timedatectl set-timezone Asia/Shanghai

常见时区参考:

时区timedatectl 标识偏移
中国标准时间Asia/ShanghaiUTC+8
协调世界时UTCUTC+0
美国东部America/New_YorkUTC-5/-4
欧洲中部Europe/BerlinUTC+1/+2

查看所有可用时区:

timedatectl list-timezones | grep Asia

开启 NTP 自动校时

时区设好后,确保 NTP 时间同步已启用,让服务器时间始终保持准确:

timedatectl set-ntp true
# 验证
timedatectl | grep 'NTP'

NTP 校时的重要性

服务器时间不准会影响日志时间戳、SSL 证书校验、数据库记录等。开启 NTP 让系统自动与时间服务器同步,无需手动调整。

设置语言环境(Locale)

locale 决定系统的语言、字符集和时间日期格式。生产服务器推荐使用 UTF-8 编码:

# 查看当前 locale
localectl

# 设置为英文 UTF-8(稳定性最佳,推荐服务器使用)
localectl set-locale LANG=en_US.UTF-8

# 若需要中文 locale(需先安装语言包)
apt install -y locales
dpkg-reconfigure locales

服务器推荐英文 locale

即使你习惯中文,服务器 locale 建议保持 en_US.UTF-8。中文 locale 可能导致部分脚本的日期输出格式不兼容,也容易让日志出现乱码。

设置后重新登录才能生效,或临时生效:

export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8

设置主机名

主机名会显示在命令提示符中,也用于日志标识,建议设置成有意义的名称:

# 查看当前主机名
hostname

# 设置新主机名
hostnamectl set-hostname my-vps

# 验证
hostnamectl

同时更新 /etc/hosts 文件,避免 sudo 时出现无法解析主机名的警告:

nano /etc/hosts

确保有一行:

127.0.1.1   my-vps

验证三项配置

重新登录后逐一验证:

timedatectl          # 检查时区与 NTP
localectl            # 检查 locale
hostname             # 检查主机名
date                 # 确认当前时间正确

小结

  • timedatectl set-timezone Asia/Shanghai 设置中国时区
  • timedatectl set-ntp true 开启自动校时
  • localectl set-locale 设置字符集,服务器推荐 en_US.UTF-8
  • hostnamectl set-hostname 设置主机名,记得同步 /etc/hosts

常见问题

设置时区后需要重启服务器吗?

不需要,timedatectl 立即生效。但 SSH 会话的提示符可能还显示旧时区,重新登录后刷新即可。

NTP 是什么,必须开启吗?

NTP(网络时间协议)让服务器自动与互联网时间服务器同步。建议始终开启,时间不准会影响 SSL 证书和日志可读性。

主机名在哪里显示?

主机名显示在命令行提示符中(如 root@my-vps:~#),也用于系统日志的标识,便于多台服务器的日志区分。