แสดงกระทู้

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 ... 68 69 [70] 71 72 73
1036
all application on unix knowledges by golfreeze / Apache redirect code error403
« on: มกราคม 24, 2011, 11:19:53 AM »
###Redirect code on apache to file "index.php"
<meta http-equiv="refresh" content="0;
URL=http://www.redirect.com">
<meta name="keywords" content="automatic redirection">

###Ask index.html
GET /index.html HTTP/1.0

1037
Mail issue , problem , configuration / postfix vda patch ลงไปเพื่อ ??
« on: มกราคม 23, 2011, 10:26:30 PM »
ตัว vda ลงไปเพื่อ แก้รักษาโรค อะไรอ่านได้ครับ อิอิ

เป็นไทย : เวลาต้องการให้ user มี quota mailbox ของแต่ละ user ต้องลง vda patch เข้าไปช่วยกันครับผม
สำหรับการ patch ต้องเชค version ของ postfix ด้วยนะครับ
หลังจาก check version postfix เสร็จ ต้องทำการ check version ของ database ด้วยว่าใช้ตัวไหน เช่นใช้ openldap

ต้องลง vda ดังนี้
postfix-ldap_2.5.5-1.1-vda0_amd64.deb
postfix_2.5.5-1.1-vda0_amd64.deb


* Mailbox / Maildir size limit, known also as "soft quota", to avoid user take
all you disk space
* Customizable "limit" message when the soft quota limit is reached. NOTE: message
is sent to senders, but NOT to the owner of the mailbox.
* Limit only 'INBOX', because some people use IMAP and don't want the same limit in
IMAP folder that are differents from INBOX.
* Support for 'Courier' style Maildir, usefull for people that use courier as pop3/imap
server and to get fast soft quota summary. Note that it is also compatible with qmail maildir per
default.
* Supports for Courier 'maildirsize' file in Maildir folder that is used to read quotas
quickly. Note that this option is not actived per default and can be dangerous on some NFS client
implementation (like for example Solaris that cache some filesystem operations).
* Customisable suffix for Maildir support, when share same external dict between postfix and
pop3/imap server sometime "Maildir/" suffix is needed to avoid extra database handling
(eg LDAP, MySQL...).

download version ที่ใช้ได้ที่

http://vda.sourceforge.net/VDA/

apt-get build-dep postfix

cd /usr/src
apt-get source postfix

(Make sure you use the correct Postfix version in the following commands. I have Postfix 2.5.5
installed. You can find out your Postfix version by running

postconf -d | grep mail_version

The output should look like this:

server1:/usr/src# postconf -d | grep mail_version
mail_version = 2.5.5
milter_macro_v = $mail_name $mail_version
server1:/usr/src#

)

wget http://vda.sourceforge.net/VDA/postfix-2.5.5-vda-ng.patch.gz
gunzip postfix-2.5.5-vda-ng.patch.gz
cd postfix-2.5.5
patch -p1 < ../postfix-2.5.5-vda-ng.patch
dpkg-buildpackage

dpkg -i postfix_2.5.5-1.1_i386.deb postfix-mysql_2.5.5-1.1_i386.deb

ต้องดูให้ตรง กับ รุ่น os ที่ใช้ด้วยน่ะครับ ว่าเป็น 32 bit or 64 bit

1038
pop00:/home/golf/___script___# telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK Hello there.
user golfs@example.com
+OK Password required.
pass PASSGU
+OK logged in.
LIST
+OK POP3 clients that break here, they violate STD53.
1 1326
2 467
.
RETR 1
+OK 1326 octets follow.
Return-Path: < postmaster@example.com>;
Delivered-To: golfs@example.com
Received: from ldap00.xx.com (ldap00.th.xx.com [10.17.200.22])
by pop00.xx.com (Postfix) with ESMTP id D4B374C8069
for < golfs@example.com>;; Tue, 10 Nov 2009 17:57:00 +0700 (ICT)
Received: from ldap00.xx.com (localhost [127.0.0.1])
by ldap00.xx.com (Postfix) with ESMTP id F14376DF824
for < golfs@example.com>;; Tue, 10 Nov 2009 17:57:00 +0700 (ICT)
Received: (from www@localhost)
by ldap00.xx.com (8.14.3/8.14.3/Submit) id nAAAv0NL085397;
Tue, 10 Nov 2009 17:57:00 +0700 (ICT)
(envelope-from postmaster@example.com)
Date: Tue, 10 Nov 2009 17:57:00 +0700 (ICT)
X-Authentication-Warning: ldap00.xx.com: www set sender to postmaster@example.com using -f
To: golfs@example.com
Subject: Welcome to xx mail service
Message-ID: < 1257850620883_36a8e9eb903b074f4fa6ca13c8395ab9@116.68.150.233>;
X-Mailer: Phamm
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
From: < postmaster@xx.com>;


Welcome to ddd service!
-----------------------------------------------

Dear users,

Thank you for using ddd service.

Please kindly consider change your password periodically for your security.



.
quit
+OK Bye-bye.

1039
####### Linux ##########
ต้องการที่จะเปลี่ยน ip ผ่าน command ครับ
#####check interface
#mii-tools

#route del default gw 10.x.x.x
#route add default gw 192.x.x.x

หรือต้องการให้ network บางตัว route ออกไปคนละ gateway ก็

#route add -net 10.3.0.0/16 gw 10.3.0.1


##############################

##### FREEBSD #######

ถ้าเป็น default gateway แอดด้วย command นี้
#route add default -gateway 10.x.x.x

แต่ถ้ามี subnet ของวงนั้นๆ ด้วย แอดด้วย command
route delete -net 0.0.0.0
route add -net 0.0.0.0 -gateway 192.x.x.x

#######################

1040
ปกติการ Implement ระบบพวก mail ครับ function หนึ่งที่ไม่ควรข้ามไปคือการ เทส ban หรือ block เมลที่
spam และ virus วันนี้เลยมาแนะนำข้อความเพื่อเอาไปใช้ เทสครับ

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

ใส่ข้อความใน message แล้วลองเทสดูได้เลยครับ

##spam email for testing block spam function
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

ลองนำไปใช้งานดูนะครับ

1041
    โจทย์ ใช้ MTA : Postfix
    OS : Freebsd
    ครับ

    จะ set ให้ บาง user= golf@example.com สามารถส่งเมลออกไป domain ข้างนอกไม่ได้ (Ex.
    golfreeze@hotmail.com , sss@yahoo.com )
    แต่ว่ามีให้ user= golfreeze@example.com ส่งได้ จะต้อง set อย่างไงบ้าง

    ก่อนอื่นต้องทำความเข้าใจก่อนว่า ไฟล์ไหนของ postfix ทำงานอย่างไร ทำงานอะไร

    ในกรณีนี้ เราต้องแก้ไขที่ไฟล์ main.cf ครับ

    เพิ่มในส่วนของ

    ###Allow some user sending email off-site #####
    smtpd_sender_restrictions=check_sender_access hash:/usr/local/etc/postfix/sender_restrictions
    smtpd_restriction_classes = local_only
    local_only =
    check_recipient_access hash:/usr/local/etc/postfix/local_domains, reject
    ##### End of Config ########

    แล้วทำการแอด mail account ที่จะใช้กับ policy check_sender_access นีัครับ

    #vi /usr/local/etc/postfix/sender_restrictions
    golf@example.com local_only

    #postmap /usr/local/etc/postfix/sender_restrictions

    #vi /usr/local/etc/postfix/local_domains
    เพิ่ม domain ที่จะให้บังคับใช้งาน policy นี้
    example.com OK
    #postmap /usr/local/etc/postfix/local_domains

    แล้วทำการ restart postfix 1 รอบ แล้วลองส่งดูครับ

    smtp00# telnet localhost 25
    Trying 127.0.0.1...
    Connected to localhost.
    Escape character is '^]'.
    220 smtp.packetlove.com ESMTP Postfix
    helo e
    250 smtp.packetlove.com
    ehlo e
    250-smtp.packetlove.com
    250-PIPELINING
    250-SIZE 102400000
    250-ETRN
    250-AUTH LOGIN
    250-AUTH=LOGIN
    250-ENHANCEDSTATUSCODES
    250-8BITMIME
    250 DSN
    mail from: golf@example.com
    250 2.1.0 Ok
    rcpt to: golfreeze@hotmail.com
    554 5.7.1 < golf@example.com>;: Sender address rejected: Access denied
    quit
    221 2.0.0 Bye
    Connection closed by foreign host.

    ### ใช้งานได้แล้ว ###

