CentOS’tan Rocky Linux’a Geçiş Rehberi

CentOS 8’in Aralık 2021’de yaşam sonu ilan etmesiyle birlikte, milyonlarca sunucu sahibi “şimdi ne yapacağız?” sorusuyla baş başa kaldı. Red Hat’in bu kararı sysadmin dünyasında gerçek bir deprem etkisi yarattı. Rocky Linux, tam da bu boşluğu doldurmak için ortaya çıktı ve bugün kurumsal Linux dünyasının en güvenilir alternatiflerinden biri haline geldi. Eğer hâlâ CentOS 7 veya CentOS 8 üzerinde çalışan sunucularınız varsa, bu rehber tam size göre.

Neden Rocky Linux?

Rocky Linux, CentOS’un kurucusu Gregory Kurtzer tarafından başlatıldı. Yani aslında “ruhunu” aynı adamdan alıyor. RHEL (Red Hat Enterprise Linux) ile %100 binary uyumlu olması, mevcut yazılımlarınızın, betiklerinizin ve konfigürasyonlarınızın büyük çoğunluğunun olduğu gibi çalışacağı anlamına geliyor.

Pratik açıdan bakıldığında şu avantajlar öne çıkıyor:

  • RHEL uyumluluğu: RPM paketleri, yum/dnf depoları neredeyse bire bir çalışıyor
  • Uzun destek süresi: Her major sürüm için 10 yıl destek taahhüdü
  • Aktif topluluk: Mattermost, forums ve IRC kanallarıyla canlı bir ekosistem
  • Kurumsal destek seçenekleri: CIQ gibi şirketler ücretli destek sunuyor
  • ELevate projesi: CentOS 7’den bile doğrudan yükseltme yapılabiliyor

Geçiş Öncesi Hazırlık

Bir sunucuya dokunmadan önce hazırlık yapmak, sonradan saç yolmaktan çok daha iyidir. Önce sisteminizi iyi tanıyın.

Mevcut Sistemin Envanterini Çıkarmak

Hangi paketlerin yüklü olduğunu, hangi servislerin çalıştığını ve ne tür özelleştirmeler yaptığınızı belgeleyin.

# Yüklü tüm paketleri listele
rpm -qa --queryformat '%{NAME} %{VERSION} %{RELEASE}n' | sort > /root/packages_before.txt

# Çalışan servisleri listele
systemctl list-units --state=running --type=service > /root/services_before.txt

# Açık portları kaydet
ss -tlnp > /root/ports_before.txt

# Disk kullanımı
df -h > /root/disk_before.txt

# Önemli konfigürasyon dosyalarını yedekle
tar -czf /root/configs_backup.tar.gz /etc/

Bu çıktıları sadece sunucuda değil, harici bir yerde de saklayın. Geçiş sonrasında karşılaştırma yapmanız gerekebilir.

Snapshot veya Tam Yedek Alma

Eğer sanal bir makine üzerindeyseniz, geçişe başlamadan önce mutlaka bir snapshot alın. Fiziksel sunucularda ise:

# LVM snapshot alma (eğer LVM kullanıyorsanız)
lvcreate -L 20G -s -n root_snapshot /dev/vg0/root

# Veya rsync ile uzak yedek
rsync -avz --exclude='/proc' --exclude='/sys' --exclude='/dev' 
  --exclude='/run' --exclude='/tmp' 
  / backup-server:/backups/$(hostname)-$(date +%Y%m%d)/

Yedeği almadan geçiş yapmak, emniyet kemersiz araba kullanmak gibidir. Belki bir şey olmaz, ama olmadığında çok pişman olursunuz.

CentOS 8’den Rocky Linux 8’e Migrate2Rocky ile Geçiş

CentOS 8 hâlâ çalışıyorsa (yani EOL olmasına rağmen sunucunuz ayakta duruyor), migrate2rocky script’i en temiz geçiş yöntemi.

migrate2rocky Script’ini İndirme ve Çalıştırma

# Script'i indir
curl -O https://raw.githubusercontent.com/rocky-linux/rocky-tools/main/migrate2rocky/migrate2rocky.sh

# İzinleri ver
chmod +x migrate2rocky.sh

# Önce dry-run ile ne olacağını gör
bash migrate2rocky.sh -r

# Gerçek geçişi başlat
bash migrate2rocky.sh -r 2>&1 | tee /root/migration_log.txt

