آموزش همگام‌سازی (Sync) دو سرور/وبسایت آپاچی با استفاده از Rsync – سطح پیشرفته پرینت


 

 

## 🎯 آموزش همگام‌سازی (Sync) دو سرور/وبسایت آپاچی با استفاده از Rsync – سطح پیشرفته

در پروژه‌های بزرگ یا حتی وبسایت‌های با ترافیک متوسط، داشتن **دو نسخه همگام از سرور وب** (مثلاً برای Load Balancing، High Availability یا Disaster Recovery) بسیار مهم است.

یکی از روش‌های ساده، سریع و کارآمد برای **همگام‌سازی فایل‌های وبسایت** بین دو سرور آپاچی، استفاده از **rsync** است.

---

# 📦 سناریوی فرضی

- **سرور اصلی (Master):** `192.168.1.10`
- **سرور ثانویه (Backup/Slave):** `192.168.1.20`
- دایرکتوری وبسایت: `/var/www/html/`

---

# 🛠️ پیش‌نیازها

- نصب بودن `rsync` روی هر دو سرور
- امکان اتصال SSH بین سرورها
- ترجیحاً اتصال با کلید SSH بدون نیاز به رمز عبور (برای اتوماسیون)

---

# 🔥 مراحل گام به گام

### 1. نصب Rsync در هر دو سرور

**Ubuntu/Debian:**
```bash
sudo apt update
sudo apt install rsync
```

**CentOS/RHEL/Fedora:**
```bash
sudo dnf install rsync
```

---

### 2. تنظیم احراز هویت SSH بدون پسورد

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

تولید کلید SSH:
```bash
ssh-keygen
```
سپس کپی کلید عمومی به سرور دوم:
```bash
ssh-copy-id [email protected]
```
(در صورت نیاز جای `user` را با کاربر مناسب تغییر دهید)

---

### 3. اجرای دستور Rsync برای همگام‌سازی اولیه

از سرور اصلی به سرور پشتیبان:

```bash
rsync -avz --delete -e ssh /var/www/html/ [email protected]:/var/www/html/
```

**توضیح گزینه‌ها:**
- `-a` : حالت آرشیو (حفظ پرمیشن‌ها، مالکیت و غیره)
- `-v` : نمایش جزییات بیشتر
- `-z` : فشرده‌سازی برای سرعت بالاتر
- `--delete` : حذف فایل‌های اضافه در سرور مقصد
- `-e ssh` : استفاده از SSH برای ارتباط امن

---

# ⏰ اجرای خودکار با کران‌جاب (Cron)

برای اینکه وبسایت همیشه به‌روز بماند، می‌توانیم یک کران‌جاب اضافه کنیم:

ویرایش کران:
```bash
crontab -e
```

اضافه کردن خط زیر برای همگام‌سازی هر ۳۰ دقیقه یکبار:

```bash
*/30 * * * * rsync -avz --delete -e ssh /var/www/html/ [email protected]:/var/www/html/
```

---

# 🛡️ نکات امنیتی مهم

- فقط پورت‌های مورد نیاز (مثل SSH) روی هر دو سرور باز باشد.
- دسترسی‌های `rsync` را محدود به مسیر موردنظر کنید (در صورت نیاز می‌توانید `chroot` تنظیم کنید).
- می‌توانید کاربر خاصی برای فقط عملیات rsync ایجاد کنید.

---

# 🧠 نکات حرفه‌ای (سطح پیشرفته)

- **rsync over daemon**: به جای SSH می‌توانید یک Rsync Daemon راه‌اندازی کنید برای کارایی بیشتر در شبکه‌های داخلی.
- **فیلتر فایل‌ها**: با استفاده از `--exclude` و `--include` می‌توانید فقط فایل‌های خاصی را همگام‌سازی کنید.
- **Monitoring**: بعد از هر Sync می‌توانید لاگ ایجاد کنید و در صورت خطا به مدیر سرور ایمیل ارسال شود.

مثلاً:
```bash
rsync -avz --delete /var/www/html/ [email protected]:/var/www/html/ >> /var/log/rsync_websync.log 2>&1
```

---

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

با استفاده از `rsync` می‌توانید بدون نیاز به راهکارهای پیچیده، به راحتی:
- دو وبسایت را همگام نگه دارید
- از دیتاها بکاپ زنده داشته باشید
- زیرساخت آماده‌ی Load Balancing یا Failover ایجاد کنید.

**سریع، سبک و قابل اطمینان!** 🚀

---

دوست داری در ادامه یک نمونه **اسکریپت کامل Bash** هم برات بنویسم که:
- همگام‌سازی کنه
- لاگ بسازه
- در صورت خطا بهت ایمیل بزنه؟

اگر مایلی، بگو تا برات طراحی کنم! ✅📦
دوست داری؟ 🌟

 


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

  • 0
« برگشت