ค้นหาเว็บไซต์

วิธีซิงค์เว็บเซิร์ฟเวอร์/เว็บไซต์ Apache สองแห่งโดยใช้ Rsync


มีบทช่วยสอนมากมายบนเว็บเพื่อจำลองหรือสำรองไฟล์เว็บของคุณด้วยวิธีการต่างๆ ที่นี่ฉันกำลังสร้างบทความนี้เพื่อใช้อ้างอิงในอนาคต และที่นี่ฉันจะใช้คำสั่ง Linux ที่ง่ายและหลากหลาย เพื่อสร้างการสำรองข้อมูลเว็บไซต์ของคุณ บทช่วยสอนนี้จะช่วยให้คุณซิงค์ข้อมูลระหว่างเว็บเซิร์ฟเวอร์ทั้งสองของคุณด้วย “Rsync

วัตถุประสงค์ของการสร้างมิเรอร์ของ เว็บเซิร์ฟเวอร์ ของคุณด้วย Rsync คือ หากเว็บเซิร์ฟเวอร์หลักของคุณล้มเหลว เซิร์ฟเวอร์สำรองของคุณสามารถเข้าควบคุมเพื่อลดเวลาหยุดทำงานของเว็บไซต์ของคุณ วิธีสร้างการสำรองข้อมูลเว็บเซิร์ฟเวอร์นี้ดีและมีประสิทธิภาพสำหรับธุรกิจเว็บขนาดเล็กและขนาดกลาง

ข้อดีของการซิงค์เว็บเซิร์ฟเวอร์

ข้อดีหลักของการสร้างการสำรองข้อมูลเว็บเซิร์ฟเวอร์ด้วย rsync มีดังนี้:

  1. Rsync จะซิงค์เฉพาะไบต์และบล็อกข้อมูลที่มีการเปลี่ยนแปลงเท่านั้น
  2. Rsync มีความสามารถในการตรวจสอบและลบไฟล์และไดเร็กทอรีเหล่านั้นที่เซิร์ฟเวอร์สำรองที่ถูกลบออกจากเว็บเซิร์ฟเวอร์หลัก
  3. ดูแลสิทธิ์ ความเป็นเจ้าของ และคุณลักษณะพิเศษขณะคัดลอกข้อมูลจากระยะไกล
  4. นอกจากนี้ยังรองรับโปรโตคอล SSH เพื่อถ่ายโอนข้อมูลในลักษณะที่เข้ารหัส ดังนั้นคุณจึงมั่นใจได้ว่าข้อมูลทั้งหมดจะปลอดภัย
  5. Rsync ใช้วิธีการบีบอัดและคลายการบีบอัดในขณะที่ถ่ายโอนข้อมูลซึ่งใช้แบนด์วิธน้อยกว่า

วิธีซิงค์เว็บเซิร์ฟเวอร์ Apache สองเครื่อง

ดำเนินการตั้งค่า rsync เพื่อสร้างมิเรอร์ของเว็บเซิร์ฟเวอร์ของคุณ ที่นี่ ฉันจะใช้เซิร์ฟเวอร์สองเครื่อง

เซิร์ฟเวอร์หลัก
  1. ที่อยู่ IP: 192.168.0.100
  2. ชื่อโฮสต์: webserver.example.com
เซิร์ฟเวอร์สำรอง
  1. ที่อยู่ IP: 192.168.0.101
  2. ชื่อโฮสต์: backup.example.com

ขั้นตอนที่ 1: ติดตั้งเครื่องมือ Rsync

ในกรณีนี้ ข้อมูลเว็บเซิร์ฟเวอร์ของ webserver.example.com จะถูกมิเรอร์บน backup.example.com และเพื่อดำเนินการดังกล่าวก่อนอื่น เราต้องติดตั้ง Rsync บนเซิร์ฟเวอร์ทั้งสองโดยใช้คำสั่งต่อไปนี้

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

ขั้นตอนที่ 2: สร้างผู้ใช้เพื่อเรียกใช้ Rsync

เราสามารถตั้งค่า rsync ด้วยผู้ใช้ root แต่ด้วยเหตุผลด้านความปลอดภัย คุณสามารถสร้างผู้ใช้ที่ไม่มีสิทธิพิเศษบนเว็บเซิร์ฟเวอร์หลัก เช่น webserver.example.com เพื่อเรียกใช้ rsync

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

ที่นี่ฉันได้สร้างผู้ใช้ “tecmint” และกำหนดรหัสผ่านให้กับผู้ใช้

ขั้นตอนที่ 3: ทดสอบการตั้งค่า Rsync

ถึงเวลาทดสอบการตั้งค่า rsync บนเซิร์ฟเวอร์สำรองของคุณ (เช่น backup.example.com) และในการดำเนินการดังกล่าว โปรดพิมพ์คำสั่งต่อไปนี้