Script ne yapıyor peki? Şu adımları otomatik olarak gerçekleştiriyor:

  • CentOS repolarını kaldırıyor
  • Rocky Linux repolarını ekliyor
  • Tüm paketleri Rocky Linux eşdeğerleriyle değiştiriyor
  • Kernel ve temel sistem bileşenlerini güncelliyor
  • OS release dosyalarını düzeltiyor

Geçiş işlemi sunucu hızına ve yüklü paket sayısına göre 15 dakika ile 1 saat arasında sürebilir. Script tamamlandıktan sonra sistemi yeniden başlatmanız gerekiyor:

reboot

Yeniden başlatma sonrasında kontrol edin:

# Rocky Linux olduğunu doğrula
cat /etc/os-release

# Kernel versiyonunu kontrol et
uname -r

# Paket sayısını karşılaştır
rpm -qa | wc -l

CentOS 7’den Rocky Linux 8’e ELevate ile Yükseltme

CentOS 7 kullananlar için iş biraz daha karmaşık. Doğrudan bir major versiyon atlaması yapıyorsunuz. AlmaLinux ekibinin geliştirdiği ELevate projesi burada devreye giriyor.

ELevate Kurulumu ve Kullanımı

# ELevate repo'sunu ekle
yum install -y http://repo.almalinux.org/elevate/elevate-release-latest-el7.noarch.rpm

# Leapp ve Rocky Linux için migration araçlarını yükle
yum install -y leapp-upgrade leapp-data-rocky

# Sistem ön kontrolünü çalıştır
leapp preupgrade

# Raporu incele
cat /var/log/leapp/leapp-report.txt

leapp preupgrade komutu çalıştırıldığında, sisteminizdeki sorunları ve uyumsuzlukları listeleyen ayrıntılı bir rapor üretir. Bu raporu mutlaka okuyun. Görmezden gelirseniz, yükseltme sırasında veya sonrasında ciddi sorunlarla karşılaşabilirsiniz.

Yaygın karşılaşılan sorunları ve çözümlerini aşağıda ele alıyoruz, ama önce gerçek yükseltmeyi başlatalım:

# Ön kontrol sorunlarını giderdikten sonra yükseltmeyi başlat
leapp upgrade

# Sistem yeniden başlayacak ve GRUB'dan yükseltme moduna girecek
# Bu süreç 30-60 dakika sürebilir, müdahale etmeyin

# Yükseltme tamamlandıktan sonra versiyon kontrolü
cat /etc/rocky-release

Yaygın ELevate Sorunları

PAM modülleri sorunu: Eski PAM konfigürasyonları zaman zaman uyumsuzluk yaratır.

# PAM konfigürasyonunu yedekle ve sıfırla
authconfig --updateall

Eski kernel modülleri: Bazı üçüncü parti kernel modülleri Rocky 8 ile gelmeyebilir. Özellikle ZFS, bazı network driver’ları veya storage modülleri.

# Yüklü kernel modüllerini listele
lsmod | grep -v "^Module" > /root/modules_before.txt

# ELevate sonrasında karşılaştır
lsmod | grep -v "^Module" > /root/modules_after.txt
diff /root/modules_before.txt /root/modules_after.txt

Geçiş Sonrası Kontroller

Sistem ayağa kalktıktan sonra yapmanız gereken kontroller var. Bunları atlamayın.

Temel Sistem Sağlık Kontrolü

# Servis durumlarını kontrol et
systemctl --failed

# Kritik servisleri tek tek doğrula
systemctl status sshd
systemctl status firewalld
systemctl status chronyd

# SELinux durumunu kontrol et
sestatus

# Güvenlik güncellemelerini uygula
dnf update -y

# Eski kernel'ları temizle (isteğe bağlı, ama temizlik için iyi)
dnf remove --oldinstallonly --setopt installonly_limit=2 kernel

Ağ Konfigürasyonunu Doğrulama

Geçiş sırasında network interface isimleri bazen değişebilir. Özellikle eth0 veya ens192 gibi isimlerde tutarsızlıklar yaşanabilir.

# Interface isimlerini kontrol et
ip link show

# Bağlantıyı test et
ping -c 4 8.8.8.8

# DNS çözümlemesini kontrol et
nslookup google.com

# Firewall kurallarını kontrol et
firewall-cmd --list-all

Eğer ağ arayüzü ismi değiştiyse ve /etc/sysconfig/network-scripts/ altındaki dosyalar hâlâ eski isimle duruyorsa:

# Eski interface adını bul
ls /etc/sysconfig/network-scripts/

# Gerekirse yeniden adlandır veya NetworkManager ile düzenle
nmcli connection show
nmcli connection modify "eski-baglanti-adi" connection.id "yeni-baglanti-adi"

Üçüncü Parti Repoları Güncelleme

EPEL, Remi, Percona veya benzeri üçüncü parti repolarınız varsa bunları Rocky Linux versiyonlarıyla değiştirmeniz gerekiyor.

# EPEL'i Rocky Linux için yükle
dnf install -y epel-release

# Remi reposu (PHP için yaygın kullanılır)
dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm

# Percona (MySQL/MariaDB için)
# Percona'nın kendi sitesinden Rocky 8 uyumlu repo paketini indirin

# Tüm repoları listele ve durumlarını kontrol et
dnf repolist all

Gerçek Dünya Senaryosu: LAMP Sunucusu Geçişi

Diyelim ki bir web sunucunuz var. Apache, MySQL/MariaDB ve PHP çalışıyor. Geçiş öncesi ve sonrası dikkat etmeniz gerekenler:

Apache Konfigürasyonu

# Geçiş öncesi apache konfigürasyonunu yedekle
cp -r /etc/httpd /root/httpd_backup_$(date +%Y%m%d)

# Geçiş sonrası apache durumunu kontrol et
systemctl status httpd

# Konfigürasyonu test et
httpd -t

# Eğer modüller eksikse yeniden yükle
dnf install -y mod_ssl mod_rewrite

# Virtual host konfigürasyonlarını kontrol et
ls /etc/httpd/conf.d/
apachectl -S

MariaDB / MySQL Kontrolü

Veritabanı geçişler sırasında en kritik bileşendir. Veri kaybı yaşanmamalı.

# Geçiş öncesi tüm veritabanlarını dışa aktar
mysqldump -u root -p --all-databases --single-transaction 
  --routines --triggers --events 
  > /root/all_databases_backup_$(date +%Y%m%d).sql

# Geçiş sonrası MySQL/MariaDB durumunu kontrol et
systemctl status mariadb

# Veritabanlarının sağlığını kontrol et
mysqlcheck -u root -p --all-databases --auto-repair

# Versiyon uyumluluğunu kontrol et
mysql -u root -p -e "SELECT VERSION();"

Eğer MariaDB versiyonu geçiş sırasında güncellendiyse, mysql_upgrade çalıştırmanız gerekebilir:

mysql_upgrade -u root -p
systemctl restart mariadb

PHP Versiyonu Kontrolü

CentOS 7 üzerinde PHP 7.2 veya 7.4 çalışıyorsa ve Rocky 8’e geçtiyseniz, varsayılan PHP versiyonu değişmiş olabilir.

# Mevcut PHP versiyonunu kontrol et
php -v

# Mevcut PHP modüllerini listele
php -m

# Farklı PHP versiyonuna ihtiyaç varsa (örnek: PHP 8.1)
dnf module list php
dnf module enable php:8.1
dnf install -y php php-fpm php-mysqlnd php-gd php-xml php-mbstring

# PHP-FPM konfigürasyonunu kontrol et
systemctl status php-fpm
php-fpm -t

SELinux ve Güvenlik Duvarı Ayarları

Geçiş sonrasında SELinux bazen beklenmedik şekillerde servis kesintilerine neden olabilir. Hemen kapatmak yerine, logları inceleyin ve gerekli izinleri verin.

# SELinux loglarını incele
ausearch -m AVC -ts recent | audit2why

# Gerekli SELinux boolean'larını kontrol et
# Örnek: Apache'nin ağa bağlanabilmesi için
getsebool httpd_can_network_connect
setsebool -P httpd_can_network_connect on

# Özel portlar için SELinux port etiketi
semanage port -l | grep http

# Yeni port eklemek gerekirse
semanage port -a -t http_port_t -p tcp 8080

Firewall kuralları da geçiş sonrasında gözden geçirilmeli:

# Mevcut kuralları listele
firewall-cmd --list-all-zones

# Gerekli servisleri ekle
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

# Kontrol et
firewall-cmd --list-services

Rocky Linux’a Özgü Optimizasyonlar

Rocky Linux’a geçtikten sonra, sistemi daha iyi kullanmak için birkaç şeyi düzenleyebilirsiniz.

DNF Konfigürasyonu

