Thursday 18 March 2010

ทิปตอน restore Drupal จาก backup


ตอน restore Drupal จาก backup บางทีเจอปัญหา เลยเขียนมาแบ่งปันกันครับ ^^
  1. ขึ้น error อะไรก็ไม่รู้ ทั้งๆที่ restore ทั้ง database และ ไฟล์ ครบสมบูรณ์  อันที่เจอบ่อยๆเป็นปัญหามาจากส่วน variables และ ธีม ทำดังนี้ส่วนใหญ่แล้วจะหายดี
    • ไป override 'theme_default' ใน settings.php ให้เป็น garland (เพิ่ม $conf['theme_default'] = 'garland'; เป็นบรรทัดสุดท้าย)
    • ไปที่หน้าธีมที่ใช้อยู่ admin/build/themes/settings/xxx แก้อะไรนึดหน่อยแล้วบันทึก
    • ไปที่หน้าตั้งค่าเว็บไซต์ admin/settings/site-information แก้อะไรนึดหน่อยแล้วบันทึก
    • ไปที่หน้าระบบไฟล์ admin/settings/file-system แล้วบันทึก กรณีที่อัพโหลดไฟล์ไม่ได้
    • เรียก update.php ให้ทำงาน
    • เลิก override 'theme_default'
  2. database crash เจ้ง  ต้อง restore จาก backup แต่ตอนกำลัง restore อยู่ ซึ่งยังไม่สมบูรณ์ จะทำให้ site off-line ได้ยังไง  อันนี้งงอยู่นาน จึงคิดได้ว่า ก็ไปเปลี่ยน password ใน settings.php ให้มันผิดชั่วคราว ก็ได้แล้ว

Tuesday 16 March 2010

การกำหนด access list ใน Squid Proxy Server 2


ในตอนที่สองนี้จะอธิบายดีฟอลต์คอนฟิก acl ที่ติดตั้งมากับ Fedora 10 โดยจะแยกเป็นส่วนๆ พร้อมทั้งแนะนำวิธีการแก้ไขคอนฟิกและการ reload เซอร์วิสหลังจากการแก้ไข
ดีฟอลต์คอนฟิก acl ของ Squid เวอร์ชั่น squid-3.0.STABLE10 ที่ติดตั้งมากับ Fedora 10 จะแตกต่างจากเวอร์ชั่นก่อนๆ คือ อนุญาตเครื่องไคลเอนต์ที่มี ip address เป็น private  (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) มีสิทธิใช้ proxy ซี่งแนะนำให้มีการแก้ไขก่อนนำไปใช้งานจริง


อนุญาตให้ใช้งานและจัดการเกี่ยวกับ cache_object ได้จากในเครื่องที่ติดตั้ง (localhost)

acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8

http_access allow manager localhost
http_access deny manager
http_access allow localhost

อนุญาตเครื่องไคลเอนต์ที่มี ip address เป็น private สามารถใช้งานได้

acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
acl localnet src 172.16.0.0/12  # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network

http_access allow localnet
แนะนำให้ปิด (comment) ทั้งสี่บรรทัด ด้านบน แล้วค่อยกำหนด ip address ของไคลเอนต์ที่มีสิทธิใช้งาน proxy ได้อีกที
ปิดการอนุญาตเครื่องไคลเอนต์ที่มี ip address เป็น private
#acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
#acl localnet src 172.16.0.0/12  # RFC1918 possible internal network
#acl localnet src 192.168.0.0/16 # RFC1918 possible internal network

#http_access allow localnet

ปฏิเสธการเชื่อมต่อโดยใช้พอร์ตของเว็บไซต์ ที่ไม่ใช่พอร์ต Safe_ports

เบอร์พอร์ต Safe_ports มีดังนี้ 80, 21, 443, 70, 210, 280, 488, 597, 777, 1025-65535
acl Safe_ports port 80      # http
acl Safe_ports port 21      # ftp
acl Safe_ports port 443     # https
acl Safe_ports port 70      # gopher
acl Safe_ports port 210     # wais
acl Safe_ports port 1025-65535  # unregistered ports
acl Safe_ports port 280     # http-mgmt
acl Safe_ports port 488     # gss-http
acl Safe_ports port 591     # filemaker
acl Safe_ports port 777     # multiling http

http_access deny !Safe_ports

ปฏิเสธการเชื่อมต่อแบบ SSL ไปยังพอร์ตที่ไม่ใช่พอร์ตเบอร์ 443

acl SSL_ports port 443
acl CONNECT method CONNECT

http_access deny CONNECT !SSL_ports

ปฏิเสธการใช้งานอื่นๆ ที่ไม่ match จาก acl ที่กำหนดไว้

http_access deny all

วิธีการแก้ไขไฟล์คอนฟิก /etc/squid/squid.conf

เพื่อสะดวกในการอ้างอิงภายหลัง การแก้ไขเพิ่มเติม acl ทั้งในส่วนกำหนดชื่อ aclname และการอนุญาตหรือปฏิเสธ ในไฟล์ /etc/squid/squid.conf ให้แก้ไขใต้บรรทัด ที่มีคำว่า
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
หลังจากแก้ไขไฟล์คอนฟิกของ squid ต้องใช้คำสั่ง service reload เซอร์วิส เพื่อให้คอนฟิกใหม่มีผล
[root@proxy ~]# service squid reload
หากมีข้อผิดพลาดในคอนฟิก จะมี error ฟ้องขึ้นมา ต้องแก้ไขให้ถูกต้อง คอนฟิกใหม่ถึงจะมีผล
ตัวอย่างการกำหนด ip address ผิดในไฟล์คอนฟิก
[root@proxy ~]# service squid reload
2009/01/17 12:58:36| aclParseIpData: Bad host/IP: '192.168.1.02-'
FATAL: Bungled squid.conf line 643: acl acl_client1 src 192.168.1.02-
Squid Cache (Version 3.0.STABLE10): Terminated abnormally.
CPU Usage: 0.005 seconds = 0.001 user + 0.004 sys
Maximum Resident Size: 0 KB
Page faults with physical i/o: 0

การกำหนด access list ใน Squid Proxy Server 1


คุณสมบัติอย่างหนึ่งของ Squid Proxy Server คือสามารถกำหนดสิทธิในการใช้งาน access list ได้หลายรูปแบบ และค่อนข้างละเอียดมาก เช่นที่ยกตัวอย่างในบทความ คอนฟิก Squid Proxy Server เป็นการอนุญาตเฉพาะเครื่องไคลเอนต์ที่มี ip address ตามที่กำหนด สามารถใช้ proxy ได้
ในบทความนี้จะกล่าวถึงการกำหนดสิทธิในรูปแบบอื่นๆ ที่สามารถทำได้ ตามความต้องการ

ส่วนการคอนฟิก access list ใน Squid

ไฟล์คอนฟิกหลักของโปรแกรม Squid โดยดีฟอลต์แล้วคือไฟล์ /etc/squid/squid.conf ประกอบด้วยคอนฟิกหลายส่วน (TAG) ด้วยกัน ในบทความนี้เราจะเปลี่ยนเฉพาะในส่วน “TAG: acl” และ “TAG: http_access” เท่านั้น
คำแนะนำ สำรองไฟล์ (backup) /etc/squid/squid.conf ไว้ ก่อนการแก้ไข
การคอนฟิกจะมีสองขั้นตอนดังนี้

1) คอนฟิก TAG: acl

ขั้นแรกเพิ่มคอนฟิกในส่วน acl เพื่อกำหนดชื่อ (aclname) และชนิด (acltype) ของ access list มีรปแบบคอนฟิกดังนี้
acl    ...
คำอธิบาย
  • เป็นชื่อ acl ที่เรากำหนดเอง โดยชื่อชี้จะถูกกำหนดในขั้นตอนที่สองอีกทีว่าจะอนุญาตหรือปฏิเสธ
  • เป็นชนิด access list ที่เราจะใช้ แสดงรายละเอยดในหัวข้อถัดไป
  • เป็นค่าพารามิเตอร์ สามารถกำหนดได้หลายค่า ขึ้นอยู่กับ acltype

2) คอนฟิก TAG: http_access

ส่วนที่สองคือเพิ่มคอนฟิกในส่วน TAG: http_acces เพื่อที่จะอนุญาต (allow) หรือปฏิเสธ (deny) ชื่อ acl (aclname) ที่สร้างไว้ มีรูปแบบคอนฟิกดังนี้
http_access {allow|deny} [!] ...
คำอธิบาย
  • คอนฟิก http_access เป็นตัวกำหนดว่า aclname ที่ match ได้นั้น จะอนุญาตหรือปฏิเสธการใช้งาน
  • หากมีหลาย aclname ถูกกำหนดไว้ในบรรทัดเดียวกัน การ match ได้จะต้อง match ชื่อ aclname ทั้งหมด
  • รูปแบบการ match จะไล่เรียงตั้งแต่บรรทัดแรกจนถึงบรรทัดสุดท้ายที่ขึ้นต้นด้วย http_access
  • เครื่องหมายตกใจ ! เป็นการ match ในทางตรงกันข้าม

ชนิดของ access list

สามารถดูรายละเอียดทั้งหมดของ acltype ได้จากในไฟล์ /etc/squid/squid.conf แต่ในที่นี้ขอยกตัวอย่างมาเฉพาะที่ใช้กันบ่อยๆ  ดังนี้

กำหนด ip address : src, dst
ตัวอย่าง match ไคลเอนต์ที่มี ip address อยู่ใน subnet 192.168.1.0/24 หรือ 192.168.2.0/24
acl acl_client1 src 192.168.1.0/24 192.168.2.0/24
ตัวอย่าง match ไคลเอนต์ที่มี ip address ระหว่าง 192.168.1.1 ถึง 192.168.1.10
acl acl_range1 src 192.168.1.1-192.168.1.10
ตัวอย่าง match การเข้าเว็บไซต์ที่มี ip address 10.1.0.1 หรือ 10.9.0.22
acl acl_server1 dst 10.1.0.1/32 10.9.0.22/32

กำหนดชื่อเว็บไซต์ : dstdomain
ตัวอย่าง match การเข้าเว็บไซต์ที่มีโดเมนเนมเป็น .useless-website.com
acl acl_domain1 dstdomain .useless-website.com

กำหนดพอร์ต : port
ตัวอย่างการ match การเข้าเว็บไซต์ พอร์ต 8080 หรือ พอร์ต 9000
acl acl_port1 port 8080 9000

กำหนดช่วงเวลา : time
พารามิเตอร์ที่ใช้กำหนดช่วงเวลามีสองส่วนคือ วัน และเวลา มีรูปแบบคอนฟิกดังนี้
acl aclname time [day-abbrevs] [h1:m1-h2:m2]
คำอธิบาย
  • day-abbrevs : เป็นอักษรย่อของวัน ตามด้านล่างนี้
S – Sunday
M – Monday
T – Tuesday
W – Wednesday
H – Thursday
F – Friday
A – Saturday
  • h1:m1 เวลาเริ่มต้น
  • h2:m2 เวลาสิ้นสุด
  • h1:m1 ต้องน้อยกว่า h2:m2
ตัวอย่างการ match การเข้าเว็บไซต์ระหว่างเวลา 12:00-13:00 ตั้งแต่วันจันทร์ถึงวันศุกร์
acl acl_time1 time MTWHF 12:00-13:00

squid กำหนดช่วงเวลาในการโหลดไฟล์

กำหนดช่วงเวลา : time

พารามิเตอร์ที่ใช้กำหนดช่วงเวลามีสองส่วนคือ วัน และเวลา มีรูปแบบคอนฟิกดังนี้
acl aclname time [day-abbrevs] [h1:m1-h2:m2]
คำอธิบาย
  • day-abbrevs : เป็นอักษรย่อของวัน ตามด้านล่างนี้
S – Sunday
M – Monday
T – Tuesday
W – Wednesday
H – Thursday
F – Friday
A – Saturday
  • h1:m1 เวลาเริ่มต้น
  • h2:m2 เวลาสิ้นสุด
  • h1:m1 ต้องน้อยกว่า h2:m2
ตัวอย่างการ match การเข้าเว็บไซต์ระหว่างเวลา 12:00-13:00 ตั้งแต่วันจันทร์ถึงวันศุกร์
acl acl_time1 time MTWHF 12:00-13:00


Case:1


acl client_1 src 10.0.1.117
acl un_download_file urlpath_regex -i \.exe$ \.zip$ \.dat$ \.iso$
acl un_download_time time MTWHFAS 08:00-19:00
http_access allow client_1 !un_download_time
http_access deny un_download_time un_download_file 

Friday 12 March 2010

การเปลี่ยนชื่อ Host สำหรับตระกูล deb

สำหรับตระกูล deb 
vi /etc/hosts #แก้ทั้งชื่อ host, domain 
vi /etc/hostname 
/etc/init.d/networking restart 

วิธีแก้ Grub boot loader ของ Ubuntu 9.10



Ex. Grub loader
จากรูปตัวอย่าง จะเห็นว่า grub จะมีลิสรายการให้คุณเลือกโหลด หากคุณกดปุ่มเปิดเครื่อง แล้วปล่อยให้มันโหลดไปเอง grub มันจะเลือกไว้ที่ ubuntu และนับถอยหลัง 10 วินาที เพื่อที่จะโหลดเข้าสู่ ubuntu แต่คุณสามารถเปลี่ยนแปลงการตั้ง boot ได้พร้อมทั้งยังสามารถปรับค่าเวลานับถอยหลังได้ด้วย
 
Description
หลายท่านคงเคยเจอปัญหา หลังจากทำการติดตั้ง ubuntu ลงบนฮาร์ดดิส โดยเดิมทีนั้นมี windows ในฮาร์ดดิสอยู่แล้ว แต่อยากจะลองใช้ Ubuntu บ้าง ไรบ้าง แต่หลังจากติดตั้ง ubuntu ลงไปเป็น Os ที่สองแล้วนั้น ในขณะที่ทำการบู๊ตเข้าใช้เครื่อง คุณจะเห็นลิสรายชื่อ Os ที่มีอยู่ในเครื่องของคุณ โดยลิสนั้นจะเป็นของ ubuntu หรือที่เรียกว่า grub นั่นเอง
โดยปกติแล้ว ค่า defualt ของระบบ จะถูกตั้งค่าบู๊ตเริ่มต้นไว้ที Ubuntu เพราะเราได้ติดตั้งมันเข้าไปทีหลัง โดยค่าคอนฟิกต่างๆ จะถูกกำหนดไว้ที่ไฟล์ menu.lst แต่ปัญหาที่ผมเจอก็คือ ผมไม่เจอไฟ ล์ grub ใน Ubuntu 9.10 แต่มันเป็นไฟล์อื่นแทน ผมเลยนำวิธีการปรับค่าเพื่อการตั้ง boot เป็น window แทน ubuntu พร้อมกับปรับเวลานับถอยหลังได้อีกตะหาก มาดูกัน !!

วิธีแก้ไขลำดับการบู๊ตของ grub

step 1. เข้าโปรแกรม teminal แล้วพิมพ์คำสั่ง ตามนี้ (ubuntu 9.10)
sudo nano /boot/grub/grub.cfg
 
step 2. จากนั้นไฟล์ grub.cfg จะถูกเปิดขึ้นมา ให้ดูว่าลิสของ Window หรือลิสที่คุณต้องการให้ boot นั้นอยู่ในลำดับที่เท่าไหร่ ซึ่งรายการ boot ทั้งหมดจะมีบรรทัดที่เขียนว่า ###BEGIN โดยให้เิริ่มนับจาก 0
step 3. เมื่อได้ลิสที่ต้องการ ให้มองหาบรรทัดที่เขียนว่า set default = "0" โดย 0 จะหมายถึงลิสอันดับแรก ให้เปลี่ยนเป็นเลขลำดับที่คุณต้องการ
tip. คุณสามารถตั้งเวลานับถอยหลัง ขณะที่รอ boot โดยการกำหนดค่าตัวเลขซึ่งมีหน่วยเป็น วินาที (ค่า default คือ 10) โดยให้มองหาบรรทัดที่เขียนว่า set timeout = "10"
แล้วถ้าไม่เจอไฟล์ grub.cfg ?
ก็ลองเข้าไปที่ไฟล์ menu.lst แทน เพราะว่า ubuntu รุ่นเก่าๆ มันมีค่าคอนฟิกที่ไฟล์ menu.lst
sudo gedit /boot/grub/menu.lst

เปลี่ยน Ubuntu server แบบ command line เป็น graphic mode (GUI)


สำหรับท่านที่เพิ่งเริ่มต้นกับ ubuntu server และได้ติดตั้งมันแล้ว แต่เห็นหน้าจอเป็นแบบ text mode (Command Line Interface) นั่นหมายถึงระบบของ server ได้ติดตั้งทรัพยากรมาให้เท่าที่จำเป็น มันเลยไม่มีหน้าตาที่สวยงามเหมือนกันระบบสำหรับผู้ใช้งานทั่วไป
ดังนั้นหากท่านไม่คุ้นเคย หรือยังไม่พร้อมจะเริ่มต้นกับ CLI แล้วล่ะก็ แนะนำให้ท่านเปลี่ยนไปใช้แบบ GUI เหมือนระบบของ Desktop เถอะครับ ;j
 

เปลี่ยน ubuntu server ให้เป็นระบบ GUI

จากหน้าที่เป็น text mode ให้พิมพ์คำสั่งเพื่อติดตั้ง Desktop environment
sudo apt-get install ubuntu-desktop
 
แต่เดี๋ยวก่อน !!! หากคุณต้องการติดตั้งเพียงส่วนที่จำเป็น ก็ไม่ควรจะติดตั้งทุกอย่างที่เป็นเหมือนเครื่อง Desktop ให้เลี่ยงการติดต้องโดยใช้คำสั่งตามนี้
sudo apt-get install --no-install-recommends ubuntu-desktop


 
หลังจากทำการติดตั้งเสร็จเรียบร้อยแล้ว ให้คุณใช้คำสั่ง startx เพื่อเปลี่ยนโหมดการทำงาน
startx

Thursday 4 March 2010

วิธีการทำให้ accesss.log ของ squid ไปเขียนลงบน syslog

ผมใช้ syslog-ng ครับ
ง่าย
เพิ่ม
cache_access_log  syslog squid
ใน ไฟล์ squid.conf

แล้วเพิ่ม
filter f_remove { program("squid"); };

ใน
/etc/syslog-ng/syslog-ng.conf

ก็จบ

เปลี่ยน repo มาใช้ในไทย + วิธีสร้าง CentOS Repository ไว้ในองค์กร

ยุคนี้หลายๆคนใช้ CentOS กันเยอะ เวลา yum มันก็จะไปดึงไฟล์จาก repository ตามที่กำหนดไว้
ซึ่งหากติดตั้งแบบปกติไม่ได้มีการแก้ไขค่าใดๆก็จะเป็นการใช้ค่า repo มาตรฐาน คือดึงไฟล์จากต่างประเทศ ซึ่ง IDC บ้านเราก็รู้ๆกันอยู่ว่า bw ต่างประเทศแรงแบบไม่เกรงใจใคร  :dry:

วิธีที่หลายๆคนใช้กันอยู่ก็คือการเปลี่ยน repo มาใช้ในไทยซึ่งที่นิยมก็จะเป็นของ มหาลัยต่างๆ เช่น ku psu กับของ ISP เช่น issp ซึ่งเป็นวิธีที่ง่ายที่สุดเพราะไม่ต้องสร้าง repo เอง วิธีการก็คือแก้ไขไฟล์ /etc/yum.repo.d/CentOS-Base.repo ใหม่ดังนี้

ku mirror: http://mirror1.ku.ac.th
โหลดไฟล์ repo ได้จาก
CentOS 4.x http://mirror1.ku.ac.th/yum-centos/4/CentOS-Base.repo
CentOS 5.x http://mirror1.ku.ac.th/yum-centos/5/CentOS-Base.repo

Code: [Select]
cd /etc/yum.repo.d
mv CentOS-Base.repo CentOS-Base.repo.bak
wget http://mirror1.ku.ac.th/yum-centos/5/CentOS-Base.repo

