3 dk okuma

Ubuntu Sunucularda Saat Dilimini İstanbul'a Ayarlamak

linuxubuntusistem yönetimi

Yeni kurulan Ubuntu sunucular varsayılan olarak UTC saat diliminde gelir. Çoğu zaman bu doğru tercih — uluslararası servisler arası tutarlılık sağlar. Ama Türkiye'de fiziksel olarak çalışan bir ekiple, müşterisi yerel olan bir altyapıyı yönetiyorsanız sunucularda Europe/Istanbul tercih edilir.

Neden timezone önemli?

  • Log tutarlılığı: Olay araştırırken “saat 17:42'de ne oldu” sorusunun cevabı, sunucu UTC'deyse akıl yormalı işe dönüşür.
  • Cron job'lar: “Her gece 02:00'da backup” diyorsanız bu hangi saatte? UTC ise yaz saatinde 05:00'da olacak, müşteri raporları sabah hazır olmayacak.
  • SSL sertifika doğrulaması: Sertifika geçerlilik aralığı sunucunun “şu an” algısına bağlı. Timezone hatalı olursa erken/geç algılama olabilir.
  • Müşteri raporları: Yıllık dashboard'da “Pazartesi”ler hangi saatlerle başladı sorusunda tutarlılık.

1. Mevcut timezone'u kontrol et

İki yöntem var. İlki sembolik link'e bakmak:

$ ls -l /etc/localtime
lrwxrwxrwx 1 root root 27 May 10 14:32 /etc/localtime -> /usr/share/zoneinfo/Etc/UTC

Çıktıda /usr/share/zoneinfo/Etc/UTC görüyorsanız sunucu hala UTC'de. Daha okunaklı ikinci yöntem timedatectl status:

$ timedatectl status
               Local time: Wed 2026-05-13 11:24:01 UTC
           Universal time: Wed 2026-05-13 11:24:01 UTC
                 RTC time: Wed 2026-05-13 11:24:01
                Time zone: Etc/UTC (UTC, +0000)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

2. Mevcut timezone listesini gör (İstanbul filtrele)

Ubuntu, IANA timezone veritabanını taşır. Tüm timezone'ları listeleyebilir, ihtiyacımıza göre filtreleyebiliriz:

$ timedatectl list-timezones | grep -i istanbul
Europe/Istanbul

Sonuç tek satır: Europe/Istanbul. Bu IANA standardı kanonik isim — Türkiye için doğru karşılık.

3. Timezone'u Europe/Istanbul olarak ayarla

$ sudo timedatectl set-timezone Europe/Istanbul

Çıktı vermez (UNIX prensibi: sessizlik = başarı). systemd-timesyncd ve chronyd gibi NTP servisleri yeni timezone'u otomatik algılar. Reboot gerekmez.

4. Doğrula

$ timedatectl status
               Local time: Wed 2026-05-13 14:24:08 +03
           Universal time: Wed 2026-05-13 11:24:08 UTC
                 RTC time: Wed 2026-05-13 11:24:08
                Time zone: Europe/Istanbul (+03, +0300)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

Time zone satırı Europe/Istanbul (+03, +0300) diyor. Local time UTC'den 3 saat ileride. İşlem tamam.

Hangi servisler etkilenir?

Çoğu servis timezone değişikliğini anında algılar (nginx, systemd journald, cron). Ama bazıları cache'lediği için restart gerekir:

  • MySQL/MariaDB: SELECT @@global.time_zone, @@session.time_zone; ile kontrol et. Default SYSTEM ise yeni timezone'u alır — değilse my.cnf'de manuel.
  • PostgreSQL: postgresql.conf'da explicit timezone = ayarı varsa onu da güncelle.
  • Application server (Node, Python, Java): Çoğu uygulama sunucu timezone'unu environment'tan alır. Process'leri restart edin.
  • Mevcut cron job'lar: cron daemon yeni timezone'u alır ama çalışmakta olan crontab girişleri için sudo systemctl restart cron önerilir.

RTC (donanım saati) hakkında not

Yukarıdaki çıktıda RTC in local TZ: no gördünüz mü? Bu Linux için doğru ayar. RTC (motherboard'daki real-time clock) UTC'de tutulur, OS local time'a çevirir. Dual-boot Windows sistemlerde sorun çıkar (Windows RTC'yi local zannediyor) ama Linux-only sunucularda RTC in local TZ: no kalmalı.

Sonuç

Tek satır sudo timedatectl set-timezone Europe/Istanbul komutu yeterli, ama sunucu kurulumunun ilk 5 dakikasında halledilmesi gereken bir konu. Daha sonra unutulup bir gece yarısı “backup log'u neden 3 saat öncesini gösteriyor” sorusuyla boğuşmak istemezsiniz.

Bu konuda yardım ister misiniz?

Yazıdaki konularla ilgili kurumsal projeniz varsa veya uygulamada takıldıysanız, bize yazın.

Diğer yazılarımız