[root@backup www]# rsync -avzhe ssh [email :/var/www/ /var/www
ผลลัพธ์ตัวอย่าง
[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 ของคุณทำงานได้ดีและกำลังซิงค์ข้อมูลอยู่ ฉันใช้ “/var/www” เพื่อถ่ายโอน คุณสามารถเปลี่ยนตำแหน่งโฟลเดอร์ได้ตามความต้องการของคุณ

ขั้นตอนที่ 4: ซิงค์อัตโนมัติด้วยการเข้าสู่ระบบแบบไม่ใช้รหัสผ่าน SSH

ตอนนี้เราตั้งค่า rsync เสร็จแล้ว และตอนนี้ก็ถึงเวลาตั้งค่า cron สำหรับ rsync เนื่องจากเรากำลังจะใช้ rsync กับโปรโตคอล SSH ssh จะขอการตรวจสอบสิทธิ์ และหากเราไม่ระบุรหัสผ่านให้กับ cron ก็จะไม่ทำงาน เพื่อให้ทำงาน cron ได้อย่างราบรื่น เราจำเป็นต้องตั้งค่าการเข้าสู่ระบบ ssh แบบไม่ต้องใช้รหัสผ่านสำหรับ rsync

ในตัวอย่างนี้ ฉันกำลังดำเนินการในฐานะ รูท เพื่อรักษา การเป็นเจ้าของไฟล์ เช่นกัน คุณสามารถทำได้สำหรับผู้ใช้อื่นเช่นกัน

ขั้นแรก เราจะสร้างคีย์ สาธารณะ และ ส่วนตัว พร้อมด้วยคำสั่งต่อไปนี้บนเซิร์ฟเวอร์สำรองข้อมูล (เช่น backup.example.com)

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

เมื่อคุณป้อนคำสั่งนี้ โปรดอย่าระบุข้อความรหัสผ่านและคลิกป้อนสำหรับข้อความรหัสผ่านที่ว่างเปล่า เพื่อที่ rsync cron จะไม่จำเป็นต้องใช้รหัสผ่านใดๆ ในการซิงค์ข้อมูล

ผลลัพธ์ตัวอย่าง
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 +         |
|    . .          |
+-----------------+

ขณะนี้ คีย์ สาธารณะ และ ส่วนตัว ของเราได้ถูกสร้างขึ้นแล้ว และเราจะต้องแชร์คีย์กับเซิร์ฟเวอร์หลัก เพื่อให้เว็บเซิร์ฟเวอร์หลักรู้จักเครื่องสำรองข้อมูลนี้และจะอนุญาตให้เข้าสู่ระบบได้ โดยไม่ต้องถามรหัสผ่านขณะซิงค์ข้อมูล

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

ตอนนี้ลองเข้าสู่ระบบเครื่องด้วย “ssh '[email '” และเช็คอิน .ssh/authorized_keys

[root@backup html]# [email 

ตอนนี้เราเสร็จสิ้นการแชร์คีย์แล้ว หากต้องการทราบข้อมูลเชิงลึกเพิ่มเติมเกี่ยวกับ รหัสผ่าน SSH น้อยลงในการเข้าสู่ระบบ คุณสามารถอ่านบทความของเราได้

  1. เข้าสู่ระบบแบบไร้รหัสผ่าน SSH ใน 5 ขั้นตอนง่ายๆ

ขั้นตอนที่ 5: กำหนดเวลา Cron เพื่อทำการซิงค์อัตโนมัติ

มาตั้งค่า cron สำหรับสิ่งนี้กัน หากต้องการตั้งค่า cron โปรดเปิดไฟล์ crontab ด้วยคำสั่งต่อไปนี้

[root@backup ~]# crontab –e

มันจะเปิดไฟล์ /etc/crontab เพื่อแก้ไขด้วยโปรแกรมแก้ไขเริ่มต้นของคุณ ในตัวอย่างนี้ ฉันกำลังเขียน cron เพื่อรันทุกๆ 5 นาทีเพื่อซิงค์ข้อมูล

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

คำสั่ง cron และ rsync ข้างต้นเพียงซิงค์ “/var/www/” จาก เว็บเซิร์ฟเวอร์หลัก ไปยัง เซิร์ฟเวอร์สำรอง ในทุก ๆ 5 นาที. คุณสามารถเปลี่ยนการกำหนดค่าเวลาและตำแหน่งโฟลเดอร์ได้ตามความต้องการของคุณ หากต้องการสร้างสรรค์และปรับแต่งมากขึ้นด้วยคำสั่ง Rsync และ Cron คุณสามารถดูบทความโดยละเอียดเพิ่มเติมได้ที่:

  1. 10 คำสั่ง Rsync เพื่อซิงค์ไฟล์/โฟลเดอร์ใน Linux
  2. 11 ตัวอย่างการตั้งเวลา Cron ใน Linux