# DNF'yi hızlandır
cat >> /etc/dnf/dnf.conf << 'EOF'
fastestmirror=True
max_parallel_downloads=10
deltarpm=True
EOF

# Otomatik güvenlik güncellemeleri için dnf-automatic kur
dnf install -y dnf-automatic

# Sadece güvenlik güncellemelerini otomatik uygula
sed -i 's/apply_updates = no/apply_updates = yes/' /etc/dnf/automatic.conf
sed -i 's/upgrade_type = default/upgrade_type = security/' /etc/dnf/automatic.conf

systemctl enable --now dnf-automatic.timer

PowerTools / CRB Reposunu Aktifleştirme

Rocky Linux 8’de bazı development paketleri ve bağımlılıklar için PowerTools (Rocky 9’da CRB olarak geçiyor) reposuna ihtiyaç duyabilirsiniz.

# Rocky Linux 8
dnf config-manager --set-enabled powertools

# Rocky Linux 9
dnf config-manager --set-enabled crb

# Doğrulama
dnf repolist | grep -i power

Geçiş Sonrası Performans Karşılaştırması

Geçişin başarılı olduğunu doğrulamak için başlangıçta aldığınız envanter dosyalarıyla karşılaştırma yapın:

# Paket listesini karşılaştır
rpm -qa --queryformat '%{NAME} %{VERSION} %{RELEASE}n' | sort > /root/packages_after.txt
diff /root/packages_before.txt /root/packages_after.txt | head -50

# Servis durumlarını karşılaştır
systemctl list-units --state=running --type=service > /root/services_after.txt
diff /root/services_before.txt /root/services_after.txt

# Başarısız servis var mı?
systemctl --failed --no-pager

# Sistem loglarında kritik hata var mı?
journalctl -p err -b 0 --no-pager | tail -50

Sık Karşılaşılan Sorunlar ve Çözümleri

Sorun: migrate2rocky.sh script’i “This system is not running CentOS 8” hatası veriyor.

Çözüm: /etc/os-release dosyasını kontrol edin. Özelleştirilmiş bir kurulumda bu dosya değiştirilmiş olabilir. Script’i --force parametresiyle deneyebilirsiniz, ama önce nedenini araştırın.

Sorun: Geçiş sonrası GRUB Rocky Linux kernelini göstermiyor.

# GRUB'u yeniden oluştur
grub2-mkconfig -o /boot/grub2/grub.cfg

# UEFI sistemlerde
grub2-mkconfig -o /boot/efi/EFI/rocky/grub.cfg

Sorun: Bazı RPM paketleri hâlâ CentOS imzasıyla işaretli.

# CentOS imzalı paketleri bul
rpm -qa --queryformat '%{NAME} %{SIGPGP:pgpsig}n' | grep -i centos

# Rocky Linux GPG anahtarını içe aktar
rpm --import https://dl.rockylinux.org/pub/rocky/RPM-GPG-KEY-Rocky-8

Sorun: Python 2/Python 3 uyumsuzlukları.

Rocky Linux 8 varsayılan olarak Python 3 kullanıyor. Eski Python 2 betikleriniz varsa:

# Python 2.7'yi yükle (eğer gerekiyorsa)
dnf install -y python2
alternatives --set python /usr/bin/python2

# Ya da python3'e geçişi kolaylaştır
2to3 -w eski_betik.py

Sonuç

CentOS’tan Rocky Linux’a geçiş, kulağa ürkütücü gelse de doğru hazırlıkla gayet yönetilebilir bir süreç. migrate2rocky.sh CentOS 8 için gerçekten iyi çalışıyor, ELevate ise CentOS 7’den geçiş için sağlam bir alternatif sunuyor. Yine de her iki yöntemde de altın kural aynı: yedek al, raporu oku, test et, sonra geçiş yap.

Production ortamlar için önce bir test veya staging sunucusunda deneyin. Geçişi gece yarısı veya düşük trafik saatlerinde yapın. Geçiş sırasında biri ekran başında hazır beklesin. Ve mutlaka bir geri dönüş planınız olsun.

Rocky Linux topluluğu oldukça aktif ve belgeler sürekli güncelleniyor. Bir sorunla karşılaştığınızda forums.rockylinux.org veya resmi Mattermost kanalları gerçek bir destek kaynağı haline geldi. CentOS’un bıraktığı boşluğu Rocky Linux layıkıyla doldurmuş durumda, geçişi ne kadar erken yaparsanız o kadar rahat edersiniz.

Yorum yapın