vsftpd and mirror server

วันนี้ผมได้ทำ mirror server โดยใช้ vsftpd (http://vsftpd.beasts.org/)  และ Emirror (http://sourceforge.net/projects/emirror/)  

วิธีการติดตั้ง vsftpd สามารถดูได้ที่นี่ http://rd.cc.psu.ac.th/content/view/20/46/

ไฟล์ /etc/vsftpd.conf มีสิ่งที่อาจต้องเพิ่มเติมคือ

# เพื่อเปลี่ยนโฮมของ ftp จาก /var/ftp ไปที่ /home/ftp  และควรแก้ home ของ ftp user ให้เป็นที่ /home/ftp ด้วย

anon_root=/home/ftp

# กำหนดจำนวน clients สูงสุดที่เข้าใช้งานได้

max_clients=50

# กำหนดจำนวน concurrent session ต่อ IP address

max_per_ip=4

# สร้าง banner ที่เมื่อ user login จะเห็นข้อความในไฟล์นี้

banner_file=/etc/vsftpd/banner_file 

หรือต้องการให้มีข้อความส่งถึงผู้ใช้ในแต่ละไดเรกทอรี  สามารถทำโดยสร้างไฟล์ .message  แต่ต้องเปิด option นี้ด้วย

dirmessage_enable=YES

สำหรับ Emirror ต้องแก้ไขไฟล์ general.cfg ที่ /etc/emirror  เช่นตัวอย่างนี้

[general]
Download-url: ftp://ftp.yourdomain.com/pub
Parent: /home/ftp/pub/
Parent-Format: None
Output-directory: /home/httpd/html/mirrors
Output-format: HTML
Tries: 5
Wait: 30
Email: -
Max-parallel: 6
Recursive: Yes
Follow-Symlinks: Yes
Continue: Yes
Username: anonymous
Password: anonymous@localhost
Error-MailCmd: mail -s "EMirror Error Report" ftp@localhost
Mail-Users: /etc/emirror/email-addresses
Mail-User-Cmd: mail -s "EMirror EMail-Information"
Log-Template: /etc/emirror/logfile.template
Index-Template: /etc/emirror/index.template
Index-Directory: /home/httpd/html/mirrors
Summary-Template: /etc/emirror/summary.template

สิ่งที่ควรแก้ไขมีดังนี้

Download-url: ftp url ของเรา
Parent: ไดเรกทอรีที่เก็บไฟล์ในเซิร์ฟเวอร์
Output-directory: ไฟล์ output html ของผลการทำของโปรแกรมแล้ว
Output-format: รูปแบบของการ output
Max-parallel:  conncurent ftp session
Continue: ทำการเขียนไฟล์ต่อจากเพิมที่มีอยู่แล้ว
Username: anonymous
Password: anonymous@localhost
Error-MailCmd: mail -s “EMirror Error Report” ftp@localhost
Mail-Users: /etc/emirror/email-addresses

แก้ไขไฟล์ /etc/emirror/email-address โดยใส่อีเมลที่ต้องการให้ Emirror ส่งรายงานถึงหลัง list: เช่น
list: name@email.com

ใน /etc/emirror/unused จะมีตัวอย่างของไฟล์ config ของการ mirror จาก site ต่างๆ  แต่หากต้องการเช่น  ผมต้องการ mirror CentOS 4.6 สามารถทำโดยการสร้างไฟล์ centos4.6.cfg  โดยใส่คำสั่งต่อไปนี้

[mirror]
Title: CentOS Linux 4.6 (ISOs)
Category: Distributions
Url: ftp://mirrors.kernel.org/centos/4.6/isos/
Parent: /home/ftp/pub/linux/distributions/centos/4.6/isos
Download-url: ftp://ftp.engr.tu.ac.th/pub/linux/distributions/centos/4.6/isos
Output-file: cenos4.6.html
Exclude: HEADER.*|SRPMS|alpha|ia64|s390|s390x
Recursive: Yes

อธิบายส่วนที่สำคัญได้ดังนี้ 

Url: เป็น url ที่ต้องการ mirror
Parent: ไดเรกทอรีที่ต้องการเก็บไฟล์ที่ mirror มา
Download-url: ตำแหน่งของ ftp ของไฟล์ที่ mirror มาในเครื่องของเรา
Exclude: ไฟล์หรือไดเรอกทอรีที่ไม่ต้องการ mirror

รายละเอียดอื่นๆ สามารถดูได้โดยใช้คำสั่ง man emirror  สำหรับ
วิธีการเรียกใช้งาน emirror ทำได้ดังนี้

emirror -v  --passive -c /etc/emirror/general.cfg -d /etc/emirror/active
-v  : verbose
--passive : Passive mode
-c : generation configuration file
-d : configuration file directory

เรื่องตลกอย่างหนึ่งเกิดขึ้นหลังจากที่ผมติดตั้งทุกอย่างเรียบร้อย  เพราะผมพยายามที่จะ mirror ไฟล์จาก Thai National Mirror เพราะใช้ ftp protocol ช้ากว่า http protocol มาก  ทำให้ผมต้องหันมาใช้ wget ในการช่วยโหลดไฟล์ด้วย โดยใช้คำสั่งดังตัวอย่างนี้

wget --mirror --no-directories --no-host-directories  http://mirror.in.th/centos/5.1/isos/x86_64/

ต้องขออภัยที่ไม่ได้ลงรายละเอียดมากนักครับ 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *