Rsync Kullanarak İki Apache Web Sunucusunu/Web Sitesini Senkronize Etme


Web dosyalarınızı farklı yöntemlerle yansıtmak veya yedeklemek için web'de pek çok eğitim mevcut, burada bu makaleyi gelecekte referans olarak kullanmak üzere oluşturuyorum ve burada Linux'un çok basit ve çok yönlü bir komutunu kullanacağım web sitenizin bir yedeğini oluşturmak için. Bu eğitim, iki web sunucunuz arasındaki verileri "Rsync" ile senkronize etmenize yardımcı olacaktır.

Rsync ile Web Sunucunuzun bir yansımasını oluşturmanın amacı, ana web sunucunuzun arızalanması durumunda, web sitenizin kapalı kalma süresini azaltmak için yedekleme sunucunuzun görevi devralabilmesidir. Web sunucusu yedeği oluşturmanın bu yolu, küçük ve orta ölçekli web işletmeleri için çok iyi ve etkilidir.

Web Sunucularını Senkronize Etmenin Avantajları

Rsync ile web sunucusu yedeği oluşturmanın başlıca avantajları şunlardır:

  1. Rsync yalnızca değişen baytları ve veri bloklarını senkronize eder.
  2. Rsync, ana web sunucusundan silinen yedekleme sunucusundaki dosya ve dizinleri kontrol etme ve silme yeteneğine sahiptir.
  3. Verileri uzaktan kopyalarken izinler, sahiplikler ve özel niteliklerle ilgilenir.
  4. Ayrıca verileri şifrelenmiş bir şekilde aktarmak için SSH protokolünü de destekler, böylece tüm verilerin güvende olduğundan emin olursunuz.
  5. Rsync, daha az bant genişliği tüketen verileri aktarırken sıkıştırma ve sıkıştırmayı açma yöntemini kullanır.

İki Apache Web Sunucusu Nasıl Eşitlenir

Web sunucunuzun bir yansımasını oluşturmak için rsync'i ayarlamaya devam edelim. Burada iki sunucu kullanacağım.

Ana Sunucu
  1. IP Adresi: 192.168.0.100
  2. Ana makine adı: web sunucusu.example.com
Yedekleme Sunucusu
  1. IP Adresi: 192.168.0.101
  2. Ana makine adı: backup.example.com

Adım 1: Rsync Aracını yükleyin

Bu durumda, webserver.example.com'un web sunucusu verileri backup.example.com'a yansıtılacaktır. Bunun için öncelikle aşağıdaki komut yardımıyla her iki sunucuya da Rsync yüklememiz gerekiyor.

[root@tecmint]# yum install rsync        [On Red Hat based systems]
[root@tecmint]# apt-get install rsync    [On Debian based systems]

Adım 2: Rsync'i çalıştıracak bir Kullanıcı oluşturun

Rsync'i root kullanıcıyla kurabiliriz, ancak güvenlik nedeniyle, rsync'i çalıştırmak için ana web sunucusunda, yani webserver.example.com üzerinde ayrıcalığı olmayan bir kullanıcı oluşturabilirsiniz.

[root@tecmint]# useradd tecmint
[root@tecmint]# passwd tecmint

Burada “tecmint” adlı bir kullanıcı oluşturdum ve kullanıcıya bir şifre atadım.

3. Adım: Rsync Kurulumunu Test Edin

Yedekleme sunucunuzdaki (örn. backup.example.com) rsync kurulumunuzu test etme zamanı geldi ve bunu yapmak için lütfen aşağıdaki komutu yazın.

[root@backup www]# rsync -avzhe ssh [email :/var/www/ /var/www
Örnek Çıktı
[email 's password:

receiving incremental file list
sent 128 bytes  received 32.67K bytes  5.96K bytes/sec
total size is 12.78M  speedup is 389.70

Rsync'inizin artık kesinlikle sorunsuz çalıştığını ve verileri senkronize ettiğini görebilirsiniz. Aktarmak için “/var/www” kullandım; klasör konumunu ihtiyaçlarınıza göre değiştirebilirsiniz.

4. Adım: SSH Parolasız Giriş ile Senkronizasyonu Otomatikleştirin

Artık rsync kurulumlarını tamamladık ve şimdi rsync için bir cron kurmanın zamanı geldi. SSH protokolü ile rsync kullanacağımız için ssh kimlik doğrulama isteyecek ve eğer cron'a şifre vermezsek çalışmayacaktır. Cron'un sorunsuz çalışması için rsync için şifresiz ssh oturum açma ayarlamamız gerekir.

Bu örnekte, dosya sahipliğini korumak için root olarak yapıyorum, siz de alternatif kullanıcılar için yapabilirsiniz.

İlk olarak, yedekleme sunucusunda (ör. backup.example.com) aşağıdaki komutları içeren genel veözel bir anahtar oluşturacağız.

[root@backup]# ssh-keygen -t rsa -b 2048

Bu komutu girdiğinizde, lütfen parola girmeyin ve Parolayı boşalt için enter'a tıklayın; böylece rsync cron, verileri senkronize etmek için herhangi bir parolaya ihtiyaç duymaz.

Örnek Çıktı
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
9a:33:a9:5d:f4:e1:41:26:57:d0:9a:68:5b:37:9c:23 [email 
The key's randomart image is:
+--[ RSA 2048]----+
|          .o.    |
|           ..    |
|        ..++ .   |
|        o=E *    |
|       .Sooo o   |
|       =.o o     |
|      * . o      |
|     o +         |
|    . .          |
+-----------------+

Artık Genel ve Özel anahtarımız oluşturuldu ve ana web sunucusunun bu yedekleme makinesini tanıması ve oturum açmasına izin vermesi için onu ana sunucuyla paylaşmamız gerekecek. Verileri senkronize ederken herhangi bir şifre sormadan.

[root@backup html]# ssh-copy-id -i /root/.ssh/id_rsa.pub [email 

Şimdi "ssh '[email '' ile makinede oturum açmayı deneyin ve .ssh/authorized_keys adresini kontrol edin.

[root@backup html]# [email 

Artık anahtar paylaşımımız bitti. SSH şifresi daha az giriş hakkında daha ayrıntılı bilgi edinmek için bu konudaki makalemizi okuyabilirsiniz.

  1. 5 Kolay Adımda SSH Şifresiz Giriş Yapın

Adım 5: Senkronizasyonu Otomatikleştirmek için Cron'u Programlayın

Bunun için bir cron kuralım. Cron kurulumu için lütfen crontab dosyasını aşağıdaki komutla açın.

[root@backup ~]# crontab –e

Varsayılan düzenleyicinizle düzenlemek için /etc/crontab dosyasını açacaktır. Bu örnekte, verileri senkronize etmek için her 5 dakikada bir çalıştıracak bir cron yazıyorum.

*/5        *        *        *        *   rsync -avzhe ssh [email :/var/www/ /var/www/

Yukarıdaki cron ve rsync komutu, "/var/www/" dosyasını ana web sunucusundan her bir yedek sunucuya senkronize eder. 5 dakika. İhtiyaçlarınıza göre saat ve klasör konumu yapılandırmasını değiştirebilirsiniz. Daha yaratıcı olmak ve Rsync ve Cron komutuyla özelleştirmek için şu adresteki daha ayrıntılı makalelerimize göz atabilirsiniz:

  1. Linux'ta Dosyaları/Klasörleri Senkronize Etmek için 10 Rsync Komutu
  2. Linux'ta 11 Cron Planlama Örneği