m_golfreeze.gif golfreeze [2009-12-08 15:54:50] mail not show 116.68.146.74

1

Comment : 1

    ### อ่านเพิ่มเติมได้ที่

    http://www.postfix.org/RESTRICTION_CLASS_README.html#external

1042
สำหรับสาวก Postfix ครับ

วันนี้มี tools สำหรับเช๊ค email stat traffic มาฝากกันครับ ซึ่งผมได้ลองใช้มาสักพักใหญ่ๆ รู้สึกชอบ
อิอิ

ตัว stat traffic ตัวนี้จะเอา log ของ mail log มาทำการวิเคราะห์นะครับ ซึ่งจะมีปริมาณ การรับ การส่ง
เมลในแต่ละวัน ซึ่งเป็นเมลที่ drop reject หรือ ban ก็ดูได้หมดครับ หรือจะดูเป็น stat ย้อนหลังก็ได้

#freebsd
Packetlove# make search name="pflogsumm"
Port: pflogsumm-1.1.2,1
Path: /usr/ports/mail/pflogsumm
Info: Postfix Log Entry Summarizer
Maint: flo@kasimir.com
B-deps: perl-5.8.9_3
R-deps: p5-Bit-Vector-7.1 p5-Carp-Clan-6.04 p5-Date-Calc-6.3 perl-5.8.9_3
WWW: http://jimsun.LinxNet.com/postfix_contrib.html

install โดย
#cd /usr/ports/mail/pflogsumm
#make install clean

crontab รันโดย
#crontab -e

45 11 * * * /usr/local/bin/pflogsumm -d today /var/log/maillog | /usr/bin/mailx -s "`uname -n` daily mail stats" receiver@email.com

=========================================

##Debian

#apt-get install pflogsumm

แล้วก็รันใน crontab ดังนี้ครับ

#crontab -e
45 11 * * * /usr/sbin/pflogsumm -d today /var/log/mail.log | /usr/bin/mailx -s "`uname -n` daily mail stats" receiver@email.com

โดยที่ receiver@email.com คือ emailปลายทางที่จะให้ระบบgen stat ส่งไปนะครับ

ยังไงก็ลองใช้กันดูนะครับ อิอิ

1043
ไฟล์ที่ต้อง copy คือ

/etc/passwd
/etc/group
/etc/master.passwd

หรือถ้าเลือก user มาก็เลือกมาให้เหมือนกันด้วยน่ะครับ ทั้งสามไฟล์

เสร็จแล้วใช้คำสั่ง

pwd_mkdb -p /etc/master.passwd

เพื่อ rebuilld password .

1044
#on debian
bonnie++ -d /path_check -s 8192 -r 2048 -n 512 -u 0:0

1045
ปกติเรา สามารถ gen (.csr) request ssl cert ได้

ปกติแล้วผมจะใช้ openssl command ครับจัดยังไงนั้นไปดูกันเลย

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

ทำการสร้างคีย์ Key สำหรับ SSL ที่เป็น Key length ขนาด 2048 bit เพราะทาง NIST องค์กรจัดเรื่อง Key ssl
แนะนำให้ใช้เป็นขนาด 2048 bit ก่อน Jan 2014 เพื่อความปลอดภัยครับ ทำไมถึงเป็นเช่นนั้นจะอธิบายต่อไปในกระทู้ล่างๆ ครับผม
และก็ทำให้ support sha256

#openssl req -new -newkey rsa:2048 -nodes -sha256 -out web.csr
ใส่ข้อมูลต่างๆ ลงไปเช่น พวก ประเทศ ที่อยู่ office

ในกรณีถ้าไม่ได้ ไปซื้อ cert เพื่อความน่าเชื่อถือแล้ว แต่ว่าแค่ gen ใช้ในเครื่องก็สามารถ gen crt
ได้ดังนี้ ครับ
#openssl x509 -req -sha256 -days 365 -in /root/server.csr -signkey /root/server.key -out /root/server.crt
#/usr/bin/openssl req -x509 -sha256 -days 9000 -nodes -newkey rsa:4096 -keyout /etc/exim.key -out /etc/exim.cert

แล้ว copy ไปใน path ที่ไฟล์ extra/httpd-ssl.conf เรียกใช้งานดังนี้

SSLCertificateFile "/usr/local/etc/apache22/server.crt"
SSLCertificateKeyFile "/usr/local/etc/apache22/server.key"

