แสดงกระทู้

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Topics - golfreeze

Pages: 1 ... 69 70 [71] 72 73
1051
ภาคที่1
MySQL นับว่าเป็นหัวใจของ Web Server อีกตัวหนึ่งเลยก็ว่าได้เพราะว่า MySQL
นั้นเป็นแหล่งข้อมูลที่สามารถเรียกใช้งานได้อย่างรวดเร็ว วันนี้ผมจะเอาประสบการณ์เกี่ยวกับการ Config
MySQL มาให้อ่านกัน

ผมอิงตามรุ่น 4.1 โดยใช้กับ Server ที่ใช้ tis620 เป็น Default นะครับ

เริ่มต้นที่การ Compile PHP ให้สนับสนุน MySQL
ปกติแล้วสามารถ Compile PHP ให้สนับสนุน MySQL ด้วยการใช้ --with-mysql วิธีการนี้จะเป็นการใช้ MySQL
Lib Client ที่ Bundle มากับ PHP ครับ ซึ่งเป็น Version เก่า นอกจากนี้ยังมี Extension ใหม่ชื่อ MySQLi
ซึ่งถ้าจะใช้ MySQLi จะไม่สามารถใช้ MySQL Lib Client ที่ Bungle มาด้วยได้ มันจะตีกัน
ดังนั้นเริ่มต้นผมแนะนำให้คุณ Compile PHP ด้วย --with-mysql=/usr/local/mysql (หรือถ้า mysql
อยู่ที่อื่นก็ใช้ path อื่นแล้วกันครับ)

เพื่อความสะดวกในการใช้งานภาษาไทย มักจะ setup ใน my.cnf ว่า default-character-set = tis620
วิธีการนี้จะทำให้ MySQL ทำงานช้าลงไปประมาณ 20 - 30% แต่ไม่เป็นไรครับ
เพราะว่ายังไงผมก็ต้องใช้ภาษาไทยอยู่แล้ว

หลังจากใส่คำสั่งว่า default-character-set = tis620 ลงไปใน my.cnf แล้ว ผมที่ได้คือ MySQL Client
มันต๊องครับ เพราะว่า Charset ของ Server เป็น tis620 แต่ของ Client เป็น Latin ครับ ดังนั้นต้อง setup
เพิ่มอีกตัวหนึ่งคือ skip-character-set-client-handshake ใส่ส่วน my.cnf ครับ วิธีการนี้จะทำให้ Client
ทำงานที่ Charset เดียวกับ Server เลยครับ

skip-locking - อันนี้ถ้าจำไม่ผิดเขาเปลี่ยนชื่อเป็น skip-external-locking เกี่ยวกับการทำ Repicate
MySQL Server ผมไม่แน่ใจว่าถ้ามี Server เดียวจะช่วยเพิ่มประสิทธิภาพอะไรได้หรือเปล่า
แต่ใส่ไว้ก็ไม่เสียหายครับ

skip-thread-priority - เป็นการกำหนดครับว่าไม่ต้องให้ thread แซงคิวกันได้ MySQL จะให้ QUERY
แต่ละแบบมีความสำคัญไม่เท่ากัน ผมจำไม่ได้ว่าอะไรมากกว่าอะไร แต่การเอาหัวข้อนี้ออกทำให้ระบบ queue ของ
MySQL ไม่ต้องมายุ่งยากกับการจัดคิวและทำงานเป็น FIFO แทนครับ

skip-bdb - ไม่ได้ใช้ก็ข้ามไปครับ ถ้าใช้ bdb ก็ Comment บรรทัดนี้ซะ สำหรับผมแล้วผมใช้แค่ MYISAM กับ
INNODB ครับ

skip-networking - อันนี้เป็นการบอก MySQL Server ว่าไม่ต้อง Listen ที่ INET SOCKET ครับ ให้ Listen
ที่ UNIX SOCKET อย่างเดียวพอ อันนี้ไม่ได้เพิ่มความเร็วมากนัก แต่ลดโอกาสการโดนโจมตีได้ครับ

log-slow-queries - อันนี้ใช้เฉพาะเวลาที่ต้องการดูว่า Query อันไหนทำงานช้า จะได้มาปรับแต่งได้ครับ

ภาคที่ 2
การบริหาร Thread - ตัวแปรเกี่ยวกับ Thread ที่สำคัญของ MySQL คือ thread_cache
ตัวแปรนี้จะเป็นการไม่ทำลาย thread ของ MySQL ให้ต่ำกว่าเลขนี้ครับ ปกติก็เดาไปเรื่อยๆ ครับ โดยดูจาก
Status ของ MySQL ผมแนะนำให้ดูจาก phpMyAdmin ครับ สะดวกดี จะมีค่าเกี่ยวกับ thread คือ

Threads cached 143
Threads connected 7
Threads created 532
Threads running 1

Threads cached - คือจำนวน threads ที่อยู่ในโปรแกรม MySQL ตอนนี้ จะเห็นได้ว่ามี 143 threads
Threads connected - คือจำนวน threads ที่ใช้งานจริงๆ ครับ
Threads running - คือ threads ที่กำลังหาผลการ Query อยู่ครับ
Threads created - คือจำนวน threads ที่สร้างใหม่ตั้งแต่เริ่ม Server มาครับ ถ้าค่านี้เพิ่มเร็วเกินไป
ให้เพิ่มจำนวน Thread_cache ครับ ผลที่ได้คือ MySQL จะทำงานเร็วขึ้นนิดหน่อยเพราะว่าจะไม่ต้องเสียเวลา
สร้างและทำลาย Threads บ่อยๆ ครับ


ภาคที่ 3

MYISAM กับหน่วยความจำ ตัวแปรที่เราสนใจคือ

key_buffer=32M
sort_buffer_size=1M
read_buffer_size=1M
read_rnd_buffer_size=4M

- Key Buffer คือพื้นที่สำหรับ Cache ค่า Key ของแต่ละ Table ครับ โดยที่ Key ของ MySQL มี 3 ตัวคือ
PRIMARY, INDEX และ UNIQUE ครับ ปกติถ้ามีการใช้ Table MyISAM มากๆ ค่านี้ควรจะมากๆ ครับ
ของผมมีใช้ไม่มากเลยไม่ต้องใช้ค่า Key_Buffer มาก แนะนำ 16MB สำหรับแรม 256
และเพิ่มมากขึ้นเมื่อแรมมากขึ้น

- Sort Buffer คือหน่วยความจำที่ MySQSL แต่ละ Connection จะจองเพิ่ม เพื่อทำ Table Scan ครับ
ปกติถ้าคุณจะ Sort Field ที่ไม่ใช่ Key จะต้องใช้หน่วยความจำส่วนนี้เสมอ ให้ Setup เริ่มต้นตั้งแต่ 512K
ขึ้นไป เนื่องจากเป็นหน่วยความจำที่จะมีการจองเพิ่มต่อ Connection ดังนั้นจะไม่ควรจะ Setup
ให้สูงเกินเพราะว่าจะทำให้ MySQL ทำงานจนหน่วยความจำหมด

- Read Buffer คือหน่วยความจำที่ MySQL จะใช้ในการเก็บค่าที่อ่านจากตารางแบบต่อเนื่อง (คือไม่ได้ Sort)
ไม่จำเป็นต้องมากนักก็ได้ เพราะว่าปกติเราจะมีการทำ LIMIT ในการอ่านค่ามาแสดงบนเว็บอยู่แล้ว

- Read-Random Buffer Size คือหร่วมความจำที่ MySQL จะใช้เก็บค่าจากตารางแบบไม่ต่อเนื่อง (เช่นผลการ
Sort) ควรจะใหญ่กว่า Read Buffer

ของผมไม่ค่อยได้ใช้ MyISAM ค่าต่างๆ นี้เลยไม่ได้ Set เอาไว้มากนัก ครับ เดี๋ยวไปต่อภาค 4 เรื่องของ
tmp_table ครับ


ภาคที่ 4
ในภาดนี้เราจะพูดถึง tmp_table ปกติแล้วในการ Complex Query นั้น MySQL
จะทำการสร้างตารางผลลัทธ์ขึ้นมาในหน่วยความจำเป็น เป็น TABLE แบบ HEAP
แต่ถ้าตารางมีขนาดใหญ่กว่าค่าค่าหนึ่ง MySQL จะคัดลอกตารางนั้นลง Disk เป็น MyISAM TABLE ครับ
เราจะมาดูค่าค่านั้นกันครับ

ก่อนที่จะไปไกลกว่านั้น เรามาพูดถึง Complex Query ก่อนครับ โดยมากเราจะพูดถึง Query ที่มีการใช้ GROUP
BY, UNIQUE, LIKE และที่ไม่แน่ใจคือ SUB SELECT ครับ

วิธีการดูว่ามีการ Swap ลงหน่วยความจำมากน้อยแค่ไหน สามารถดูได้จาก
Created tmp disk tables 14652
Created tmp tables 222220

โดยเมื่อมีการสร้าง tmp_table MySQL จะเพิ่มค่า Created tmp tables ครับ และถ้ามีการ Swap ลง Disk
จะเพิ่มค่า Created tmp disk tables ปกติ ถ้านำสองค่านี้มาหารกัน คูณ ร้อย ไม่ควรจะเกิน 5-10% ครับ
ขึ้นอยู่กับว่าตารางที่คุณใช้ใหญ่เล็กอย่างไร มีความซับซ้อนมากแค่ไหน

ตัวแปรที่จะควบคุมการ Swap จะมี 2 ตัวคือ

tmp_table_size=32M
max_tmp_tables=32

โดยถ้า tmp_table ใหญ่กว่า tmp_table_size จะ Swap ลง Disk ครับ หรือถ้ามีจำนวน tmp_table มากกว่า
max_tmp_tables ก็จะ Swap ลง Disk เช่นกันครับ
ค่า tmp_table_size ปกติเป็น 32M และ max_tmp_tables จะเป็น 32 ครับ คุณไม่ควร Setup ให้สูงกว่า 2
เท่าของค่าปกติ แต่แนะนำให้ลองไปตรวจสอบครับว่าโปรแกรมของคุณมีทางที่จะ Optimize Query ได้มากแค่ไหน
หรือ จะใช้วิธีการ Cache ผมลัพธ์ของหน้าเว็บเข้ามาช่วยก็ได้ครับ



ภาคที่ 5 - Key Buffer แบบเชิงลึก

Key Buffer คือหน่วยความจำที่ MySQL จองไว้หนเดียว แล้วใช้งานแชร์กันทุกๆ Process
(ดังที่ได้พูดไว้ก่อนหน้านี้ครับ)

แต่เราจะมาพูดถึงประสิทธิภาพของ Key กันครับ ค่าที่น่าสนใจคือ

Key blocks unused 27683
Key blocks used 1312
Key read requests 1318393
Key reads 1344

คู่แรกจะบอกว่า Key Buffer ของคุณใช้งานไปมากน้อยแค่ใด ปกติแล้ว Key Blocks Unused จะไม่มากครับหรือเป็น
0 เลยก็ได้ อย่างตัวอย่างแสดงว่าเรากำหนดค่า Key_Buffer มากเกินไปครับ

คู่ที่สองถ้าเอา (Key read requests - Key reads) * 100 / Key read requests เราจะเรียกว่า Key Hits
Rate ครับ อย่างตัวอย่างคือ 99.9 ครับ แสดงว่า Key Hits Rate ดีมากครับ ปกติแล้วจะอยู่ที่ประมาณ 95 -
99% ครับ ถ้าน้อยกว่านี้แนะนำให้เพิ่ม Key_Buffer ครับ สำหรับ Key Hits Rate นั้นจะต้องคิดเมื่อทำงาน
MySQL ไปแล้วสักพักนะครับ อาจจะ 2-3 วัน ครับ


ภาคที่ 6 - Table Cache

สำหรับ Table Cache นั้นเป็นการเปิด Handle ของ Table ทิ้งเอาไว้ครับ เพื่อการเข้าถึงข้อมูลใน Table
ได้อย่างรวดเร็วครับ แต่ถ้าคุณเพิ่มค่านี้มากๆ คุณอาจจะเกิดปัญหาว่า File Descriptor ไม่พอครับ
ถ้าผมจำไม่ผิดแนะนำให้เพิ่ม File Descriptor ได้จากการแก้ไขตัวแปร Kernel ที่ /proc/sys/fs/file-max
ครับโดยการใช้คำสั่ง

echo 392604 > /proc/sys/fs/file-max

ผมไม่แน่ใจว่าการใช้คำสั่ง ulimit จะได้ผลเหมือนกันหรือไม่

กลับมาต่อที่ table_cache ปกติแล้วถ้าในระบบที่มีตารางมากๆ table_cache
ควรจะครอบคลุมตารางพื้นฐานทั้งหมด และอีกประมาณ 50% ของตารางที่เหลือ
แต่ถ้าเป็นไปได้จะครอบคลุมทั้งหมดเลยก็ไม่ผิดแต่อย่างใด อย่างของผมเอง set ไว้ที่ 1024 เลยครับ

วิธีการจะดูว่า set ไว้น้อยเกินไปหรือเปล่า ให้ดูที่

Open tables 1024
Opened tables 1120

โดย Open tables คือจำนวน Table ที่เปิดอยู่ขณะนี้ และ Opened tables คือจำนวน Table ที่เปิดมาทั้งหมด
นับตั้งแต่เริ่ม MySQL Server มา โดยถ้าค่าของ Opened tables เพิ่มเร็วเกินไป แนะนำให้เพิ่มค่า
table_cache ครับ

วิธีการปรับค่า table cache ทำได้โดย เพิ่มบรรทัดนี้ใน my.cnf

table_cache=1024


ภาคที่ 7 Query Cache

Query Cache นั้นเป็นคุณสมบัติใหม่ที่มีใน MySQL รุ่นที่ 4.x ขึ้นมาครับ

Query Cache ทำงานง่ายๆ คือ ถ้ามี Query เหมือนเดิม MySQL จะเรียกจาก Cache แทนที่จะไป Query ใหม่ครับ

แต่ Query Cache ไม่ได้มีประโยชน์กับทุก Database Structure นะครับ Query Cache เหมาะกับ Table
ที่ไม่ค่อยได้ Update แต่มีจำนวน Records เป็นจำนวนมาก เช่น 50,000 records ขึ้นไป Query Cache จะใช้กับ
Select เท่านั้นครับ ถ้าระบบของคุณแตกต่างจากนี้การใช้ Query Cache อาจจะทำให้ได้ผลตรงกันข้ามก็ได้ครับ

วิธีการเปิดใช้งาน Query Cache ให้ใส่บรรทัดนี้ลงใน my.cnf ครับ

query_cache_type=1
query_cache_size=32M

query_cache_type จะมีได้ 3 ค่าคือ
0 - ปิด Query Cache
1 - เปิด Query Cache คุณสามารถสั่งให้ไม่ต้อง Cache ได้โดยการใช้ "SELECT SQL_NO_CACHE"
2 - แบบ On Demand คุณสามารถสั่งให้ MySQL Cache โดยการใช้ "SELECT SQL_CACHE"

ปกติแล้วถ้า Table มีการ Update แล้ว MySQL จะลบ Cache ของ Table นั้นๆ ทั้งหมดทันที และ Query Cache
นั้นเป็น Case Sensitive ครับ ดังนั้น

SELECT * FROM a WHERE b=1

กับ

select * from a where b=1

จะไม่เหมือนกันนะครับ ถ้าเราเรียกตัวแรกแล้วเรียกตัวที่ 2 ตัวที่ 2 จะไม่ได้เรียกจาก Cache

ดังนั้นถ้า
1. ในระบบของคุณมีการเขียน SQL แบบไม่ได้วางแผนเรืองตัวใหญ่ตัวเล็ก คุณจะได้รับประโยชน์จาก Query Cache
น้อยลง
2. ถ้า Table หลักๆ ของคุณมีการ Update ตลอดเวลา คุณจะได้รับประโยชน์จาก Query Cache น้อยลง
3. ถ้า Table หลักๆ ของคุณไม่ได้มีจำนวน Records มากคุณก็แทบจะไม่ได้รับประโยชน์จาก Query Cache
เลยครับ

แหล่งที่มา
http://www.thaiadmin.org/board/index.php?topic=18693.new

1052
เคยเจอปัญหาเกี่ยวกับ card lan setting ไปแล้วเกิด error message แบบนี้ครับ os linux ,distro debian
น่ะครับ อิอิ

Error ขึ้นแบบนี้ครับ

Configuring network interfaces...SIOCSIFADDR: No such device eth0: ERROR while getting interface
flags: No such device SIOCSIFNETMASK: No such device SIOCSIFBRDADDR: No such device eth0: ERROR
while getting interface flags: No such device

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

#cd /etc/udev/ rules.d/
#cp z25_persistent-net.rules z25_persistent-net.rules.ori
#vi z25_persistent-net.rules
ลบ Interface ที่มีปัญหาทิ้ง
แล้ว สั่ง init6 ไป 1 ดอก
เมื่อ boot ขึ้นมาแล้ว ก็สามารถสั่งให้ ifconfig ขึ้นได้ครับ





----------------------------------------------------------------
question=Host ผมวางที่ Pro-En ครับ ทาง noc เขาแจ้งมาว่าเครื่องผมส่ง packet ออก inter จน traffic
เต็ม
จากนั้น noc ก็ไปถอดสาย Lan ออกจากเครื่องผม โดยที่ไม่ได้โทรมาบอกผมก่อนล่วงหน้า เมื่อทาง noc
ทดลองถอดออกแล้วเสียบสาย lan เข้าไปในเครื่องผมใหม่ ปรากฏว่า Ping ไม่เจอ noc เลย Restart เครื่องผม
จากนั้นเครื่องผมบูตไม่ได้เลยค้างอยู่ที่ Grub boot Loader ตลอด ผมจะทำยังไงดีครับ
ในนั้นมีข้อมูลลูกค้าหลายสิบราย ผมทำเป็น Software RAID1 ไว้ด้วย HDD 320GB เครื่องผมเป็น Rack Intel
1U
+ CentOS 4.4 + Direct Admin External License วานผู้รู้ช่วยชี้แนะด้วยครับ ขอบคุณล่วงหน้าครับ

ans=บุทด้วยแผ่น windows แล้วหาทางเข้า command promt แล้วรันคำสั่งนี้เพื่อเครียร์ mbr
fixmbr

แล้วก็บุท Linux เข้า rescue mode เพื่อเขียน grub ใหม่

grub
root (hd0,0)
setup (hd0)
quit

แล้วก็รีบุท

ถ้าไม่ได้ก็เก็บ hdd อีกลูกแล้ว ลง centos ทับเลย ลงเหมือนลงตอนแรก ทุกอย่างทำงานเหมือนเดิมจะมี dns
ที่ต้องถอนแล้วลงใหม่อีกที แล้วก็ permisson ไฟล์บางจุด

1053
#cd /usr/ports/security/ports
#make install clean

เพิ่มใน /etc/rc.conf

clamav_clamd_enable="YES"
clamav_freshclam_enable="YES"

/usr/local/etc/rc.d/clamav-clamd start
/usr/lcoal/etc/rc.d/clamav-freshclam start