psu mirror: http://ftp.psu.ac.th/pub/centos
โหลดไฟล์ repo ได้จาก
CentOS 4.x ftp://ftp.psu.ac.th/pub/centosrepo/CentOS4-psu.repo
CentOS 5.x ftp://ftp.psu.ac.th/pub/centosrepo/CentOS5-psu.repo

Code: [Select]
cd /etc/yum.repo.d
mv CentOS-Base.repo CentOS-Base.repo.bak
wget -o CentOS-Base.repo ftp.psu.ac.th/pub/centosrepo/CentOS5-psu.repo

เพียงเท่านี้ก็จะเป็นการเปลี่ยนมาใช้ repo ซึ่งอยู่ในประเทศทำให้ download package ต่างๆได้รวดเร็วขึ้นมาก

จากการใช้งาน repo ในไทย ปัญหาที่พบบ่อยๆคือบางครั้ง repo ก็ down ไม่สามารถโหลดไฟล์ได้
ซึ่งจะนานๆเป็นทีนึง แต่ถ้าเกิดเป็นในช่วงเวลาเร่งด่วนที่ต้องการใช้งาน ก็อาจจะหงุดหงิดเล็กน้อย แต่ก็เป็นที่ยอมรับได้


วิธีการสร้าง Local Repository

สำหรับท่านที่มีเครื่อง CentOS ภายในองค์กรจำนวนมาก การสร้าง local repo server เหมือนกับของ ku หรือ psu ที่แนะนำไปจะช่วยลดการใช้ BW ไปได้มาก เนื่องจากถึงจะเปลี่ยนมาใช้ repo ในไทยแล้วก็ตามแต่ก็อาจต้องโหลดไฟล์ผ่าน lease line หรือ adsl ซึ่งความเร็วไม่มากเท่ากับเครื่องที่วางไว้ที่ IDC นั่นเอง การสร้าง local repo ก็ง่ายๆหลักการก็คือ copy ไฟล์มาให้ครบตามที่เขามีนั้่นเอง แล้วก็แก้ไขไฟล์ CentOS-Base.repo ของเครื่องในองค์กรมาใช้ url เครื่อง local repo ของเราเอง

ซึ่งก่อนอื่นก็ต้องมีเครื่องที่จะทำหน้าที่นี้โดยเป็นเครื่องที่มี service web server เช่น apache
เมื่อได้เครื่องแล้วก็กำหนด virtual host ขึ้นมาสำหรับเก็บไฟล์ mirror ในที่นี้จะยกตัวอย่างเป็น /var/www/html และเรียกผ่านทาง ip 192.168.1.100

ตัวอย่างต่อไปนี้เป็น CentOS 5.x บน x86_64 หากเป็นเวอร์ชั่นอื่นก็ให้เปลี่ยน 5 กับ x86_64 ให้ตรงกับที่ต้องการเช่น 4 กับ i386 เป็นต้น

1. สร้าง folder สำหรับเก็บไฟล์
Code: [Select]
mkdir -p /var/www/html/centos/5/os/x86_64/CentOS
mkdir -p /var/www/html/centos/5/updates/x86_64

2. ไฟล์ใน folder /var/www/html/centos/5/os/x86_64/CentOS คือไฟล์ RPMs จาก CD/DVD นั่นเอง ให้ copy ไฟล์ใน CD/DVD มาใส่ให้ครบ หรือจะโหลดผ่าน internet ก็ได้เช่นกัน แต่การ copy จากแผ่น cd/dvd ที่มีอยู่แล้วจะช่วยลดเวลาไปได้มาก ในกรณีที่มีไฟล์ iso อยู่ในเครื่องก็สามารถ mount ไฟล์ iso เพื่อ copy ไฟล์ได้ด้วยคำสั่ง
Code: [Select]
mkdir /iso
mount -o loop /path/to/centos-cd.iso /iso
ls /iso

จากนั้นสร้าง repo index ด้วยคำสั่ง
Code: [Select]
createrepo /var/www/html/centos/5/os/x86_64* หากไม่มีคำสั่งนี้ก็ติดตั้งด้วยคำสั่ง yum install createrepo ซะก่อน
** เมื่อมี CentOS เวอร์ชั่นใหม่ออกมาก็ให้เอาไฟล์ RPMs ในแผ่น CD/DVD เวอร์ชั่นใหม่มาทับของเดิม

