آموزش کامل همگام‌سازی دو وب‌سرور Apache با استفاده از Rsync پرینت


# 🔄 آموزش کامل همگام‌سازی دو وب‌سرور Apache با استفاده از Rsync

در محیط‌هایی که نیاز به **Load Balancing**، **Fault Tolerance** یا داشتن یک سرور پشتیبان (Backup) وجود دارد، همگام‌سازی فایل‌های وب‌سایت بین دو سرور Apache بسیار مهم است. ابزار **`rsync`** یکی از سریع‌ترین و ساده‌ترین راه‌حل‌ها برای این کار است.

---

## 🧰 پیش‌نیازها

* دو سرور لینوکسی با Apache نصب‌شده
* دسترسی root یا sudo به هر دو سرور
* فعال‌بودن SSH بین سرورها
* نصب بودن `rsync` (به‌طور پیش‌فرض در بیشتر توزیع‌ها وجود دارد)

---

## 📌 ساختار سناریو

* سرور اول (اصلی): `web1.example.com` (IP: `192.168.1.10`)
* سرور دوم (مقصد): `web2.example.com` (IP: `192.168.1.11`)
* مسیر سایت: `/var/www/html`

---

## 🗝️ مرحله اول: تنظیم احراز هویت SSH با کلید

روی سرور اول (مبدأ) کلید SSH بسازید:

```bash
ssh-keygen -t rsa
```

سپس کلید عمومی را به سرور دوم منتقل کنید:

```bash
ssh-copy-id root@192.168.1.11
```

حالا بدون وارد کردن رمز عبور می‌توانید با SSH به سرور دوم وصل شوید:

```bash
ssh root@192.168.1.11
```

---

## 🔁 مرحله دوم: اجرای Rsync برای همگام‌سازی فایل‌ها

### دستور پایه:

```bash
rsync -avz --delete /var/www/html/ root@192.168.1.11:/var/www/html/
```

توضیح سوئیچ‌ها:

* `-a`: حالت آرشیو (حفظ مجوزها، مالکیت، زمان‌)
* `-v`: نمایش جزئیات
* `-z`: فشرده‌سازی حین انتقال
* `--delete`: حذف فایل‌هایی که در سرور مقصد حذف شده‌اند

> **نکته مهم**: حتماً دقت کنید مسیر مبدأ انتهایش `/` داشته باشد تا محتویات دایرکتوری منتقل شود نه خود دایرکتوری.

---

## 🕓 مرحله سوم: اجرای زمان‌بندی خودکار با Cron

اگر می‌خواهید این همگام‌سازی به‌صورت خودکار انجام شود:

```bash
sudo crontab -e
```

افزودن کران‌جاب برای هر ۱۵ دقیقه:

```bash
*/15 * * * * rsync -az --delete /var/www/html/ root@192.168.1.11:/var/www/html/
```

---

## 🔒 مرحله چهارم: تنظیم مجوزها و امنیت

* اطمینان حاصل کنید فقط کاربر `www-data` (یا معادل آن در توزیع شما) به فایل‌ها دسترسی دارد.
* اجرای `rsync` با کاربر محدود و بدون دسترسی کامل به `root` توصیه می‌شود.
* می‌توانید از SSH key محدود (restricted) یا استفاده از `rsync daemon` با محدودیت IP بهره بگیرید.

---

## ✅ مرحله پنجم: تست و بررسی صحت همگام‌سازی

روی سرور اصلی:

```bash
echo "Test $(date)" > /var/www/html/testfile.txt
```

چند دقیقه صبر کرده یا کران‌جاب را دستی اجرا کنید، سپس بررسی کنید که فایل روی سرور دوم ایجاد شده است:

```bash
ssh root@192.168.1.11 ls -l /var/www/html/testfile.txt
```

---

## ⚙️ مرحله اختیاری: همگام‌سازی فقط فایل‌های تغییر یافته

```bash
rsync -avz --delete --update /var/www/html/ root@192.168.1.11:/var/www/html/
```

سوئیچ `--update` از بازنویسی فایل‌های جدیدتر در مقصد جلوگیری می‌کند.

---

## 📌 نکته تکمیلی: همگام‌سازی دو طرفه؟

`rsync` برای همگام‌سازی یک‌طرفه طراحی شده است. اگر به همگام‌سازی **دوطرفه** نیاز دارید، بهتر است از ابزارهایی مانند:

* `Unison`
* `Lsyncd`
* یا `Syncthing`

استفاده کنید.

---

## ✅ نتیجه‌گیری

با استفاده از `rsync` می‌توان به‌سادگی و با کارایی بالا دو سرور Apache را همگام‌سازی کرد. این روش برای سناریوهای High Availability، Load Balancing، یا تهیه نسخه پشتیبان بسیار مفید است.

 


آیا این پاسخ به شما کمک کرد؟

  • 0
« برگشت