แก้ไข config /etc/exim.conf ดังน้

#cp /etc/exim.conf /etc/exim.conf.ori

#vi /etc/exim.conf

เพิ่มบันทัด
av_scanner = clamd:/var/run/clamav/clamd

เพิ่มบันทัดนี้ระหว่าง
check_message: กับ accept

check_message:
deny message = This message contains malformed MIME ($demime_reason)
demime = *
condition = ${if >{$demime_errorlevel}{2}{1}{0}}
deny message = This message contains a virus or other harmful content ($malware_name)
demime = *
malware = *
deny message = This message contains an attachment of a type which we do not accept
(.$found_extension)
demime = bat:com:pif:prf:scr:vbs
warn message = X-Antivirus-Scanner: Clean mail though you should still use an Antivirus
accept

#save และ ออกมา
restart clamd
#/usr/local/etc/rc.d/clamav-clamd restart
#/usr/local/etc/rc.d/exim restart

สั่ง update virus pattern
#/usr/local/bin/freshclam
รอสักพัก แล้วลอง test ส่งเมลดู โดยส่ง pattern นี้เข้า

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

แล้วลองดู log ของ exim ประกอบจะได้ดังนี้คือ

#tail -f /var/log/exim/mainlog

2007-10-24 10:53:26 1IkXJ8-000NQY-4k H=bay0-omc3-s16.bay0.hotmail.com [65.54.246.216]
F=< golfreeze@hotmail.com>;; rejected after DATA: This message contains a virus or other
harmful
content (Eicar-Test-Signature)

-------------------------------------------------------------------
สำหรับ clamav ควรดู version ใหม่ๆ ให้บ่อยๆ น่ะครับ
โดยดูในเว็บ http://www.clamav.net

แล้วโหลด มาเป็น source file

#tar zxf clamav-0.xx.tar.gz
#./configure
#make
#make install

แล้วทำเช๊ค version โดย
#clamscan -V

แล้วสั่ง ให้ อัฟเดท pattern ใหม่ได้โดย
#freshclam
ครับ

ทำการเชค pattern virus ที่อัฟเดทจาก clamav
#clamconf -n


Database directory: /var/db/clamav
main.cld: version 55, sigs: 2424225, built on Tue Sep 17 21:57:28 2013
daily.cld: version 18073, sigs: 458654, built on Wed Nov  6 12:41:49 2013
bytecode.cld: version 228, sigs: 43, built on Sat Oct  5 03:37:48 2013
Total number of signatures: 2882922

1054
ลง perl module ก่อนครับ

#perl -MCPAN -e shell

แล้ว install
cpan> install Net::Telnet
cpan> install Net::Telnet::Cisco

1055
อิอิ พอดีไปอัฟเดทเป้น kernel 2.6.24_19 ครับเพื่อที่จะลง virtualbox-ose

โดยเริ่มดังนี้

#sudo apt-get install virtualbox-2.0 virtualbox-ose virtualbox-module-kerne-2-6-24-19

เสร็จแล้วทำการ reboot เสียงหายก็แก้โดย

uninstall ตัว driver sound เก่าออกก่อนครับ
#sudo apt-get remove --purge ubuntu-restricted-extras vlc libdvdcss2 ubuntu-restricted-extras
w32codecs libxine1-ffmpeg gstreamer0.10-plugins-base gstreamer0.10-plugins-good
gstreamer0.10-plugins-bad gstreamer0.10-pitfdll amarok totem-gstreamer totem-common totem-plugins
totem-plugins-extra totem-xine


แล้วทำการลง package ของ sound ใหม่ครับดังนี้
#sudo apt-get install ubuntu-restricted-extras vlc libdvdcss2 ubuntu-restricted-extras w32codecs
libxine1-ffmpeg gstreamer0.10-plugins-base gstreamer0.10-plugins-good gstreamer0.10-plugins-bad
gstreamer0.10-pitfdll amarok totem-gstreamer totem-common totem-plugins totem-plugins-extra
totem-xine

แล้วเช๊คดูจากคำสั่ง
#aplay -l

ก็จะขึ้น ข้อมูลของ sound การ์ดมาให้ครับ แค่นี้ก็ใช้งานเสียงได้แล้ว
อิอิ

1056
Mail issue , problem , configuration / send mail command in unix and bsd mutt
« on: มกราคม 23, 2011, 01:07:06 AM »
ปกติใช้ sendmail ก็ครอบคลุมหมดครับ แต่มา mutt แล้วก็เจ๋งดี สามารถ ส่งเป็น mutiple file ได้ครับ คือ
attach file หลายๆไฟล์

#echo "Subject: Welcome Message To NTT Members" | cat - /home/golf/sms_send.txt |
sendmail -F "support- mail@ntt.co.th"; -f support- mail@ntt.co.th $account <
$USERLIST/sms_send.txt

#pkg_add -r mutt

#mutt -s "Welcome Message To NTT Members" -a sms_send1.txt -a test.txt
unixwg@ntt.co.th < $USERLIST/sms_send.txt

-s คือ subject
-a คือ attachfile
< sms_send.txt คือ ข้อความที่จะให้แสดงใน message mail
unixwg@ntt.co.th คือ email ปลายทางที่จะส่งไป

ถ้าต้องการแก้ from ให้มาจากใครก็ set ที่

#vi /usr/local/etc/Muttrc
set from=" username@yourmail.com";


ถ้าต้องการ options เพิ่มก็ man mutt เลยครับ

1057
####
#Create graph cacti in my style
####

Packages:
1.rrdtool
2.apache22+php5+MYsql
3.cacti+report+syslog
4.snmp+(net-snmp)

install net-snmp
#cd /usr/ports/net-mgmt/net-snmp
#make install clean

install php5-snmp
#cd /usr/ports/lang/php5-extension
#make config
เลือก snmp ด้วย
#make install clean

install rrdtool
#cd /usr/ports/net/rrdtool
#make install clean

#fetch http://www.cacti.net/downloads/cacti-0.8.7a.tar.gz


# Unzip and Untar
tar xvf cacti-0.8.6j.tar.gz

# Put Cacti under your public web area document root
mv /usr/src/ cacti-0.8.6j /opt/apache/htdocs/cacti

# Create the MySQL database:
/opt/mysql/bin/mysqladmin --user=root -p create cacti

# Import the default cacti database:
/opt/mysql/bin/mysql --user=root -p cacti < /opt/apache/htdocs/cacti/cacti.sql

# Create a MySQL username and password for Cacti
/opt/mysql/bin/mysql --user=root -p mysql
GRANT ALL ON cacti.* TO cactiuser@localhost IDENTIFIED BY 'cactipassword';
GRANT ALL ON cacti.* TO cactiuser@"%"; IDENTIFIED BY 'cactipassword';
flush privileges;
exit

# Edit include/config.php and specify the MySQL user, password and database for your Cacti
configuration
vi /opt/apache/htdocs/cacti/include/config.php
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cactiuser";
$database_password = "cactipassword";
$config['url_path'] = '/cacti/';

เสร็จแล้ว ทำการสั่ง
/usr/local/bin/php poller.php เพื่อให้ gen graph ให้ด้วยน่ะครับ
หรือไม่ก็เพิ่มใน crontab
#crontab -e

*/5 * * * * /usr/local/bin/php /home/golf/public_html/cacti/poller.php 2>/dev/null

---------------------------------------------------------

เครื่องที่เป็น ศูนย์กลาง ให้ เพิ่มที่ไฟล์ /etc/hosts ด้วยเช่น

central = ip 10.0.1.149

10.0.1.149 x1.xxx.co.th
10.0.1.148 x2.xxx.co.th (เครื่องที่ตอบ snmp มาให้เครื่องหลัก)
10.0.1.146 x3.xxx.co.th(เครื่องที่ตอบ snmp มาให้เครื่องหลัก)

เช็คได้จากเครื่องหลัก คือ
#snmpwalk -v 1 -c ชื่อcommunity ipปลายทางที่ต้องการถามsnmp

-----------------------------------------------------------
#config /usr/local/share/snmp/snmpd.conf เครื่องหลัก

syslocation 0
syscontact golfreeze@packetlove.com
sysservices 0
#อนุญาติให้เครื่องไหนบ้างเข้ามาถาม snmp
rocommunity golf 10.0.1.149

#ส่วนของ config วง network ที่จะติดต่อ
com2sec work 10.0.0.0/23 golf

group MyROGroup v1 work

view all included .1 80
access MyROGroup "" any noauth exact all none none
access MyRWGroup "" any noauth exact all all none

-----------------------------------------------------------
#config /usr/local/share/snmp/snmpd.conf เครื่องที่จะให้ถูกถามข้อมูล snmp
syslocation 0
syscontact golfreeze@packetlove.com
sysservices 0
#อนุญาติให้เครื่องไหนบ้างเข้ามาถาม snmp
rocommunity golf 10.0.1.149

#ส่วนของ config วง network ที่จะติดต่อ
com2sec work 10.0.0.0/23 golf

group MyROGroup v1 work

view all included .1 80
access MyROGroup "" any noauth exact all none none
access MyRWGroup "" any noauth exact all all none
----------------------------------------------------------

#install ntop with cacti

แก้ bug ที่ xorg-libraly ก่อนครับไม่งั้นจะ มี error ว่ายังไม่ได้ ทำ symlink

Edit by
#cd /usr/X11R6
#find -d . -print | cpio -pvdam /usr/local
#mv /usr/X11R6 /usr/X11R6.backup
#ln -s /usr/local /usr/X11R6
can solve problem and
#cd /usr/ports/net/ntop ผมเลือก option tcpwrapper อันเดียวครับ
#make install clean

