Skip to content
VDS · オペレーティングシステム

タイムゾーン、ロケール、システム言語

タイムゾーンの設定方法、時刻同期の有効化、UTF-8 ロケールの設定、ログとデータベースを UTC で保つべき理由について説明します。

更新日 2026年8月23日

新品のマシンは通常 UTC で動作し、ロケールは最小限しか入っていません。ログを読んだりスケジュールタスクを実行したりしない限り、気づくことはありません。しかし cron、メール、レポートが関わってくると、時刻とエンコーディングが非常に重要になります。

タイムゾーン

timedatectl
timedatectl list-timezones | grep Moscow
timedatectl set-timezone Europe/Moscow

timedatectl はローカル時刻、UTC、同期状態を表示します。System clock synchronized: yes の行は、クロックがネットワーク経由で同期されていることを意味します。

同期が無効になっている場合:

timedatectl set-ntp true
systemctl status systemd-timesyncd

AlmaLinux と CentOS Stream では、通常 chronyd が時刻を管理します:

systemctl enable --now chronyd
chronyc tracking

ロケール

ロケールはメッセージの言語、エンコーディング、数値と日付の形式を決定します。最低限必要なのは UTF-8 です。そうでなければ、ロシア語のファイル名やプログラムの出力が疑問符に変わってしまいます。

Debian と Ubuntu:

apt install -y locales
dpkg-reconfigure locales
localectl set-locale LANG=ru_RU.UTF-8

AlmaLinux と CentOS Stream:

dnf install -y glibc-langpack-ru
localectl set-locale LANG=ru_RU.UTF-8

確認:

locale
locale -a | grep -i utf

変更は新しいセッションに適用されます。SSH で再度ログインしてください。

コンソールのキーボードレイアウト

/hosting/vds/m/<id> パネルの「コンソール」タブにある「画面」(VNC)ビューは、キー入力をそのまま転送します。そこで直接キリル文字を入力する必要がある場合:

localectl set-keymap ru

サービスにはこれは必要ありません。UTF-8 で十分です。

UTC のままにしておくべきもの

システム自体とデータベースは UTC のままにし、ローカル時刻は人に表示するときだけ使うのが合理的です。

  • UTC のログはマシン間で比較でき、時計が変更されても飛びません。
  • UTC のデータベースは期間の計算を壊しません。
  • cron はシステムのタイムゾーンで時刻を計算します。タイムゾーンを変更した場合は、スケジュールを読み直してください。
systemctl restart cron
crontab -l

よくある間違い

症状原因解決策
setlocale: LC_ALL: cannot change localeクライアントが独自のロケールを送信しているが、サーバーに存在しないロケールを生成するか、クライアント側で LANG の転送を削除する
ファイル名の文字化けロケールが UTF-8 ではないLANG=ru_RU.UTF-8 を設定して再度ログインする
時刻が数分「ずれた」同期が無効になっているtimedatectl set-ntp true
タスクが誤った時刻に実行されたタイムゾーンを変更したがスケジュールはそのままcrontab を再計算する

バックアップジョブとログを設定する前にタイムゾーンを変更してください。稼働中のマシンでタイムゾーンを変更すると、すべてのスケジュールを一度に見直すことになります。