3. Download ไฟล์ updates มาจาก mirror ที่ใดที่หนึ่งตาม list ต่อไปนี้ http://www.centos.org/modules/tinycontent/index.php?id=30 (เลือกที่มี rsync)
Code: [Select]
rsync -avrt rsync://mirrors.kernel.org/centos/5/updates/x86_64 /var/www/html/centos/5/updates/* ดูเรื่องการใส่ / ปิดท้ายให้ดี อันใหนมี / อันใหนไม่มี / จะมีผลกับไฟล์ที่โหลดมาถูกตำแหน่ง

4. เพิ่มคำสั่ง rsync ตามข้อ 3 ใน crontab เพื่อให้ update เรื่อยๆตามต้องการ เช่นวันละ 1 ครั้ง
Code: [Select]
#crontab -e
0 4 * * * rsync -avrt rsync://mirrors.kernel.org/centos/5/updates/x86_64 /var/www/html/centos/5/updates/ > /dev/null 2>&1

5. ทำเช่นเดียวกันกับข้อ 3-4 สำหรับ folder: extras centosplus addons fasttrack ตามต้องการ (ข้อ 5 นี้ หากไม่ได้ใช้ก็ไม่ต้องโหลดก็ได้ เลือกเฉพาะที่ต้องการใช้พอ แล้วที่เหลือก็กำหนดไปใช้ repo ในไทยแทน)
Code: [Select]
rsync -avrt rsync://mirror1.ku.ac.th/centos/5/extras/x86_64 --exclude=debug/ /var/www/html/centos/5/extras/
rsync -avrt rsync://mirror1.ku.ac.th/centos/5/centosplus/x86_64 --exclude=debug/ /var/www/html/centos/5/centosplus/

6. แก้ไขไฟล์ CentOS-Base.repo เพื่อใช้งาน repo ของเราเอง (ไฟล์นี้ก็ทำใส่ไว้ใน local repo เพื่อให้โหลดไปใช้ได้เลย เหมือนกับของ ku กับ psu นั่นแหละ)

Code: [Select]
# CentOS-Base.repo

[base]
name=CentOS-$releasever - Base
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
baseurl=http://192.168.1.100/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://192.168.1.100/centos/RPM-GPG-KEY-CentOS-5
# Rpmforge (yum-priority)
# protect=1

#released updates
[updates]
name=CentOS-$releasever - Updates
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
baseurl=http://192.168.1.100/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://192.168.1.100/centos/RPM-GPG-KEY-CentOS-5
# Rpmforge (yum-priority)
# protect=1

[addons]
name=CentOS-$releasever - Addons
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=addons
baseurl=http://192.168.1.100/centos/$releasever/addons/$basearch/
gpgcheck=1
gpgkey=http://192.168.1.100/centos/RPM-GPG-KEY-CentOS-5
# Rpmforge (yum-priority)
# protect=0

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
baseurl=http://192.168.1.100/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://192.168.1.100/centos/RPM-GPG-KEY-CentOS-5
# Rpmforge (yum-priority)
# protect=0

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
baseurl=http://192.168.1.100/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://192.168.1.100/centos/RPM-GPG-KEY-CentOS-5
# Rpmforge (yum-priority)
# protect=1

#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib
baseurl=http://192.168.1.100/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://192.168.1.100/centos/RPM-GPG-KEY-CentOS-5
# Rpmforge (yum-priority)
# protect=0

เพียงเท่านี้เราก็มี local repo ของเราเอง เวลาติดตั้ง CentOS ใหม่ก็เรียก yum update ได้อย่างรวดเร็ว ไม่เชื่อลองดู

ของผมก็มีสร้างไว้ที่ http://centos.as.in.th (มีเฉพาะ CentOS 5.3 x86_64 ไม่ครบเหมือนของ ku/psu)
จริงๆเครื่องใครวางที่ IDC ก็ rsync มาจาก ku หรือ psu ได้เลย เร็วดีแป๊บเดียวเสร็จ แต่ของผมจะ rsync updates มาจาก ตปท ที่เหลือเอาจาก KU