1058
all application on unix knowledges by golfreeze / radius authen testing
« on: มกราคม 23, 2011, 01:04:25 AM »
เป็นคำแนะนำติดตั้งจัดการปรับแต่ง radius server
ต้นแบบทดสอบด้วย linux ubuntu 6.06, fedora core 6,5,4 ใช้งานภายในมหาวิทยาลัยสงขลานครินทร์
*** บน ubuntu ยังทดสอบไม่สมบูรณ์

วิธีติดตั้ง radius server ด้วยโปรแกรม freeradius
*** แหล่งข้อมูลต้นฉบับ freeradius คือhttp://www.freeradius.org


ติดตั้งโปรแกรม freeradius
หากเป็น ubuntu ใช้คำสั่ง apt-get install freeradius

หากเป็น fedora ใช้คำสั่ง yum install freeradius


หากเป็น fedoara ต้องแก้ไขให้ทำงานทุกครั้งที่บูทเครื่อง
chkconfig radiusd on


สั่งให้ freeradius ทำงาน
หากเป็น ubuntu ใช้คำสั่ง /etc/init.d/freeradius start

หากเป็น fedora ใช้คำสั่ง /etc/init.d/radiusd start


ตรวจสอบว่าโปรแกรมทำงานแล้วด้วยคำสั่ง
ps ax | grep radius

หากเป็น ubuntu ได้ผลตัวอย่าง
4165 ? Ssl 0:00 /usr/sbin/freeradius

หากเป็น fedora ได้ผลตัวอย่าง
4480 ? Ssl 0:10 /usr/sbin/radiusd -y


แฟ้มที่เกี่ยวข้อง
หากเป็น ubuntu คือ

/var/log/freeradius/radius.log
/etc/freeradius/radiusd.conf
/etc/freeradius/clients.conf

หากเป็น fedora คือ

/var/log/radius/radius.log
/etc/raddb/radiusd.conf
/etc/raddb/clients.conf


เมื่อให้ radiusd ทำงานแล้ว เริ่มขั้นตอนทดสอบระบบโดยป้อนตัวอย่างคำสั่งดังนี้

radtest root password-root localhost 0 testing123
*** จากตัวอย่าง password-root คือรหัสผ่านของ root
หากเป็น fedora จะได้ผลข้อความตอบกลับดังตัวอย่าง
Sending Access-Request of id 43 to 127.0.0.1:1812
User-Name = \"root\"
User-Password = \"password-root\"
NAS-IP-Address = 10.0.1.2
NAS-Port = 0
Re-sending Access-Request of id 43 to 127.0.0.1:1812
User-Name = \"root\"
User-Password =
\"{\\277\\033\\t\\217\\224\\n\\021\\036
\271$\\301\\026\\234\\353\
225\"
NAS-IP-Address = 10.0.1.2
NAS-Port = 0
rad_recv: Access-Reject packet from host 127.0.0.1:1812, id=43, length=20

แสดงว่าระบบใช้งานได้แล้ว ถึงแม้ว่าจะมีการแจ้งว่า Access-Reject
เป็นสาเหตุเนื่องจากไม่มีสิทธิในการอ่านแฟ้ม /etc/shadow ของระบบ

ปัญหาที่ว่ามานี้ไม่เกิดกับ ubuntu เพราะ default ของระบบถูกต้องอยู่แล้ว

*** ควรทดสอบและปรับแต่งให้ถูกต้องตามหัวข้อนี้ให้เรียบร้อยก่อน จึงค่อยใช้งานจริง

หากเป็น ubuntu ข้ามตรงนี้ไปทดสอบรหัสผ่านได้เลย
หากเป็น fedora ถ้าต้องการให้ใช้กับบัญชีผู้ใช้ระบบ UNIX
ต้องตั้งค่าให้อ่านแฟ้ม /etc/shadow ได้
โดยแก้ไขแฟ้ม /etc/raddb/radiusd.conf
ทำการ comment ยกเลิกบรรทัดข้อความจากเดิม
user = radiusd
group = radiusd
ให้เป็น
#user = radiusd
#group = radiusd
เสร็จแล้วให้ restart ระบบ radiusd ใหม่ด้วยคำสั่ง service radiusd restart

ต่อไปลองป้อนตัวอย่างคำสั่งเดิมเพื่อทดสอบดังนี้
radtest root password-root localhost 0 testing123
คราวนี้จะได้ผลข้อความว่า
Sending Access-Request of id 82 to 127.0.0.1:1812
User-Name = \"root\"
User-Password = \"password-root\"
NAS-IP-Address = 10.0.1.2
NAS-Port = 0
rad_recv: Access-Accept packet from host 127.0.0.1:1812, id=82, length=20
โดยมีผลการแจ้งว่า Access-Accept ถูกต้องตามต้องการ


ถ้าต้องการให้ radius client เข้ามาติดต่อใช้งานระบบ radiusd นี้ได้
หากเป็น ubuntu ให้แก้ไขแฟ้ม /etc/freeradius/clients.conf
หากเป็น fedora ให้แก้ไขแฟ้ม /etc/raddb/clients.conf
ทำให้มีค่าดังตัวอย่างนี้
client 10.0.1.0/24 {
secret = mytestkey
shortname = private-network
}
ตัวอย่างคือให้ radius client ที่มีหมายเลข ip 10.0.1.x
สามารถเข้ามาใช้ด้วย secret key ว่า mytestkey
เมื่อแก้ไขเสร็จแล้วให้ reload ใหม่
หากเป็น ubuntu ใช้คำสั่ง /etc/init.d/freeradius reload
หากเป็น fedora ใช้คำสั่ง /etc/init.d/radiusd reload
ลองทดสอบด้วยคำสั่งตัวอย่าง
radtest root passwordroot 10.0.1.1 0 mytestkey
*** ค่า passwordroot คือ รหัสผ่านของ root และ 10.0.1.1 คือหมายเลข ip ของ radius server
ได้ผลแสดงข้อความดังตัวอย่าง
Sending Access-Request of id 246 to 10.0.1.1:1812
User-Name = \"root\"
User-Password = \"passwordroot\"
NAS-IP-Address = 10.0.1.2
NAS-Port = 0
rad_recv: Access-Accept packet from host 10.0.1.1:1812, id=246, length=20

ถึงขั้นตอนนี้เป็นอันเปิดใช้ระบบ radius server ได้แล้ว


ขั้นตอนการทำงานของ configuration ของ freeradius
หากเป็น ubuntu คือแฟ้ม /etc/freeradius/radiusd.conf
หากเป็น fedora คือแฟ้ม /etc/raddb/radiusd.conf
มีการปรับค่าของระบบต่างๆ

เมื่อ radius server ได้รับการติดต่อจากผู้ใช้ radius client
วิธีการตรวจสอบคุณสมบัติของผู้ใช้อยู่ในส่วนที่ชื่อ authorize {...}
ภายใน authorize {...} นี้ ประกอบด้วยชื่อ modules ตรวจสอบต่างๆ

หากคุณสมบัติไม่ตรง ปรกติแล้วระบบก็จะรีบดีดออกมาพร้อมแจ้ง reject
แต่เราสามารถกำหนดให้ไปตรวจสอบต่อกับ authorize modules
เรียงลำดับอันถัดๆไปที่เหลืออื่นๆได้อีก

หากคุณสมบัติผ่าน ก็จะเข้าขั้นตอนตรวจสอบรหัสผ่านของผู้ใช้ว่าถูกต้องหรือไม่
โดย authorize modules จะเลือก modules ที่ต้องการเอง จากส่วนที่ชื่อ authenticate {...}

หากรหัสผ่านถูกต้อง ก็จะเข้าสู่ส่วนของ postauth {...}
เป็นการตรวจสอบทิ้งท้ายก่อนส่งคืนค่ากลับให้แก่ radius client ที่ติดต่อมา

การบันทึกประวัติใช้งานอยู่ในส่วน accounting {...}

modules ทุกตัวที่ใช้งาน จะต้องได้รับการประกาศไว้ก่อนแล้ว อยู่ในส่วนชื่อ modules {...}


*** แนะนำให้ทำขั้นตอนนี้ด้วย เลิกใช้ module file
เพราะ module files ทำงานแล้วอาจเจอปัญหาแปลกๆ

หลังจากที่ radiusd ทำงานได้ดีแล้ว หากต้องการให้ radiusd ตรวจสอบผู้ใช้จากแฟ้ม /etc/passwd
ขอแนะนำให้มีการแก้ไขปรับปรุงดังนี้คือ โดย default ในแฟ้ม /etc/raddb/radiusd.conf
ส่วนของ authorize {...} มีการใช้ module ชื่อ files
ที่สั่งให้ระบบไปเปิดแฟ้ม users เพื่อทำงานต่อ
หากเป็น ubuntu คือ /etc/freeradius/users
หากเป็น fedora คือ /etc/raddb/users
ผลคือหากผ่าน module files แล้ว จะไม่สามารถไหลต่อไปให้ modules ที่เหลือถัดไปอีก
แนะนำให้เลิกใช้ module files แล้วสร้าง module ใหม่เพื่อการตรวจสอบกับแฟ้ม /etc/passwd
หากเป็น ubuntu ให้แก้ไขแฟ้ม /etc/freeradius/radiusd.conf
หากเป็น fedora ให้แก้ไขแฟ้ม /etc/raddb/radiusd.conf

ส่วนของ modules {...} ที่บริเวณข้อความ passwd etc_smbpasswd {...}
...
ให้เพิ่ม module ใหม่ โดยแทรกบรรทัดข้อความว่า
passwd mypasswd {
filename = /etc/shadow
format = \"*User-Name::\"
authtype = unix
}

ส่วนของ authorize {...} ที่บริเวณข้อความขึ้นต้นด้วย authorize {
...
ให้ comment บรรทัด files เพื่อยกเลิกค่านี้
แล้วแทรกเพิ่มบรรทัดข้อความเพิ่ม กลายเป็นว่า
# files
mypasswd {
ok = return
}

เสร็จแล้วให้สั่งทำงานใหม่
หากเป็น ubuntu ใช้คำสั่ง /etc/init.d/freeradius reload
หากเป็น fedora ใช้คำสั่ง /etc/init.d/radiusd reload
ทดสอบผลงานด้วยคำสั่ง radtest root password-root localhost 0 testing123
หากได้ผลข้อความประมาณว่า
Sending Access-Request of id 82 to 127.0.0.1:1812
User-Name = \"root\"
User-Password = \"password-root\"
NAS-IP-Address = 10.0.1.2
NAS-Port = 0
rad_recv: Access-Accept packet from host 127.0.0.1:1812, id=82, length=20
โดยมีผลการแจ้งว่า Access-Accept แสดงว่าถูกต้องตามต้องการแล้ว


หากต้องการตรวจสอบผู้ใช้กับ mail server ผ่าน imap ให้ทำดังนี้

ตัวอย่างนี้จะตรวจสอบกับ mail server ชื่อ your.mail.server

ต้องติดตั้ง php และ php-imap ก่อนแล้ว
หากเป็น ubuntu ติดตั้งด้วยคำสั่ง
apt-get install php5 php5-imap php5-cli
แล้วแก้ไขแฟ้ม /etc/php5/cli/php.ini เพิ่มให้มีบรรทัดว่า
extension=imap.so

หากเป็น fedora ติดตั้งด้วยคำสั่ง yum install php php-imap

ต่อไปสร้างแฟ้ม /root/imap.php ให้มีเนื้อหาว่า
<?php
error_reporting(0);
$host = $argv[1];
$username = $argv[2];
$password = $argv[3];
$imap_host=\"{\" . $host . \":143/imap/notls}\";
$mbox = imap_open(\"$imap_host\", \"$username\",
\"$password\");
$folders = imap_listmailbox($mbox, \"$imap_host\", \"*\");
if ($folders == false) {
echo \"false\";
} else {
echo \"true\";
}
imap_close($mbox);
?>

สร้างแฟ้มคำสั่ง shell script ชื่อ /root/imap-authen.sh มีเนื้อหาว่า
#!/bin/sh
user=`echo $USER_NAME | cut -d\'\"\' -f2`
password=`echo $USER_PASSWORD | cut -d\'\"\' -f2`
key=`/usr/bin/php /root/imap.php your.mail.server $user $password`
if echo $key|grep -w \"true\" > /dev/null ; then
exit 0
fi
exit 1

สร้างแฟ้มแบบ text ชื่อ /root/myusers มีเนื้อหาว่า
DEFAULT Auth-Type := Accept
Exec-Program-Wait=\"/bin/sh /root/imap-authen.sh\"

หากเป็น ubuntu ให้แก้ไขแฟ้ม /etc/freeradius/radiusd.conf
หากเป็น fedora ให้แก้ไขแฟ้ม /etc/raddb/radiusd.conf
ส่วนของ modules {...} ที่บริเวณข้อความ files {...}
...
ให้เพิ่ม module ใหม่ โดยแทรกบรรทัดข้อความว่า
files myimap {
usersfile = /root/myusers
}

ส่วนของ authorize {...} ที่บริเวณข้อความขึ้นต้นด้วย authorize {
...
แทรกเพิ่มบรรทัดข้อความเพิ่ม กลายเป็นว่า
myimap

เสร็จแล้วให้สั่งทำงานใหม่
หากเป็น ubuntu ใช้คำสั่ง /etc/init.d/freeradius reload
หากเป็น fedora ใช้คำสั่ง /etc/init.d/radiusd reload
แค่นี้ก็เสร็จแล้ว ทดสอบผลงานได้เลย


ถ้าต้องการให้ใช้ได้กับ LDAP ด้วย
หากเป็น ubuntu ต้องติดตั้ง freeradius-ldap เพิ่มเติม
ด้วยคำสั่ง apt-get install freeradius-ldap
แล้วให้แก้ไขแฟ้ม /etc/freeradius/radiusd.conf

หากเป็น fedora ให้แก้ไขแฟ้ม /etc/raddb/radiusd.conf
เพื่อให้รองรับและเชื่อมต่อกับ LDAP server ดังนี้

ส่วนของ modules {...} ที่บริเวณข้อความ
ldap {
**** ให้แก้ไขค่าของ server , basedn ดังตัวอย่าง
server = \"myldap.net\"
basedn = \"dc=my, dc=net\"
**** ให้ comment บรรทัด access_attr เพื่อยกเลิกค่า เนื่องจากไม่ได้ใช้รูปแบบนี้
# access_attr = \"dialupAccess\"

แก้ไขส่วนของ authorize {...} ที่บริเวณข้อความขึ้นต้นด้วย authorize {
...
ให้มีการตั้งค่าเลือก ldap อยู่ด้วย

แก้ไขส่วนของ authenticate {...} ที่บริเวณพื้นที่ขึ้นต้นด้วยข้อความว่า authenticate {
...
# Auth-Type LDAP {
# ldap
# }
*** ให้แก้ไขด้วยการ uncomment บรรทัดข้อความเพื่อให้ระบบกำหนดวิธี LDAP
Auth-Type LDAP {
ldap
}
*** ในส่วนของ authenticate แก้ไขเพียงแค่นี้

เสร็จแล้วให้สั่งทำงานใหม่
หากเป็น ubuntu ใช้คำสั่ง /etc/init.d/freeradius reload
หากเป็น fedora ใช้คำสั่ง /etc/init.d/radiusd reload
ทดสอบใช้งานกับ user บน ldap ได้เลย


หากต้องการตรวจสอบผู้ใช้กับฐานข้อมูลพิเศษของตนเอง

ต้องสร้างแฟ้มแบบ text เพื่อเก็บรายชื่อผู้มีสิทธิ์ใช้งาน
ตัวอย่างนี้คือแฟ้ม /root/myusers.txt มีข้อมูลคือ
root
mama
demo
รายชื่อต้องเรียงลำดับไปบรรทัดละคน
ให้ป้อนรายชื่อเข้าไปตามต้องการ

สร้างแฟ้มคำสั่ง shell script ชื่อ /root/my-authen.sh มีเนื้อหาว่า
#!/bin/sh
valid_file=\"/root/myusers.txt\"
key=`echo $USER_NAME | cut -d\'\"\' -f2`
if grep -w \"$key\" $valid_file > /dev/null ; then
exit 0
fi
exit 1

หากเป็น ubuntu แก้ไขแฟ้ม /etc/freeradius/radiusd.conf
หากเป็น fedora แก้ไขแฟ้ม /etc/raddb/radiusd.conf
ให้เพิ่ม module ใหม่ โดยแทรกบรรทัดข้อความว่า
ส่วนของ modules {...} ที่บริเวณข้อความ exec {...}
ให้เพิ่ม module ใหม่ โดยแทรกบรรทัดข้อความว่า
exec my-auth {
program = \"/bin/sh /root/my-authen.sh\"
wait = yes
input_pairs = request
output_pairs = reply
packet_type = Access-Accept
}

ส่วนของ post-auth {...} ที่บริเวณข้อความขึ้นต้นด้วย post-auth {
...
แทรกเพิ่มบรรทัดข้อความเพิ่ม
my-auth

เสร็จแล้วให้สั่งทำงานใหม่
หากเป็น ubuntu ใช้คำสั่ง /etc/init.d/freeradius reload
หากเป็น fedora ใช้คำสั่ง /etc/init.d/radiusd reload
แค่นี้ก็เสร็จแล้ว ทดสอบผลงานได้เลย


radius server สามารถส่งค่าบอกเวลาที่ยังคงเหลือให้ใช้งาน
โดยส่งค่ากลับมาที่ attribute ชื่อ Session-Timeout
แต่ตัวมันเองคำนวณไม่เป็น ต้องหาวิธีอื่นในการคำนวณเวลา
แล้วส่งกลับมาให้ radius ส่งคำตอบให้อีกทอดหนึ่ง

จากข้อ 13 หากต้องการใส่ค่าเวลาที่เหลือในการใช้งาน
ตัวอย่างเช่นเหลือ 120 วินาที ให้เพิ่มบรรทัดข้อความว่า
echo \"SESSION-TIMEOUT = \\\"120\\\"\"
ลงไปก่อนบรรทัดข้อความ exit 0 ดังตัวอย่าง

if grep -w \"$key\" $valid_file > /dev/null ; then
echo \"SESSION-TIMEOUT = \\\"120\\\"\"
exit 0
fi

เสร็จแล้วให้สั่งทำงานใหม่
หากเป็น ubuntu ใช้คำสั่ง /etc/init.d/freeradius reload
หากเป็น fedora ใช้คำสั่ง /etc/init.d/radiusd reload
แค่นี้ก็เสร็จแล้ว PC ที่ติดต่อเข้ามาจะได้รับคำตอบกลับไป
ระบุว่าเหลือเวลาใช้งานอีกเท่าไร ขึ้นกับตัวเลขทีกำหนดส่งออกมา
จากตัวอย่างให้แก้ไขตัวเลข 120 เป็นอื่นๆตามต้องการ


แนะนำให้ยกเลิกการกำหนดค่าการทำงานบางตัวที่ไม่ได้ใช้งาน
โดยการ comment บรรทัดข้อความในแฟ้ม
หากเป็น ubuntu คือแฟ้ม /etc/freeradius/radiusd.conf
หากเป็น fedora คือแฟ้ม /etc/raddb/radiusd.conf

ถ้าไม่ได้ใช้เป็น proxy radius ควรยกเลิก
โดยเปลี่ยนจากเดิม proxy_requests = yes
ให้เป็น proxy_requests = no

ควรยกเลิกบาง authorize ที่ไม่ได้ใช้เช่น
authorize {
# preprocess
# chap
# mschap
# suffix
# ldap ---> ระบบ ldap
# files --> ระบบ UNIX หรือแฟ้ม /etc/shadow


การบันทึกประวัติการใช้งานของ radius โดย defualt จะบันทึกไว้ในพื้นที่
หากเป็น ubuntu อยู่ที่ /var/log/freeradius/radacct
หากเป็น fedora อยู่ที่ /var/log/radius/radacct
โดยแยกเป็น directory ของแต่ละหมายเลข ip ของ radius client
แล้วยังแตกย่อยออกเป็นแฟ้มของแต่วันอีก ซึ่งอาจไม่สะดวกต่อการวิเคราะห์ข้อมูล
เราสามารถเพิ่ม module บันทึกประวัติการใช้งานเพิ่มเติมจากของเดิม ตัวอย่างคือ
ต้องการบันทึกไว้ใน directory ชื่อ /var/log/freeradius/myaccount หรือ /var/log/radius/myaccount
แล้วเก็บแฟ้มแยกเป็นรายวันในรูปแบบ 20060729 ภายในแฟ้มมีรูปแบบว่า
20060729:15:54:05;\"demo\";10.0.0.153;1154163245;\"a5f56ebd6ebc1321
";Start;

20060729:15:55:06;\"demo\";10.0.0.153;1154163306;\"a5f56ebd6ebc1321
";Stop;6
1

ให้ทำดังนี้ สร้างแฟ้มคำสั่ง shell script ชื่อ /root/log-radius-account.sh มีเนื้อหาว่า
#!/bin/sh
export LANG=en.US
###
mydir=\"/var/log/freeradius/myaccount\"
## หากเป็น fedora เปลี่ยนเป็น mydir=\"/var/log/radius/myaccount\"
###
if [ ! -d $mydir ] ; then
mkdir -p $mydir
fi
today=`date \"+%Y%m%d\"`
myfile=\"$mydir/$today\"
if [ ! -e $myfile ] ; then
touch $myfile
fi
mytime=`echo $1|awk \'{print strftime(\"%Y%m%d:%H:%M:%S\",$1)}\'`
echo
\"$mytime;$USER_NAME;$CLIENT_IP_ADDRESS;$1;$ACCT_UNIQUE_SESSION_ID;$ACCT_STATUS_TYPE;$ACCT
_SES
SION_TIME\" >> $myfile

แฟ้ม shell script จบแค่นี้ ต่อไปแก้ไขแฟ้ม radiusd.conf
หากเป็น ubuntu แก้ไขแฟ้ม /etc/freeradius/radiusd.conf
หากเป็น fedora แก้ไขแฟ้ม /etc/raddb/radiusd.conf

ส่วนของ modules {...} ที่บริเวณข้อความ exec {...}
ให้เพิ่ม module ใหม่ โดยแทรกบรรทัดข้อความว่า
exec my-log-account {
wait = no
program = \"/bin/sh /root/log-radius-account.sh %l\"
}

ส่วนของ accounting {...} ที่บริเวณข้อความ accounting {
...
detail
ให้แทรกเพิ่มบรรทัดข้อความว่า
my-log-account

เสร็จแล้วให้สั่งทำงานใหม่
หากเป็น ubuntu ใช้คำสั่ง /etc/init.d/freeradius reload
หากเป็น fedora ใช้คำสั่ง /etc/init.d/radiusd reload

---------------------------------------------------------------------------------
ขอขอบคุณ : http://www.thaibsd.com/webboard/show.php?Category=thaibsd&No=16193

1059
การกู้ข้อมูลในระบบ UNIX

ในระบบ UNIX หรือ LINUX จะใช้ระบบของ device file system ในการติดต่อใช้งานข้อมูลระหว่างระบบและ ดิสก์
[1] เข่น ใน /dev/hda ดังนั้นระบบไฟล์จะทำงานใน device ดังกล่าวจะสามารถมองเป็นรูปแบบของ text ไฟล์ได้
ซึ่งการค้นหาและกู้ไฟล์สามารถใช้คำสั่งที่เกียวกับการค้นหาข้อความได้ เช่น grep, seekcat เป็นต้น
รูปแบบทั่วไปของคำสั่งที่ใช้ในการเรียกไฟล์ในระบบ UNIX มีดังนี้

grep -a -B[size before] -A[size after] 'text' /dev/[your_partition]

** grep ต้องเป็นเวอร์ชั่นของ GNU
size before ขนาดของข้อมูลที่ต้องการตัดก่อนหน้าข้อความ 'text'
size after ขนาดของข้อมูลที่ต้องการตัดหลังข้อความ 'text'
your_partition ไฟล์ device ของดิสก์
ในบางครั้งโครงสร้างของไฟล์อาจจะไม่ต่อเนื่องกัน
ส่งผลทำให้ข้อมูลที่ได้รับเข้ามาอาจจะไม่ถูกต้องตามความต้องการ ดังนั้นเมื่อได้รับผลมาควรใช้ script
perl ในการตัดเอาส่วนที่ไม่ต้องการออก แต่อย่างไรก็ตามข้อมูลในส่วนของ CVS และ RCS
ที่เป็นข้อมูลเกี่ยวกับไฟล์ที่ต้องการกู้ยังสามารถนำมาส่วนในการค้นหาได้

การกู้ข้อมูลในระบบ LINUX

ระบบ LINUX จะมีโปรแกรมช่วยในการดีบัก device file system ที่เรียกว่า debugfs ในโปรแกรมจะมีคำสั่ง
lsdel เพื่อเรียกดูไฟล์ต่างๆ ที่ถูกลบออกจากระบบ
เช่น
# debugfs /dev/hda6
debugfs 1.19, 13-Jul-2000 for EXT2 FS 0.5b, 95/08/09
debugfs: lsdel
1844 deleted inodes found.
Inode Owner Mode Size Blocks Time deleted
749300 1000 100664 27018 2/ 7 Tue May 9 19:08:17 2000
749301 1000 100444 1671 1/ 1 Tue May 9 19:08:17 2000
...... .... ...... .... .. ..........................
944887 1037 100600 597 1/ 1 Sat May 26 18:00:00 2001
717281 1000 100400 1 1/ 1 Sat May 26 18:08:13 2001
32605 1000 100644 15 1/ 1 Sat May 26 18:09:06 2001

จากตัวอย่างโปรแกรมจะแสดงค่าต่างๆ ของ inode หากต้องการนำ output แสดงลงไฟล์ทำได้โดยใช้คำสั่ง
# echo lsdel | debugfs /dev/hda6 > /tmp/lsdel-output
ใช้คำสั่ง dump -p เพื่อนำกู้ข้อมูลตามหมายเลข inode เช่น
debugfs: dump -p <32605> /tmp/recovered_file
ดังนั้นในการใช้งานโปรแกรม debugfs เพื่อกู้ไฟล์คืน นั้นจำเป็นต้องมีข้อมูลของไฟล์ดังนี้
- เจ้าของไฟล์เป็นของใคร
- เมื่อไรที่ไฟล์ถูกลบ
- ค่าประมาณของขนาดของไฟล์
หากไฟล์ที่ต้องการค้นหามีจำนวนมากแล้วผู้ใช้ต้องทำการเขียน script เพื่อช่วยค้นหา และ กู้ไฟล์ที่ต้องการ
Recover [3] เป็นโปรแกรมแบบ shell script ที่ช่วยในการค้นหาและกู้ไฟล์ ในระบบ LINUX ให้ง่ายในการใช้งาน
โปรแกรมจะอาศัยหลักการทำงานของ โปรแกรม debugfs ผ่านคำถามที่เป็นลำดับขั้นเพื่อการค้นหา
ไฟล์ที่ผู้ใช้ต้องการ ซึ่งคำถามคร่าวๆ มีดังนี้
- ชื่อของ Device ของดิสก์
- วัน/เดือน/ปี โดยอาจจะบอกเป็นช่วงได้
- ขนาดสูงสุด และต่ำสุดของไฟล์
- ไอดีของผู้ใช้ (User ID)
- ตัวอักษรที่อยู่ในไฟล์
โปรแกรมจะทำการสรุป ค่าของ inode และรายละเอียดของไฟล์ที่ต้องการกู้และข้อมูลที่กู้มาได้


_------------------------------------------------------------
ขอบคุณข้อมูลดีๆ จาก : http://thaicert.nectec.or.th/paper/unix_linux/recov-file.phpครับ

1060
all application on unix knowledges by golfreeze / install vsftpd in freebsd
« on: มกราคม 23, 2011, 01:02:34 AM »
#freeBSD
การติดตั้ง vsftpd บน FreeBSD

พิมพ์บน command ตามลำดับดังนี้นะครับ

#pw groupadd -g 75 -n ftp
#pw useradd -u 75 -g ftp -c &#8220;FTP Service&#8221; -d /home/ftp -m -s /sbin/nologin -n
ftp
#cd /usr/ports/ftp/vsftpd
#make install clean
#cd /home
#chown root:wheel ftp
#chmod og-w ftp
#vi /usr/local/etc/vsftpd.chroot_list แล้วเพิ่มชื่อ user ที่ต้องการทำ chroot

จากนั้นแก้ไขไฟล์ /usr/local/etc/vsftpd.conf ดังนี้

anonymous_enable=YES
local_enable=YES
write_enable=YES
chroot_list_enable=YES
chroot_list_file=/usr/local/etc/vsftpd.chroot_list
secure_chroot_dir=/home/ftp

แก้ไขไฟล์ /etc/inetd.conf ดังนี้
ftp stream tcp nowait root /usr/local/libexec/vsftpd vsftpd

แล้วพิมพ์ที่ command shell ดังนี้
#killall inetd
#inetd &#8211;Ww
ก็เป็นอันเสร็จเรียบร้อยแล้วครับสำหรับ vsftpd
#ที่มา : www.thaibsd.com

1061
ทุกอย่างเกี่ยวกับ Sun Solaris

###Website download package
http://www.sunfreeware.com

#แตกไฟล์
gunzip file.tar.gz
tar xvf file.tar

#สำหรับ Package ที่ download มาแล้วน่ะครับแตกออกโดย
gunzip gcc-3.3.2-sol10-sparc-local.gz
gunzip libiconv-1.9.2-sol10-sparc-local.gz

ต่อจากนั้นทำการ install ซึ่งคำสั่งจะคล้ายๆ pkg_add ของ freebsd
[ root@mooky:/home/golf] pkgadd -d libiconv-1.9.2-sol10-sparc-local
[ root@mooky:/home/golf] pkgadd -d gcc-3.3.2-sol10-sparc-local


The following packages are available:
1 SMCgcc gcc
(sparc) 3.3.2

Select package(s) you wish to process (or 'all' to process
all packages). (default: all) [?,??,q]: enter ไปเลย

เสร็จจะขึ้นเป็นข้อความ
Installation of <SMCgcc> was successful.

##ถ้าต้องการจะลบ package ที่ลงไป หาจาก pkginfo ก่อนครับ
# pkginfo | grep glib
application SMCglib1 glib

##ได้ชื่อแล้วทำการลบโดย
# pkgrm SMCglib1

ถ้าสงสัยก็ Pm มาได้น่ะครับ เพิ่งลองเหมือนกัน อิอิ

อีกนิดหนึ่งเวลา เช๊ค version ว่าเป็น solaris รุ่นไหนดูได้จาก
#uname -a

ถ้าออกมาเป็น Sun 5.9

น่าจะเป็น Solaris 9 ครับ

เพราะเขาจะนับจุด ด้านหลัง Grin

golfreeze[at]packetlove.com

1062
1 Compile a New Kernel

First you have to compile/install a kernel that supports quota (not enabled by default) (more
information about compiling a new kernel can be found here:
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig-building.html).

cd /usr/src/sys/i386/conf
cp GENERIC MYKERNEL

Edit the file MYKERNEL and add the line

options QUOTA

Then run the following commands:

/usr/sbin/config MYKERNEL
cd ../compile/MYKERNEL

(For FreeBSD version prior to 5.0, use instead:

cd ../../compile/MYKERNEL )

make depend
make
make install


2 Enable Quota

Edit the file /etc/fstab and look for the entry, in which the directory /home is mentioned, e.g.

/dev/ad0s1d /home ufs rw 2 2

Add the words userquota and groupquota as follows:

/dev/ad0s1d /home ufs rw,userquota,groupquota 2 2

To enable quota at boot time you have to add the following lines to /etc/rc.conf:

quota_enable="YES"
check_quotas="YES"

Reboot the system:

shutdown -r now

After the reboot run the following commands:

quotacheck -a
quotaon -a

เราสามารถกำหนด quota ได้โดย

#edquota golf
Quotas for user golf:
/home: blocks in use: 62, limits (soft = 0, hard = 0)
inodes in use: 25, limits (soft = 0, hard = 0)


Change tthis lines as displayed below to set up the limits:

Quotas for user golf:
/home: blocks in use: 62, limits (soft = 1024, hard = 204
inodes in use: 25, limits (soft = 0, hard = 0)

เรากำหนด quota ของ user=golf ไว้แค่ 1M ครับแล้วไม่เกิน 2M

* ภายในไฟล์
o blocks คือ พื้นที่(ขนาดไฟล์) ที่ใช้ไป
o soft คือ Soft Limit เป็น quota ขั้นต่ำ อนุญาตให้ user ใช้พื้นที่เกิน quota นี้ได้
แต่ไม่เกิน grace วัน
o hard คือ Hard Limit เป็น quota สูงสุด ไม่อนุญาตให้ user ใช้พื้นที่เกิน quota นี้ (เกิน
soft ได้ แต่ห้ามเกิน hard)
o inodes คือ จำนวนไฟล์ ที่ใช้ไป โดยมี soft และ hard เช่นเดียวกับ blocks
o grace คือ จำนวนวันที่สามารถใช้พื้นที่เกิน soft limit ได้

หมายเหตุ: หน่วยของพื้นที่ที่ใช้คือ Kilobyte (KB)

* เปิดการใช้งาน User Quota

* แสดงรายละเอียด quota ของทุกๆ user

repquota -a

1063
วันนี้ มีโจทย์ชิวๆ มาลองทำครับ

1.ทำเครื่องให้รัน script Tomcat JSP + PHP ได้

ลองเอา ispconfig 3 มาลองดูด้วยครับ

ผมคิดว่า control panel ตัวนี้ก็เจ๋งดีน่ะครับ เพราะมีทีม พัฒนา ทำออกมาเรื่อยๆ แก้ bug ต่างๆ มาเรื่อยๆ

มี tool ให้จัดการได้เยอะดี ทำพวก mail spam ก็เจ๋งใช้ได้ , จัดการพวก DNS ก็ง่ายๆ

มาเริ่มกันเลยครับ ผมลง กับ debian 5.0.2 ครับ
ลง พวก ssh ntp
#apt-get install ssh ntp ntpdate openssh-server

ถัดมาลง พวก mail gateway ครับ
#apt-get install postfix postfix-mysql postfix-doc mysql-client mysql-server courier-authdaemon
courier-authlib-mysql courier-pop courier-pop-ssl courier-imap courier-imap-ssl libsasl2-2
libsasl2-modules libsasl2-modules-sql sasl2-bin libpam-mysql openssl courier-maildrop getmail4
rkhunter binutils

แล้วมันจะถามคำถาม
New password for the MySQL "root" user: <-- ปปป
Repeat password for the MySQL "root" user: <-- ปปป
Create directories for web-based administration? <-- No
General type of mail configuration: <-- Internet Site
System mail name: <-- server1.packetlove.com
SSL certificate required <-- Ok

#/etc/init.d/mysqld restart
#/etc/init.d/courier-imap-ssl restart
#/etc/init.d/courier-pop-ssl restart

ต่อมาลงพวก scan engine ครับ
#apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop
cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl
libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl

ต่อมาลงพวก web server + php5 ครับ
#apt-get install apache2 apache2.2-common apache2-doc apache2-mpm-prefork apache2-utils libexpat1
ssl-cert libapache2-mod-php5 php5 php5-common php5-gd php5-mysql php5-imap phpmyadmin php5-cli
php5-cgi libapache2-mod-fcgid apache2-suexec php-pear php-auth php5-mcrypt mcrypt php5-imagick
imagemagick libapache2-mod-suphp php5-cli php5-mysql

ทำการ enable module เหล่านี้ซะ
#a2enmod suexec rewrite ssl actions include

ต่อไปลงพวก FTP และกำหนด quota
#apt-get install pure-ftpd-common pure-ftpd-mysql quota quotatool
แก้ไขไฟล์ /etc/default/pure-ftpd-common
#vi /etc/default/pure-ftpd-common
STANDALONE_OR_INETD=standalone
VIRTUALCHROOT=true

แก้ไฟล์ inetd.conf
comment บันทัด ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/pure-ftpd-wrapper

/etc/init.d/openbsd-inetd restart
/etc/init.d/pure-ftpd-mysql start

แก้ไข fstab
#vi /etc/fstab
/dev/sda2 /var ext3 errors=remount-ro,usrquota,grpquota 0 1

#touch /var/quota.user /var/quota.group
#chmod 600 /var/quota.*
#mount -o remount /var
เริ่มใช้งาน quota
#quotacheck -avugm
#quotaon -avug

ลง MyDNS
#apt-get install g++ libc6 gcc gawk make texinfo libmysqlclient15-dev
cd /tmp
wget http://heanet.dl.sourceforge.net/sourceforge/mydns-ng/mydns-1.2.8.25.tar.gz
tar xvfz mydns-1.2.8.25.tar.gz
cd mydns-1.2.8
./configure
make
make install
เสร็จแล้วสร้าง sciprt mydns
#vi /etc/init.d/mydns
----------------------------------------------mydns -----------------------------------------------
#! /bin/sh
#
# mydns Start the MyDNS server
#
# Author: Philipp Kern < phil@philkern.de>;.
# Based upon skeleton 1.9.4 by Miquel van Smoorenburg
# < miquels@cistron.nl>; and Ian Murdock < imurdock@gnu.ai.mit.edu>;.
#
set -e
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/local/sbin/mydns
NAME=mydns
DESC="DNS server"
SCRIPTNAME=/etc/init.d/$NAME
# Gracefully exit if the package has been removed.
test -x $DAEMON || exit 0
case "$1" in
start)
echo -n "Starting $DESC: $NAME"
start-stop-daemon --start --quiet \
--exec $DAEMON -- -b
echo "."
;;
stop)
echo -n "Stopping $DESC: $NAME"
start-stop-daemon --stop --oknodo --quiet \
--exec $DAEMON
echo "."
;;
reload|force-reload)
echo -n "Reloading $DESC configuration..."
start-stop-daemon --stop --signal HUP --quiet \
--exec $DAEMON
echo "done."
;;
restart)
echo -n "Restarting $DESC: $NAME"
start-stop-daemon --stop --quiet --oknodo \
--exec $DAEMON
sleep 1
start-stop-daemon --start --quiet \
--exec $DAEMON -- -b
echo "."
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
exit 1
;;
esac
exit 0
---------------------------------------end of mydns ------------------------------
#chmod +x /etc/init.d/mydns
#update-rc.d mydns defaults

ต่อไปลงพวก web เก็บ log
#apt-get install vlogger webalizer
ลงพวก jailkit
apt-get install build-essential autoconf automake1.9 libtool flex bison
cd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.5.tar.gz
tar xvfz jailkit-2.5.tar.gz
cd jailkit-2.5
./configure
make
make install
cd ..
rm -rf jailkit-2.5*

ต่อไปลง fail2ban
#apt-get install fail2ban

ต่อไปลง webmail
#apt-get install squirrelmail
#ln -s /usr/share/squirrelmail/ /var/www/webmail
ส่วนการ config หาเอาใน google น่ะครับ
หรืออ่านได้ที่
http://www.howtoforge.com/perfect-server-debian-lenny-ispconfig3-p5

ต่อไปลง ispconfig ครับ

#cd /home/xxx
#wget http://golfreeze.packetlove.com/download/ispconfig/ISPConfig-3.0.1.tar.gz
#tar xvfz ISPConfig-3.0.1.tar.gz
#cd ispconfig3_install/install/
#php -q install.php

ถ้าขึ้น error แบบนี้
Notice: Undefined variable: distver in /tmp/ispconfig3_install/install/lib/install.lib.php on line
135
Notice: Undefined variable: distid in /tmp/ispconfig3_install/install/lib/install.lib.php on line
135
Notice: Undefined variable: distbaseid in /tmp/ispconfig3_install/install/lib/install.lib.php on
line 135

Linux Distribution or Version not recognized.
เข้าไปแก้ไฟล์
#vi ispconfig3_install/install/lib/install.lib.php
เปลี่ยน version ให้ตรงกับ os เราแล้วสั่ง
#php -q install.php
อีกรอบ ก็เรียบร้อยครับ

ต่อไปทำการลงพวก apache-tomcat + jdk java + mod_jk ทำหน้าที่เป็น module ที่เข้าไปใช้งานกับ apache
ครับ ถ้าใครใช้ jdk 5 ก็ใช้เป็น apache-tomcat5 ด้วยน่ะครับเพื่อจะได้ไม่ error
#wget http://golfreeze.packetlove.com/download/ispconfig/jdk-1_5_0_20-linux-i586.bin
#chmod +x jdk1.5.0_20-linux-i586.bin
#./jdk1.5.0_20-linux-i586.bin
#mv jdk1.5.0_20 /usr/lib
#cd /usr/lib
#ln -s jdk1.5.0_20 jdk

เขียน JAVA_HOME ไว้ที่ /root/.bashrc
#vi /root/.bashrc
JAVA_HOME="/usr/lib/jdk"
export JAVA_HOME

ลอง echo ดูจะได้
#echo $JAVA_HOME
ออกมาเป็น
/usr/lib/jdk

ต่อไปทำการลง tomcat-apache
#wget http://golfreeze.packetlove.com/download/ispconfig/apache-tomcat-5.5.28.tar.gz
#mv apache-tomcat-5.5.28 /usr/lib
#cd /usr/lib
#ln -s apache-tomcat-5.5.28 apache-tomcat
ทำการ running tomcat ดูครับ
#cd /usr/lib/apache-tomcat/bin
#sh startup.sh
#sh shutdown.sh

ต่อไปลง tomcat-connector หรือ mod_jk.so ครับเอาไว้ connect กับ apache2 ครับ
#apt-get install libapache2-mod-jk
ลองเช๊ค น่ะครับ หลังจาก install เสร็จมันจะ load module เข้ามาให้ที่
/usr/lib/apache2/modules/mod_jk.so

เขียนไฟล์ workers.properties
#touch /etc/apache2/workers.properties

ใส่ดังนี้
-----------------------------------workers.properties
---------------------------------------------------------------
workers.tomcat_home=/usr/lib/apache-tomcat
workers.java_home=/usr/lib/jdk

ps=/

worker.list=worker1

worker.worker1.port=8009
worker.worker1.host=localhost
worker.worker1.type=ajp13
worker.worker1.lbfactor=1

worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=worker1

worker.inprocess.type=jni

worker.inprocess.class_path=$(workers.tomcat_home)$(ps)lib$(ps)tomcat.jar

worker.inprocess.cmd_line=start

worker.inprocess.jvm_lib=$(workers.java_home)$(ps)jre$(ps)lib$(ps)
i386$(ps)classic$(ps)libjvm.so

worker.inprocess.stdout=$(workers.tomcat_home)$(ps)logs$(ps)inprocess.stdout
worker.inprocess.stderr=$(workers.tomcat_home)$(ps)logs$(ps)inprocess.stderr

-------------------------------------------------------จบไฟล์
---------------------------------------------

ต่อไปทำการ แก้ไขไฟล์ server.xml ไฟล์นี้เปรียบได้กับ httpd.conf ของ apache2 ครับ
ไฟล์นี้ของผม แก้ไขเพื่อใช้งานกับ ispconfig น่ะครับ โดยให้รันที่ port "2117"
ถ้าใครอยากได้ port อื่นก็เปลี่ยนเอาครับ
----------------------------------------- server.xml
-------------------------------------------------------
<Server port="8005" shutdown="SHUTDOWN">

<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListen
er" />
<Listener className="org.apache.catalina.storeconfig.StoreConfigLifecycleListe
ner"/>

<!-- Global JNDI resources -->
<GlobalNamingResources>

<!-- Test entry for demonstration purposes -->
<Environment name="simpleValue" type="java.lang.Integer"
value="30"/>

<!-- Editable user database that can also be used by
UserDatabaseRealm to authenticate users -->
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />

</GlobalNamingResources>


<!-- Define the Tomcat Stand-Alone Service -->
<Service name="Catalina">

<!-- A "Connector" represents an endpoint by which requests are received
and responses are returned. Each Connector passes requests on to the
associated "Container" (normally an Engine) for processing.
-->

<!-- Define a non-SSL HTTP/1.1 Connector on port 2117 (default 8080) -->
<Connector port="2117" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="5"
maxSpareThreads="75"
enableLookups="false" redirectPort="8443"
acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true"
/>

<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009"
enableLookups="false" redirectPort="8443"
protocol="AJP/1.3" />

<!-- Define a Proxied HTTP/1.1 Connector on port 8082 -->
<!-- See proxy documentation for more information about using this. -->
<!--
<Connector port="8082"
maxThreads="150" minSpareThreads="25"
maxSpareThreads="75"
enableLookups="false" acceptCount="100"
connectionTimeout="20000"
proxyPort="80" disableUploadTimeout="true" />
-->

<!-- An Engine represents the entry point (within Catalina) that processes
every request. The Engine implementation for Tomcat stand alone
analyzes the HTTP headers included with the request, and passes them
on to the appropriate Host (virtual host). -->

<!-- Define the top level container in our container hierarchy -->
<Engine name="Catalina" defaultHost="localhost">

<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>

<!-- Define the default virtual host -->
<!--
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">

<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs" prefix="localhost_access_log."
suffix=".txt"
pattern="common" resolveHosts="false"/>
</Host>
-->
<!-- www.example.com input for testing website kub -->
<Host name="www.example.com"
appBase="/var/www/example.com/web/xxx"
unpackWARs="true" autoDeploy="true">

<Context path="" docBase="jsp-examples"
debug="0" reloadable="true"/>

<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs" prefix="web1_access_log."
suffix=".txt"
pattern="common" resolveHosts="false"/>
</Host>
<Listener className="org.apache.jk.config.ApacheConfig"
modJk="/usr/lib/apache2/modules/mod_jk.so"
workersConfig="/etc/apache2/workers.properties"/>

</Engine>

</Service>

</Server>
---------------------------------- server.xml
-------------------------------------------------------
Reload configuration มันจะสร้างไฟล์ /usr/lib/apache-tomcat/conf/auto/mod_jk.conf ให้ครับ
#cd /usr/lib/apache-tomcat/bin
#sh shutdown.sh
#sh startup.sh
แล้วใส่ mod_jk.conf เข้าไปที่ apache2.conf ครับ
#vi /etc/apache2/apache2.conf
Include /usr/lib/apache-tomcat/conf/auto/mod_jk.conf

เพิ่ม config นี้ลงไปที่ vhosts_ispconfig.conf ครับ
# Send servlet for context /servlets-examples to worker named worker1
JkMount /*/servlet/* worker1
# Send JSPs for context /jsp-examples to worker named worker1
JkMount /*.jsp worker1

เสร็จแล้วทำการ copy file jsp เพื่อทดสอบ
#cp -R /usr/lib/apache-tomcat/webapps/jsp-examples /var/www/example.com/web/xxx/.

เสร็จแล้วทำการ reload config ทั้ง apache และ tomcat ครับ
#/etc/init.d/apache2 restart
#cd /usr/lib/apache-tomcat/bin
#sh shutdown.sh
#sh startup.sh

แล้วทดสอบเข้าเว็บ

ไปเขียน ไฟล์ hosts

10.x.x.x www.example.com

แล้วเรียกเว็บดูครับ

http://www.example.com:2117/jsp-examples/ครับ ก็ใช้งาน script jsp /servlet ได้แล้ว

ส่วน ISPconfig ก็เข้าที่
http://localhost:8080ครับผม
default user pass = admin

เรียบร้อยครับ ถ้าหากมีตรงไหนผิดพลาดก็แนะนำ ได้น่ะครับ
MSN & Email = golfreeze[at]packetlove.com

Pages: 1 ... 69 70 [71] 72 73