วิธีจูน apache และ mysql

maxclients ของ apache สูตรคำนวณคือแรมหาร 50 ครับ แรม 24GB ก็เซตประมาณ 480 – 512 ไม่เกินนั้น

ส่วนของ my.cnf นี่บอกยากครับ หลักๆ ใช้ความรู้สึกเอามากกว่า

ด้านล่างนี้เป็นค่าเฉลี่ยสำหรับเครื่อง hosting ที่มีแรมมากกว่า 8GB ครับ ค่าที่ยังปรับเพิ่มได้อีกมี key_buffers กับ innodb_buffer_pool_size นอกนั้นไม่ควรปรับเพิ่ม (max connections ปรับเพิ่มได้แต่ไม่เกิน 500 แต่ไม่แนะนำให้ปรับโดยเด็ดขาด)

[mysqld]
local-infile=0

innodb_buffer_pool_size=256M
innodb_additional_mem_pool_size=1M
innodb_log_buffer_size=500K
innodb_thread_concurrency=2
innodb_file_per_table

skip-character-set-client-handshake
skip-name-resolve
max_connections = 300
key_buffer = 512M
myisam_sort_buffer_size = 32M
join_buffer_size = 1M
read_buffer_size = 1M
sort_buffer_size = 2M
read_rnd_buffer_size = 1M

table_cache = 1536
thread_cache = 4
thread_concurrency = 2
thread_cache_size = 256
wait_timeout = 3600
connect_timeout = 10
max_tmp_tables = 256
tmp_table_size = 128M
max_allowed_packet = 16M
max_connect_errors = 10
query_cache_limit = 1M
query_cache_size = 32M
query_cache_type = 1
query_prealloc_size = 16384
query_alloc_block_size = 16384
max_heap_table_size = 128M

 

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
open_files_limit = 16384

 

Credit: icez

Robots.txt คืออะไร ?

Robots.txt คืออะไร ?
robots.txt เป็นไฟล์ที่บอกให้ Search Engine เช่น google ,yahoo มาเก็บข้อมูลในหน้าเว็บของเรา ซึ่งในทางปฏิบัติแล้ว มันจะเก็บทุกส่วนของเว็บไซต์เรา ซึ่งถ้าเราไม่ต้องการให้มันเรียกเก็บข้อมูลในส่วนไหน เราก็สามารถป้องกันได้ ด้วยไฟล์ robots.txt นี้เอง

โรบอต (Robot) เป็นโปรแกรมเก็บข้อมูลในอินเตอร์เน็ต ซึ่งบางครั้ง เรียกว่าสไปเดอร์ (Spider) หรือ ครอว์เลอร์(Crawler) จะทําหน้าที่รวบรวมไฟล์ HTML เพื่อมาเป็นข้อมูล สําหรับสร้างดัชนีค้นหา ให้กับ เสิร์จเอ็นจิน (Search Engine) โดยทั่วไปแล้ว โรบอตจะกลับมาที่เว็บไซต์ที่อ่านไปแล้ว เพื่อตรวจสอบ การเปลี่ยนแปลง ตามระยะเวลาที่กําหนด

ดังนั้นเราต้องสร้างไฟล์ robots.txt ขึ้นมา เพื่อกำหนดว่าจะให้ Robot เข้าไปยังโฟลเดอร์ไหนได้บ้าง

แต่คำถามตอนนี้คือ จะสร้างมันยังไง ?

วิธีการคือให้สร้างไฟล์ที่ชื่อ robots.txt ขึ้นมาจากนั้นนำมาวางไว้ที่ Root Directory (ไดเรกเทอรี่เริ่มต้นของเว็บไซค์)
เช่นเว็บของผมนะ http://www.idatabaseblog.com/robots.txt

หลังจากนั้นก็อปปี้ข้อความนี้ลงไปในไฟล์ robotx.txt ครับ

User-Agent: *
Allow: /
Sitemap: http://yourdomain.com/sitemap.xml

ซึ่งข้อความข้างต้นนี้เป็นรูปแบบพื้นฐานในการสร้างไฟล์ robots.txt ที่ถูกต้องครับ
โดย Allow: / หมายควายว่า ให้มันเก็บข้อมูลได้ทั้งหมดเลยครับ ส่วน
Sitemap: http://yourdomain.com/sitemap.xml  ให้ใส่ที่อยู่ URL ของ sitemap เราครับ ^^

ที่นี้เราลองมาดูตัวอย่างนี้แล้วกันนะครับ เป็นกรณีที่สร้างไฟล์ robots.txt ให้เก็บข้อมูลในบางส่วนที่เราต้องการเปิดเผย

User-agent: *
Allow: /content
Disallow: /admin
Allow: /pic
Disallow: /xxx
Sitemap: http://yourdomain.com/sitemap.xml

จากตัวอย่างนี้จะเห็นได้ว่า

คำสั่ง Allow ก็คืออนุญาติให้มันเก็บไดเรกทอรี่ที่ระบุไว้ซึ่งในตัวอย่างคือ โพลเดอร์ content และ pic

ส่วนคำสั่ง Disallow ก็คือคำสั่งที่ไม่อนุญาติให้มันเก็บไดเรกทอรี่ที่ระบุไว้ซึ่งในตัวอย่างคือ admin และ xxx

เห็นไหมครับ การสร้างไฟล์ robots.txt ง่ายจะตาย แถมมีข้อดีหลายอย่างด้วยในการทำ SEO

แต่ทั้งนี้ทั้งนั้น ก่อนที่ผมจะเขียนบทความนี้มีหลายคนถามผมมาเยอะเลยเกินว่า จะสร้างไฟล์ robots.txt ยังไงให้เจ๋ง

อันนี้ผมก็ตอบไม่ได้นะครับ ผมก็เลยบอกว่า ถ้าอยากสร้างให้เจ๋งๆ ลองไปแงะประตูบ้าน เว็บดังๆเขาดูสิ ว่าเขาเขียนอะไรบ้าง ^^

http://www.google.com/robots.txt

User-agent: *
Allow: /searchhistory/
Disallow: /news?output=xhtml&
Allow: /news?output=xhtml
Disallow: /search
Disallow: /groups
Disallow: /images
Disallow: /catalogs
Disallow: /catalogues
Disallow: /news
Disallow: /nwshp
Allow: /news?btcid=
Disallow: /news?btcid=*&
Allow: /news?btaid=
Disallow: /news?btaid=*&
Disallow: /setnewsprefs?
Disallow: /index.html?
Disallow: /?
Disallow: /addurl/image?
Disallow: /pagead/
Disallow: /relpage/
Disallow: /relcontent
Disallow: /sorry/
Disallow: /imgres
Disallow: /keyword/
Disallow: /u/
Disallow: /univ/
Disallow: /cobrand
Disallow: /custom
Disallow: /advanced_group_search
Disallow: /googlesite
Disallow: /preferences
Disallow: /setprefs
Disallow: /swr
Disallow: /url
Disallow: /default
Disallow: /m?
Disallow: /m/?
Disallow: /m/lcb
Disallow: /m/news?
Disallow: /m/setnewsprefs?
Disallow: /m/search?
Disallow: /m/trends
Disallow: /wml?
Disallow: /wml/?
Disallow: /wml/search?
Disallow: /xhtml?
Disallow: /xhtml/?
Disallow: /xhtml/search?
Disallow: /xml?
Disallow: /imode?
Disallow: /imode/?
Disallow: /imode/search?
Disallow: /jsky?
Disallow: /jsky/?
Disallow: /jsky/search?
Disallow: /pda?
Disallow: /pda/?
Disallow: /pda/search?
Disallow: /sprint_xhtml
Disallow: /sprint_wml
Disallow: /pqa
Disallow: /palm
Disallow: /gwt/
Disallow: /purchases
Disallow: /hws
Disallow: /bsd?
Disallow: /linux?
Disallow: /mac?
Disallow: /microsoft?
Disallow: /unclesam?
Disallow: /answers/search?q=
Disallow: /local?
Disallow: /local_url
Disallow: /froogle?
Disallow: /products?
Disallow: /froogle_
Disallow: /product_
Disallow: /products_
Disallow: /print
Disallow: /books
Disallow: /patents?
Disallow: /scholar?
Disallow: /complete
Disallow: /sponsoredlinks
Disallow: /videosearch?
Disallow: /videopreview?
Disallow: /videoprograminfo?
Disallow: /maps?
Disallow: /mapstt?
Disallow: /mapslt?
Disallow: /maps/stk/
Disallow: /maps/br?
Disallow: /mapabcpoi?
Disallow: /center
Disallow: /ie?
Disallow: /sms/demo?
Disallow: /katrina?
Disallow: /blogsearch?
Disallow: /blogsearch/
Disallow: /blogsearch_feeds
Disallow: /advanced_blog_search
Disallow: /reader/
Disallow: /uds/
Disallow: /chart?
Disallow: /transit?
Disallow: /mbd?
Disallow: /extern_js/
Disallow: /calendar/feeds/
Disallow: /calendar/ical/
Disallow: /cl2/feeds/
Disallow: /cl2/ical/
Disallow: /coop/directory
Disallow: /coop/manage
Disallow: /trends?
Disallow: /trends/music?
Disallow: /notebook/search?
Disallow: /music
Disallow: /musica
Disallow: /musicad
Disallow: /musicas
Disallow: /musicl
Disallow: /musics
Disallow: /musicsearch
Disallow: /musicsp
Disallow: /musiclp
Disallow: /browsersync
Disallow: /call
Disallow: /archivesearch?
Disallow: /archivesearch/url
Disallow: /archivesearch/advanced_search
Disallow: /base/search?
Disallow: /base/reportbadoffer
Disallow: /base/s2
Disallow: /urchin_test/
Disallow: /movies?
Disallow: /codesearch?
Disallow: /codesearch/feeds/search?
Disallow: /wapsearch?
Disallow: /safebrowsing
Disallow: /reviews/search?
Disallow: /orkut/albums
Disallow: /jsapi
Disallow: /views?
Disallow: /c/
Disallow: /cbk
Disallow: /recharge/dashboard/car
Disallow: /recharge/dashboard/static/
Disallow: /translate_c
Disallow: /translate_suggestion
Disallow: /s2/profiles/me
Allow: /s2/profiles
Disallow: /s2
Disallow: /transconsole/portal/
Disallow: /gcc/
Disallow: /aclk
Disallow: /cse?
Disallow: /tbproxy/
Disallow: /MerchantSearchBeta/
Disallow: /ime/
Disallow: /websites?
Disallow: /shenghuo/search?
Disallow: /support/forum/search?
Disallow: /reviews/polls/
Disallow: /hosted/images/
Disallow: /hosted/life/
Disallow: /newspapers?
Disallow: /search2001/search?