เสร็จทำการ restart apache 1 ครั้ง
#/usr/local/etc/rc.d/apache22 restart

เสร็จแล้วลอง เข้าไปดู ข้อมูลใน certificate ได้ครับ

ถ้าจะสร้างเป็นแบบ SAN cert ที่มีหลายชื่อ ให้ใช้แบบนี้ครับ
#openssl req -new -newkey rsa:2048 -nodes -sha256 -out web.csr -config san.cnf

โดยที่ใน san.cnf มี configure ดังนี้
[ req ]
default_bits       = 2048
distinguished_name = req_distinguished_name
req_extensions = v3_req

[req_distinguished_name]
countryName = TH
countryName_default = TH
stateOrProvinceName = Bangkok
stateOrProvinceName_default = Bangkok
localityName = Pakkred
localityName_default = Pakkred
organizationalName = Packetlove
organizationalName_default = Packetlove
organizationalUnitName = IT
organizationalUnitName_default = IT
commonName                 = golfreeze.com
commonName_max = 64

[ v3_req ]
# Extensions to add to a certificate request
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1   = 2golfreeze2.com
DNS.2   = prim.com
DNS.3   = pkl.com
DNS.4   = domain4.com

1046
Lab by golfreeze

#Install DRBD+NFS+HA in debian4.0 R1(AMD64bit)

#ลง drbd ทั้งสองเครื่อง
# apt-get install drbd0.7-module-source
# apt-get install drbd0.7-utils
# apt-get install dpatch
# cd /usr/src
# tar -zxf drbd0.7.tar.gz
# cd /usr/src/modules/drbd
# module-assistant prepare
==press to intall module
# module-assistant automatic-install drbd0.7-module-source
ลง drbd0.7 module
# cd /usr/src
# dpkg -i drbd0.7-module-2.6.18-5-amd64_0.7.21-4+2.6.18.dfsg.1-13etch6_amd64.deb

##Config /etc/drbd.conf ทั้ง 2 เครื่อง
resource r0 {
protocol C;
incon-degr-cmd \"halt -f\";
startup {
degr-wfc-timeout 120;
}
disk {
on-io-error detach;
}
net {
}
syncer {
rate 20M;
group 1;
al-extents 257;
}
on host-a {
device /dev/drbd0;
disk /dev/hda8;
address 10.0.0.10:7789;
meta-disk internal;
}
on host-b {
device /dev/drbd0; แทนdevice ที่จะทำการ mount เข้าเป็น device drbd
disk /dev/sda8; แทน disk ที่จะทำการ Mount เพื่อเก็บเป็น data file server
address 10.0.0.20:7789;
meta-disk /dev/sda7[0]; แทนdisk ที่เก็บ meta-disk ควรสร้างให้ 512M เพราะปกติมันเก็บ
256M
}
}

จัดการลบ fstab ของ /dev/sda8 และ /dev/sda7 ออกจาก /etc/fstab ด้วย ลบทั้ง 2 host เลย
#cp /etc/fstab /etc/fstab.ori
แล้ว umount ออกด้วยเพราะว่าเมื่อ start drbd แล้วมันจะ mount ให้เองอัตโนมัติ
#umount /dev/sda8
#umount /dev/sda7


สั่งให้ drbd ทำงานทั้ง 2 ตัว
# /etc/init.d/drbd start




สั่งให้ เครื่อง DRBD0 ทำงานเป็น \\\"Primary\\\" node ได้
# drbdadm primary all
# drbdsetup /dev/drbd0 primary --do-what-I-say
#modprobe drbd (ทั้งสองเครื่อง)

ทำการสร้าง partition ที่ primary node ที่เดียว
# mke2fs /dev/drbd0
# mkdir -p /mbox/export
# mount /dev/drbd0 /mbox/export
#df -h
แล้วลอง copy ข้อมูลใส่ดู
/dev/drbd0 44G 52M 41G 1% /mbox
#ทำการลง Heartbeat ทั้ง สองเครื่องดังนี้
#apt-get install heartbeat
เพิ่ม config เข้าไปให้ทั้ง สองเครื่อง

#vi /etc/ha.d/ha.cf
debugfile /var/log/ha-debug #เอาไว้ debug ดู error
logfile /var/log/ha-log
logfacility local0
keepalive 2
#deadtime 30 # USE THIS!!!
deadtime 10
#auto_failback on
bcast eth1 #card interface ไหนที่จะให้ใช้งาน
node DRBD0 DRBD1 #มี host อะไรบ้าง


