Web sitenizi yeni bir sunucuya kesintisiz taşıyın
Siteyi, veritabanlarını ve e-postayı kesintisiz taşımak için adım adım plan: TTL'yi düşürün, kopyalayıp test edin, eşitleyin, DNS'i değiştirin, eskiyi tutun.
- Orta
- 25 dk okuma
- Güncellendi
Denendiği sistemler: Ubuntu 24.04 LTS, Ubuntu 26.04 LTS, Debian 12, Debian 13, Windows 11, macOS Tahoe 26
Bu sayfada
- Başlamadan önce
- Zaman çizelgesi
- 1. adım: TTL'yi düşürün
- 2. adım: Dosyaları kopyalayın
- 3. adım: Veritabanlarını kopyalayın
- 4. adım: DNS'e dokunmadan test edin
- 5. adım: SSL'i hazırlayın
- 6. adım: Dondurun, eşitleyin ve geçin
- 7. adım: E-postayı taşıyın (taşınıyorsa)
- WordPress sitesini taşımak
- 8. adım: Eski sunucuyu kapatın
- Sorun giderme
- Sonraki adımlar
Bir web sitesi taşıması, yeni sunucu ziyaretçiler yönlendirilmeden önce hazır ve test edilmiş olduğunda sorunsuz geçer. Bu rehber envanter ve DNS hazırlığından geçişe ve temizliğe kadar iş sırasını, ayrıca genellikle sorun çıkaran ayrıntıları verir: veritabanları, SSL ve e-posta.
Başlamadan önce
Gerekenler:
- Eski sunucuya ve yeni sunucuya SSH veya kontrol paneli erişimi; yeni sunucuda sitenizin ihtiyaç duyduğu yazılımlar kurulu olmalı (web sunucusu, PHP veya başka bir çalışma ortamı, veritabanı sunucusu).
- DNS'inizin yönetildiği yere erişim; bu kayıt firmanız, eski sağlayıcınız veya bir DNS sağlayıcısı olabilir.
- Son eşitleme için, tercihen sakin bir saatte bir bakım aralığı.
Eski sağlayıcının sizin için yaptığı her şeyin bir envanterini çıkarın:
- Web sitesi dosyaları; yüklenen dosyalar ve sitenin okuduğu, web kökü dışındaki her şey dahil.
- Veritabanları ve sitenin kullandığı kullanıcı adları ile şifreler.
- E-posta: posta kutuları, yönlendirmeler ve postayı onlara ulaştıran MX kayıtları.
- DNS kayıtları: A ve AAAA, CNAME, MX ve SPF, DKIM, DMARC ile site doğrulamaları gibi TXT kayıtları.
- Zamanlanmış görevler (cron işleri), arka plan işçileri ve sitenin ihtiyaç duyduğu yazılım sürümleri; örneğin PHP sürümü ve eklentileri.
- SSL sertifikaları, yönlendirmeler ve yeniden yazma kuralları.
Alan adı eski sağlayıcının ad sunucularını kullanıyorsa, geçişten önce tüm kayıtlar yeni DNS sağlayıcısında yeniden oluşturulmalıdır.
Zaman çizelgesi
| Ne zaman | Ne yapılır |
|---|---|
| İki gün önce | Değiştireceğiniz kayıtların TTL'sini düşürün |
| Bir gün önce | Yeni sunucuyu hazırlayın: yazılım, dosyalar, veritabanları, posta kutuları, cron işleri, DNS kayıtları |
| Test | Yeni sunucuyu hosts dosyası üzerinden test edin |
| Taşıma günü | Değişiklikleri dondurun, son eşitlemeyi yapın, DNS'i değiştirin |
| Geçişten sonra | SSL'i, kayıtları ve postayı kontrol edin |
| Yaklaşık bir hafta sonra | Eski sunucuyu kapatın ve TTL'yi yeniden yükseltin |
1. adım: TTL'yi düşürün
Çözümleyiciler her kaydı TTL'nin izin verdiği süre boyunca önbellekte tutar. Mevcut TTL'yi kontrol edin; adın hemen arkasındaki sayıdır:
dig +noall +answer example.com ADNS sağlayıcınızda A, AAAA (e-posta da taşınıyorsa MX) kayıtlarının TTL'sini 300 saniyeye indirin. Bunu taşımadan en az bir eski TTL süresi önce yapın ki çözümleyiciler uzun değeri zamanında unutsun.
Doğrulama: eski TTL süresi geçtikten sonra dig komutu 300 veya daha düşük bir değer gösterir.
2. adım: Dosyaları kopyalayın
Yeni sunucudan dosyaları SSH üzerinden rsync ile çekin. Adresi ve yolları kendi değerlerinizle değiştirin:
rsync -avz -e ssh olduser@198.51.100.20:/var/www/example.com/ /var/www/example.com/Sondaki eğik çizgiler klasörün içeriğini kopyalar. rsync yalnızca değişenleri aktarır; bu yüzden daha sonraki son eşitleme hızlıdır. Dosyaların, yeni sunucuda web sunucusunun veya PHP'nin çalıştığı kullanıcıya ait olduğundan emin olun.
3. adım: Veritabanlarını kopyalayın
Eski sunucuda her veritabanını dışa aktarın. --single-transaction, siteyi kilitlemeden InnoDB tablolarının tutarlı bir kopyasını alır:
MySQL
mysqldump --single-transaction --routines --triggers -u dbuser -p dbname > dbname.sqlMariaDB
mariadb-dump --single-transaction --routines --triggers -u dbuser -p dbname > dbname.sqlDosyayı yeni sunucuya kopyalayın (örneğin scp veya rsync ile), orada veritabanını ve kullanıcısını oluşturun, ardından içe aktarın:
MySQL
mysql -u dbuser -p dbname < dbname.sqlMariaDB
mariadb -u dbuser -p dbname < dbname.sqlVeritabanı sunucusu, adı, kullanıcısı veya şifresi değiştiyse sitenin yapılandırma dosyasında güncelleyin.
4. adım: DNS'e dokunmadan test edin
Hosts dosyanıza bir satır ekleyerek yalnızca kendi bilgisayarınızı yeni sunucuya yönlendirin:
203.0.113.10 example.com www.example.comDosya Linux ve macOS'ta /etc/hosts, Windows'ta C:\Windows\System32\drivers\etc\hosts konumundadır (yönetici olarak düzenleyin). Değişikliğin etkili olması için bilgisayarınızın DNS önbelleğini temizleyin:
Windows
ipconfig /flushdnsmacOS
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponderLinux
sudo resolvectl flush-cachesŞimdi sayfaları, formları, girişleri, ödeme adımını ve giden e-postayı kontrol edin. Doğrulama: yeni sunucudaki web sunucusunun erişim kaydı sizin isteklerinizi gösterir. İşiniz bitince hosts satırını kaldırın.
5. adım: SSL'i hazırlayın
Ziyaretçiler asla sertifika uyarısı görmemelidir. Ücretsiz Let's Encrypt sertifikaları genellikle HTTP üzerinden doğrulanır; bu, alan adının yeni sunucuyu göstermesini gerektirir, bu yüzden geçişten hemen sonra alınır. Sertifikaya geçişten önce ihtiyacınız varsa alan adı nereyi gösterirse göstersin çalışan DNS doğrulamasını kullanın ya da ilk günler için mevcut sertifikayı ve özel anahtarını yeni sunucuya kopyalayın. Bkz. SSL sertifikası kurun.
6. adım: Dondurun, eşitleyin ve geçin
- İçerik değişikliklerini, siparişleri ve kayıtları, örneğin bir bakım moduyla durdurun.
- adımdaki
rsynckomutunu yeniden çalıştırın, ardından veritabanlarını bir kez daha dışa ve içe aktarın.
- adımdaki
- A kaydını (IPv6 kullanıyorsanız AAAA kaydını da) yeni sunucunun adresine çevirin ya da DNS bölgesinin tamamı taşınıyorsa ad sunucularını değiştirin. Bkz. alan adını sunucunuza yönlendirin.
- Yeni sunucuda dondurmayı kaldırın.
Doğrulama: dig +short example.com A yeni adresi döndürür ve önbellekteki yanıtların süresi doldukça eski sunucunun erişim kaydı sessizleşir.
7. adım: E-postayı taşıyın (taşınıyorsa)
MX kayıtlarını değiştirmeden önce posta kutularını yeni sunucuda oluşturun, ardından mevcut mesajları bir IMAP taşıma aracıyla kopyalayın. Geçişten sonra eski posta kutularını birkaç gün tutun; çünkü bazı göndericiler DNS önbellekleri dolana kadar eski sunucuya teslim etmeye devam eder. Yeni posta sunucusu için SPF, DKIM ve DMARC kayıtlarını yeniden oluşturun; aksi halde giden postalar reddedilebilir. Bkz. e-posta teslim edilebilirliği.
WordPress sitesini taşımak
WordPress adresini veritabanında, serileştirilmiş ayarların içinde de saklar. Alan adı aynı kalıyorsa dosyaların ve veritabanının düz bir kopyası yeterlidir. Adres değişiyorsa serileştirilmiş veriyi anlayan WP-CLI ile değiştirin. Önce deneme çalıştırması yapın:
wp search-replace 'https://old.example.com' 'https://example.com' --skip-columns=guid --dry-run
wp search-replace 'https://old.example.com' 'https://example.com' --skip-columns=guidwp-config.php içindeki veritabanı bilgilerini güncelleyin ve taşımadan sonra tüm önbellek katmanlarını temizleyin: eklenti önbellekleri, web sunucusu önbelleği ve varsa CDN.
8. adım: Eski sunucuyu kapatın
Eski sunucuya artık trafik veya posta gelmediğinde, genellikle yaklaşık bir hafta sonra, son bir yedek alın ve hizmeti iptal edin. Kayıtlarınızın TTL'sini yeniden, örneğin 3600 saniyeye yükseltin.
Sorun giderme
Bazı ziyaretçiler hâlâ eski sunucuya ulaşıyor. Çözümleyicileri eski kaydı önbelleğe almış. Eski TTL süresinin dolmasını bekleyin; o zamana kadar eski sunucuyu çalışır tutun.
Site veritabanı bağlantı hatası gösteriyor. Yapılandırma dosyasındaki veritabanı adı, kullanıcısı, şifresi veya sunucusu yeni sunucuyla eşleşmiyor. Girişi mysql -u dbuser -p dbname ile test edin.
Sayfalar çalışıyor ama görseller veya stiller eksik. Yeni sunucudaki dosya izinleri veya sahipliği ya da hâlâ eski adresi gösteren mutlak URL'ler.
Geçişten sonra postalar kayboluyor. MX kayıtlarının yeni posta sunucusunu gösterdiğini ve eski posta kutularının birkaç gün daha kontrol edildiğini doğrulayın.
Sonraki adımlar
- Değiştirdiğiniz kayıtları anlayın: yeni bir alan adı için DNS temelleri.
- Yeni sunucuyu güvenli hale getirin: yeni bir Linux sunucuyu güvenli hale getirin.
- HyperDC'ye mi taşınıyorsunuz? Bize yazın ve ne çalıştırdığınızı anlatın.
Sık sorulan sorular
DNS yayılımı ne kadar sürer?
Kaydın TTL değerine bağlıdır. 300 saniyelik TTL ile çoğu çözümleyici yeni adresi dakikalar içinde kullanır; bir günlük TTL ile bazıları eski adresi bir güne kadar tutar. Ad sunucusu değişiklikleri, kayıt kuruluşundaki TTL'ler nedeniyle bir iki gün sürebilir.
Sitemi taşımak için alan adımı transfer etmem gerekir mi?
Hayır. Alan adı mevcut kayıt firmasında kalabilir; yalnızca DNS kayıtlarını veya ad sunucularını yeni sunucuyu gösterecek şekilde değiştirirsiniz. Her şeyi tek yerde toplamak isterseniz alan adını daha sonra transfer edebilirsiniz.
Sunucu değiştirmek arama sıralamamı etkiler mi?
URL'ler, içerik ve yönlendirmeler aynı kaldığı ve site erişilebilir olduğu sürece etkilemez. Yeni sunucunun aynı sayfaları döndürdüğünü, HTTPS'in çalıştığını ve robots.txt dosyasının arama motorlarını engellemediğini kontrol edin.
HyperDC müşterileri için web sitesi taşıyor mu?
Birçok VPS ve VDS planı özellikleri arasında mevcut sağlayıcınızdan ücretsiz taşıma listeler; web hostingte ise ekibimiz dosyalarınızı, veritabanlarınızı ve e-postanızı taşımanıza yardım eder. Ne çalıştırdığınızı ve nerede barındırdığınızı yazın, adımları size iletelim.
E-postayı web sitesiyle aynı anda mı taşımalıyım?
Zorunlu değil. E-posta MX kayıtlarını izler; önce web sitesini taşıyıp postayı olduğu yerde bırakabilirsiniz. Posta kutuları da taşınacaksa önce yeni sunucuda oluşturun, mesajları IMAP ile kopyalayın ve MX kayıtlarını değiştirdikten sonra eski kutuları birkaç gün tutun.
Kaynaklar
- download.samba.org/pub/rsync/rsync.1
- dev.mysql.com/doc/refman/8.4/en/mysqldump.html
- mariadb.com/kb/en/mariadb-dump
- developer.wordpress.org/cli/commands/search-replace
- learn.microsoft.com/en-us/windows-server/administration/windows-com…
- freedesktop.org/software/systemd/man/latest/resolvectl.html
- letsencrypt.org/docs/challenge-types