ฮ่าๆๆๆ เทพไหมล่ะพี่น้อง ไม่รู้มันจะเขียนเอาโล่หรือยังไงไม่รู้ -*-

เอาล่ะ บทความนี้ขอจบเพียงเท่านี้แล้วกัน หวังว่าจะถูกใจใครไม่มากก็น้อยนะครับ ^^
นำมาจากhttp://www.idatabaseblog.com/index.php/2008/10/05/robots_txt_exampleครับเห็นว่าน่าสนใจดี

 

bastrad  Thaiseoboard

เทคนิคป้องกันไม่ให้เหล่า Hacker เข้าเว็บผ่าน “ip/~user/” แต่ลูกค้ายังเข้าได้ปกติ

คนที่สามารถทำวิธีนี้ได้คือใช้ Nginx เป็น Web server หรือใช้เป็น Proxy นะครับ กรณีของผมคือใช้ Nginx เป็น Proxy กรองสิ่งต่างๆ แล้วค่อยวิ่งไป apache อีกที
วิธีทำก็คือจะเพิ่ม config ให้ nginx นิดหน่อยดังนี้ครับ

ปกติไฟล์ nginx.conf ที่เราต้องหาๆ และแก้ไขจะอยู่ประมาณนี้ครับ มือใหม่ก็สังเกต สีนะครับ

