Sep 25
llunระบบ Apache, Proxy, ssh, tunneling
อุปกรณ์ที่มี
- Apache web server ที่ติด mod_proxy และ mod_proxy_connect หรือ Web proxy server อะไรก็ได้ที่รองรับคำสั่ง CONNECT
- Proxytunnel
- SSH client
เริ่มจากตั้งค่าให้ Apache ก่อน โดยกำหนดให้ Apache เป็น Forward Proxy
<VirtualHost *:80>
ServerName blah.com
ProxyRequests On
ProxyVia On
AllowCONNECT 22 80 443 563
<Proxy *>
Order allow,deny
Allow from all
</Proxy>
</VirtualHost>
- ProxyRequests เพื่อให้ Apache ทำตัวเป็น ForwardProxy เอา request เรียกไปที่เครื่องอื่นต่อได้
- ProxyVia เพื่อให้ Apache แปะไปที่ request ที่เรียกต่อไปด้วยว่า เรียกผ่าน Proxy ที่ไหนมา
- AllowCONNECT ไว้บอกว่าจะใช้คำสั้ง CONNECT ยิงไปที่ปลายทางได้ที่ port ไรบ้าง
- <Proxy wildcard-url> เพื่อกำหนดขอบเขตของ Host ที่จะให้ใช้ Proxy นี้เรียกต่อได้
จากนั้นไปเอา Proxytunnel มาคอมไพล์และติดตั้ง (ถ้าเป็น Linux คาดว่าจะสามารถทำผ่าน repository ได้เลยมั้ง Windows ก็มี .exe ให้ เพราะงั้นสามารถใช้ได้หมด) ความสนุกที่เหลือคือ เรียกใช้คำสั่ง
ssh user@targethost -o ProxyCommand='proxytunnel -p proxy1:port -r proxy2:port -d %h:%p -H "User-Agent: Mozilla/4.0 ( compatible\; MSIE 6.0\; Win32 ) \n"'
สำหรับ -r จะใส่หรือไม่ใส่ก็ได้ แต่ใช้สำหรับกรณีที่ต้องใช้ Proxy มากกว่า 1 ที่ ส่วน targethost คือเครื่องภายในเครือข่ายที่อยู่ที่เดียวกับ proxy ปลายทางที่ใส่ไว้ใน -r (หรือ -p ถ้าไม่ได้ใส่ -r ไว้)
รู้สึกซับซ้อนมาก จริงๆ มี Option สำหรับ bind port หรือจะทำให้เป็น Sock Server อีกแต่จะใช้แล้วค่อยมาเขียนจดอีกที
Aug 09
llunระบบ control panel, debian, ispconfig, lenny
หลังจากเลื่อนมาหลายรอบพร้อมกับหา Host Control Panel มาหลายตัว วันศุกร์ก็เลยยอมฆ่าตัวตายเข้าไปลง ISPConfig ที่เซิร์ฟเวอร์ ตอนแรกนึกว่าจะแป๊บเดียวเสร็จที่ไหนได้ วันนี้ก็ยังไม่ค่อยเรียบร้อยดี แต่เว็บหลักๆ ก็กลับมากันหมดแล้ว
ก่อนที่จะเลือก ISPConfig ก็มองตัวอื่นมาหลายตัวมากทั้งที่เสียตังและไม่เสีย แถมด้วยแต่ก่อนขี้เกียจ อยากลองของยากอีกต่างหาก คิดจะทำเองสำหรับ FreeBSD แต่สุดท้ายไม่มีเวลา จะเอาตัว Opensource มาดัดแปลงก็เหนื่อยเพราะส่วนใหญ่ไม่รองรับ มองไปที่ฝั่งเสียตัง ตัวที่ถูกสุดก็ยังไม่รองรับ FreeBSD เลยจำใจเปลี่ยนมาใช้ Debian (จริงๆ ลองคำนวนค่าใช้จ่ายสำหรับ cPanel กับ Plesk ไว้ด้วย แต่ไหนๆ แล้วมี ISPConfig จะเสียตังไปทำไม) แล้วก็เปิดเว็บ ทำตามแบบสบายๆ เพราะ ISPConfig มีคู่มือสำหรับ debian ละเอียดพอสมควร แต่ติดตั้งโปรแกรมครบทุกอย่างเรียบร้อย ขั้นตอนที่เหนื่อยที่สุดคือการย้ายข้อมูลให้ตรงกับโครงสร้างไฟล์ด้านล่างมันเนี๊ยะแหละ เล่นเอาวันนี้เหนื่อยเลย
สำหรับ Feature ที่เห็นแล้วถูกใจคือมันกำหนด cron, shell ผ่านเว็บได้ที่เหลือก็งั้นๆ ไม่ค่อยมีอะไรพิเศษ แต่ว่ายังไม่ได้ลองเอา DTC หรือ ispCP Omega มาลงเปรียบเทียบดู @sugree ใช้ DTC อยู่แต่ @manatsawin บอกว่าไม่ผ่าน งั้นก็เหลือ IspCP Omega ซึ่งก็คงไม่ต้องลองเองเพราะ @jingjing จะลองให้ ตอนนี้ก็เล่น ISPConfig ดูไปเรื่อยๆ ก่อน คิดว่าคงต้องมีอะไรปรับอีกพอสมควร ก็หวังว่าชีวิตจะดีขึ้นหลังจากมี Control Panel กับเขาแล้ว
เพิ่มเติม: เหมือนลืมไปอีกเจ้าแฮะ VHCS เห็นแล้วท่าทางจะใช้ง่ายด้วย ไว้เก็บเป็นอีกทางเลือกละกันถ้า ISPConfig งอแง
Jan 11
llunระบบ Apache, benchmark, load test
กลางๆ สัปดาห์ที่แล้วพี่ที่ทำงานย้ายเครื่องที่เก็บ Trac และทำใหม่ ตอนแรกก็รู้สึกว่าช้าเมื่อเทียบกับที่เคยทำ ลองเปลี่ยนวิธีดูให้เหมือนกันกลับช้ากว่าเก่า เข้ามาใน IRC ถามว่าเป็นเพราะอะไรกลับได้ของเล่นมาใหม่ชิ้นนึงคือ ab ตอนแรกก็งงว่ามันคืออะไร ลองเล่นดูถึงได้เข้าใจ ก็เลยเริ่มจาก Trac ที่คิดว่าเร็วก่อน ผลปรากฏว่า
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking project.nytes.net (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests
Server Software: Apache/2.2.9
Server Hostname: project.nytes.net
Server Port: 80
Document Path: /
Document Length: 6008 bytes
Concurrency Level: 100
Time taken for tests: 33.960 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 6455000 bytes
HTML transferred: 6008000 bytes
Requests per second: 29.45 [#/sec] (mean)
Time per request: 3395.973 [ms] (mean)
Time per request: 33.960 [ms] (mean, across all concurrent requests)
Transfer rate: 185.62 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 10 253.0 0 7957
Processing: 0 3280 2846.3 2567 16780
Waiting: 0 3278 2846.7 2566 16779
Total: 134 3290 2846.9 2571 16780
Percentage of the requests served within a certain time (ms)
50% 2571
66% 3703
75% 4661
80% 5346
90% 7370
95% 9158
98% 10729
99% 13626
100% 16780 (longest request)
ดูทั้งหมดแล้วสนใจอยู่ค่าเดียวคือ ค่าเฉลี่ยที่เว็บนี้รับได้คือประมาณ 30 requests ต่อวิ เหมือนเร็วนะแต่ลองเทียบกับเว็บอื่นในเครื่องมันกลับช้าลงไปเลยหละเพราะเว็บอื่นมันดันไปวิ่งๆ อยู่ที่ 400 – 500 requests ต่อวิ -_-! ว่าจะเทียบกับ redmine ด้วยแต่ขี้เกียจลงเพิ่มเลยไว้ก่อน
จริงๆ นี่เป็นเครื่องมือที่สองที่ได้เล่นไว้สำหรับทดสอบความสามารถของบริการต่างๆบนเซิร์ฟเวอร์ ตัวแรกคือ JMeter แต่อันนั้นจะทำงานต้องต้องมีจาวาในเครื่อง ก็เลยขี้เกียจลอง แต่ข้อดีของ JMeter คือมันทำอะไรได้เยอะกว่ามาก และสามารถแสดงกราฟให้เห็นได้ทันที แต่ ApacheBench หากอยากดูกราฟต้องให้เซฟมาเป็นไฟล์ แล้วเอามาดูอีกที และก็สามารถทดสอบได้เฉพาะ http/https เท่านั้น ถ้าไว้ทดสอบเว็บทั่วไปเท่านี้ก็คงเพียงพอแล้วมั้ง
Older Entries