#vi /etc/ha.d/haresources ทั้งสองเครื่องเหมือนกันเพราะ จะให้เครื่อง DRBD0 เป็น primary
DRBD0 IPaddr::10.0.1.169/23/eth1 drbddisk::r0 Filesystem::/dev/drbd0::/mbox::ext2
nfs-kernel-server


#vi /etc/ha.d/authkeys
auth 3
3 md5 kammatanmeditation
#chmod 600 authkeys



#/etc/init.d/heartbeat start
แล้วสั่ง #cat /proc/drbd ก็จะขึ้นแบบนี้ แปลว่าทำงานแล้วครับ
DRBD0:/home/golf# cat /proc/drbd
version: 0.7.21 (api:79/proto:74)
SVN Revision: 2326 build by root@DRBD0, 2008-01-16 01:50:05
0: cs:StandAlone strimary/Secondary ld:Consistent
ns:17 nr:0 dw:33 dr:807319 al:0 bm:492 lo:0 pe:0 ua:0 ap:0
ดู virtual-ip ที่ heartbeat สร้างขึ้นมาก็
#ip addr sh
3: eth1: <BROADCAST,MULTICAST,UP,10000> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:14:5e:fb:fa:26 brd ff:ff:ff:ff:ff:ff
inet 10.0.1.154/23 brd 10.0.1.255 scope global eth1
inet 10.0.1.169/23 brd 10.0.1.255 scope global secondary eth1:0

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



----------------------------
ส่วนในการทำ test สำหรับ check ว่าข้อมูล sync กับเครื่อง slave หรือไม่โดยการถอดสายแลน เครื่อง master
ออกก่อน
แล้วก็ไปดูที่เครื่อง slave มันก็จะ take virtual ip ไปครับ

Check state ได้คือ
#drbdadm state all
ถ้าออกมาเป็น
Primary /secondary
ก็แสดงว่าเครื่องนั้นรันเป็น primary node อยู่

หรือจะดูเป็น real time คือ
#watch \"cat /proc/drbd\"
ก็ได้ครับ

เสร็จทำการลงเป็น nfs-kernel-server ทั้งสองเครื่อง
#apt-get install nfs-kernel-server

ทำการ ลบ init ของ nfs-kernel-server(ทั้งสองเครื่อง) ป้องกันการมีปัญหาในการ
รีสตาร์ตเครื่องแล้ว เกิด error
โดย
#update-rc.d -f nfs-kernel-server remove

เข้าไปแก้ config ของ nfs-kernel-server ที่
#vi /etc/exports
ครับ

1047
พอดี วันนี้ลง os (debian) แล้วกดเร็วไปหน่อยครับ

ไม่ได้เลือกให้ create swap ให้ สำหรับวิธีแก้ปัญหานั้นไม่ยากครับ

หลักการก็คือสร้าง swap file ขึ้นมาแล้วเขียนเข้าไปที่ ไฟล์ rc.local ซึ่งให้มันอ่านตอน boot ทุกครั้ง
ก็จะมี virtual mem ขึ้นมาใช้งานได้แบบ ปกติครับ

สำหรับ ขั้นตอนนั้นลองมาดูเลยครับ

#swapon #ตรวจดูพื้นที่ swap ครับ
สร้าง swap ขนาด 2G ครับ
#dd if=/dev/zero of=/var/swapfile bs=2048 count=2048000
#mkswap /var/swapfile
#swapon /var/swapfile

เสร็จแล้วก็ ลอง top ดูครับก็จะมี swap ขึ้นมาแล้วครับ

ถ้าจะให้มัน create swap ขึ้นมาทุกครั้งที่ boot เครื่องก็
#vi /etc/rc.local
/bin/dd if=/dev/zero of=/var/swapfile bs=2048 count=2048000
/sbin/mkswap /var/swapfile
/sbin/swapon /var/swapfile

เท่านี้เวลา restart server ก็จะทำการเพิ่ม swap ให้ทำงานขึ้น หลังจาก boot เข้า os ครับผม : )
--------------------------------------------------------
step by golfreeze[at]packetlove.com

1048
ภาคที่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

1049
เคยเจอปัญหาเกี่ยวกับ 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 ไฟล์บางจุด

1050
#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

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