# ——————————————————————————
server {
listen xxx.xxx.xxx.xxx:9012;
server_name server.hostname.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
# ——————————————————————————

เมื่อหาของตัวเองเจอกันแล้วก็เพิ่มค่า config เข้าไปใหม่ ให้กลายเป็นแบบนี้ครับ
# ——————————————————————————
## New for user
server {
listen xxx.xxx.xxx.xxx:9012;
server_name server.hostname.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

## default server
server {
listen xxx.xxx.xxx.xxx:80;
server_name server.hostname.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
## Block ip/~user
location /~ { return 403; }

}
# ——————————————————————————

ผมเพิ่มอะไรไปบ้าง อาจ งงๆ ดูตามสีนะครับ
อธิบาย นิดหนึ่ง ว่าทำไรไปบ้างสำหรับมือใหม่นะครับ

1. listen proxy server ขึ้นมาใหม่ผ่าน port 9012 เพื่อให้ลูกค้าใช้งาน ip/~user ได้โดยจะผ่าน port 9012 เช่น http://11.11.11.11:9012/~user
2. ทำการ block url ที่ต้องใช้อักษร ~ (ตัวหนอน) เพื่อไม่ให้ Hacker เข้าเว็บผ่าน port 80 แล้วใช้ ip/~user ได้

เสร็จแล้วก็ลอง restart nginx ดูครับ เช็คดูว่ามันทำงานตาม 2 ข้อหรือเปล่า

 

Credit: boy_pishit   Thaihosttalk

ทำให้ gzip ใช้งานหลายๆ core

ทำให้ gzip ใช้งานหลายๆ core

หลายครั้งผมนั่งรอ gzip ทำงานไฟล์ใหญ่เบิ้มๆ แกก็ติ๊งหน่องไปเรื่อยๆ เพราะใช้ cpu ให้เหนื่อยอยู่แค่ core เดียว ส่วน core อื่นๆ ก็นอนเล่นรอเพื่อนทำงานไป

ทนไม่ไหวเลยนั่งหา gzip ที่สามารถทำงานพร้อมกันได้หลายๆ core ก็มาพบ pigz (Parallel Implementation of GZip) : http://www.zlib.net/pigz/

ใช้แทนกันได้เลยครับ และมันจะแตก input เป็น block ย่อยๆ block ละ 128k แล้วแบ่งให้ cpu core ต่างๆ ช่วยกันทำงาน แล้วมาประกอบร่างกันเป็นไฟล์ gz อันเดียว ซึ่งผลลัพธ์ของ pigz สามารถใช้ gzip แตกกลับมาได้ครับ

เอามาแชร์กันเผื่อเป็นประโยชน์ครับ

Credit: pizzaman  Thaihosttalk

เปลี่ยน http://ip/~user มาใช้ domain.hostname

หลังจากที่หลายๆ Host โดน Hacker ทำการ Hack ยก IP มาหลายคน เพราะ Hackerเข้ามาทางช่องทาง http://ip/~user แล้ว access เข้าไปใน userทั่งหมดของ server

ถึงเวลาที่เราจะต้องปิดช่องโหว่นี้เสียที เมื่อปิดแล้วเราจะให้ลูค้าเข้ายังไงละที่นี้ ก็ทำวิธีนี้ไง ไม่ยากและปลอดภัยกว่า ที่สำคัญมีข้อดีเพิ่มคือ กรณีมีหลายๆ โดเมนไม่ต้องให้ลูกค้า set default domain ทำให้มี โดเมนช่วคราวได้ทุกๆ โดเมนเลยครับ

วิธีเข้าโดยเข้าผ่าน {youedomain}.{com/net/org/etc….}.{hostname}

ตัวอย่าง www.domain.com.ns1.dragonhispeed.com แล้วเข้าเว็บชั่วคราวของลูกค้า

วิธีการ

1. เพิ่ม * ใน DNS ให้กับ host name ในที่นี้ คือ *.ns1.dragonhispeed.com >>> IP xxx.xxx.xxx.xxx เมื่อเวลาping มาจะได้เจอ ip ของhostname ของเรา
2. # cp /usr/local/directadmin/data/templates/virtual_host2.conf /usr/local/directadmin/data/templates/custom/virtual_host2.conf
แก้ไขไฟล์ /usr/local/directadmin/data/templates/custom/virtual_host2.conf

ตรง ServerAlias www.|DOMAIN| |DOMAIN| |SERVER_ALIASES เพิ่ม
เป็น ServerAlias www.|DOMAIN| |DOMAIN| |SERVER_ALIASES| www.|DOMAIN|.|HOSTNAME|

3. สั่งให้ DA Update config
# echo “action=rewrite&value=httpd” >> /usr/local/directadmin/data/task.queue

4. ทำการปิดไม่ให้ใช้ http://ip/~user

5. # vi /etc/httpd/conf/extra/httpd-vhosts.conf

 ปิดค่าบรรทัดนี้  (มีอยู่ 2 ที่)
AliasMatch ^/~([^/]+)(/.*)* /home/$1/public_html$2 

6. Restart Apache ซ่ะ
เปลี่ยน http://ip/~user มาใช้ domain.hostname

 

 

Credit: ems  Thaihosttalk