Skip to content


postfix+sasl2构建简单邮件服务器

参考http://bbs.chinaunix.net/thread-987344-1-1.html http://linux.vbird.org/linux_server/0390postfix.php

 Postfix-2.4.6 ftp://postfix.get7.biz/postfix/official/postfix-2.4.6.tar.gz

cyrus-sasl-2.1.22 http://download.chinaunix.net/download.php?id=24281&ResourceID=71

cyrus-sasl-2.1.22 + postfix-2.4.6 查看当前sasl版本 #saslauthd -v 关闭当前运行的SENDMAIL: #/etc/rc.d/init.d/sendmail stop 禁止开机运行: #chkconfig -levels 12345 sendmail off 或 #chkconfig sendmail off

关闭原有的sendmail:

mv /usr/sbin/sendmail /usr/sbin/sendmail.OFF

mv /usr/bin/newaliases /usr/bin/newaliases.OFF

mv /usr/bin/mailq /usr/bin/mailq.OFF

chmod 755 /usr/sbin/sendmail.OFF  /usr/bin/newaliases.OFF /usr/bin/mailq.OFF

安装sasl #tar zxvf cyrus-sasl-2.1.22.tar.gz #cd cyrus-sasl-2.1.22 #./configure –prefix=/usr/local/sasl2            (注意使用续行符) –disable-gssapi –disable-anon –disable-sample –disable-digest –enable-plain –enable-login

#make #make install 关闭原有的sasl:

mv /usr/lib/libsasl2.a  /usr/lib/libsasl2.a.OFF

mv /usr/lib/libsasl2.la  /usr/lib/libsasl2.la.OFF

mv /usr/lib/libsasl2.so.2.0.19  /usr/lib/libsasl2.so.2.0.19.OFF

mv /usr/lib/sasl2  /usr/lib/sasl2.OFF

rm /usr/lib/libsasl2.so

rm /usr/lib/libsasl2.so.2

# ln -sv /usr/local/sasl2/lib/*  /usr/lib postfix 2.3以后的版本会分别在/usr/local/lib和/usr/local/include中搜索sasl库文件及头文件,故还须将其链接至此目录中:

ln -sv /usr/local/sasl2/lib/*  /usr/local/lib

ln -sv /usr/local/sasl2/include/sasl/*  /usr/local/include

创建运行时需要的目录并调试启动

mkdir -pv /var/state/saslauthd      

/usr/local/sasl2/sbin/saslauthd  -a  shadow   -d

启动并测试

/usr/local/sasl2/sbin/saslauthd -a shadow 

/usr/local/sasl2/sbin/testsaslauthd -u root -p root用户密码

配置库文件搜索路径

echo “/usr/local/sasl2/lib” >> /etc/ld.so.conf

echo “/usr/local/sasl2/lib/sasl2” >> /etc/ld.so.conf

ldconfig -v

开机自动启动(使用 sasldb时saslauthd可以取消)

echo “/usr/local/sasl2/sbin/saslauthd -a shadow “>>/etc/rc.local

安装postfix #tar zxvf postfix-2.4.6.tar.gz #cd postfix-2.4.6 #make tidy #make makefiles CCARGS=’-DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/local/sasl2/include/sasl’ ‘AUXLIBS=-L/usr/local/sasl2/lib -lsasl2’

#groupadd -g 2525 postfix #useradd -g postfix -u 2525 -s /sbin/nologin -M postfix

#groupadd -g 2526 postdrop #useradd -g postdrop -u 2526 -s /bin/false -M postdrop

#make #make install

按照以下的提示输入相关的路径([]号中的是缺省值,”]”后的是输入值)

  install_root: [/] /   tempdir: [/usr/local/src/ postfix-2.4.5] /tmp   config_directory: [/etc/postfix] /etc/postfix   daemon_directory: [/usr/libexec/postfix] /usr/local/postfix/libexec   command_directory: [/usr/sbin] /usr/local/postfix/sbin   queue_directory: [/var/spool/postfix]   sendmail_path: [/usr/sbin/sendmail]   newaliases_path: [/usr/bin/newaliases]   mailq_path: [/usr/bin/mailq]   mail_owner: [postfix]   setgid_group: [postdrop]        html_directory: [no]      manpages: [/usr/local/man] /usr/local/postfix/man        readme_directory: [no] 这里的postfix将安装在独立的目录/usr/local/postfix中,目的是为了方便管理;您亦可以采用默认安装的方式,可能这样使用起来会更为方便些;
生成别名二进制文件,这个步骤如果忽略,会造成postfix效率极低: #  newaliases
#vi /etc/postfix/main.cf 修改以下几项为您需要的配置 myhostname = mail.c1gstudio.com myorigin = c1gstudio.com mydomain = c1gstudio.com mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain mynetworks = 192.168.1.0/24, 127.0.0.0/8 启动postfix #/usr/local/postfix/sbin/postfix  start
# telnet localhost 25 Trying 127.0.0.1… Connected to localhost.localdomain (127.0.0.1). Escape character is ‘^]’. 220 mail.c1gstudio.com ESMTP Postfix ehlo mail.c1gstudio.com 250-mail.c1gstudio.com 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN MAIL FROM:[email protected] 250 2.1.0 Ok RCPT TO:[email protected] 250 2.1.5 Ok data 354 End data with . subject:Mail test! Mail test!!! . 250 2.0.0 Ok: queued as AB94A1A561 quit 221 2.0.0 Bye Connection closed by foreign host. 使用以下命令验正postfix是否支持cyrus风格的sasl认证,如果您的输出为以下结果,则是支持的: # /usr/local/postfix/sbin/postconf  -a cyrus dovecot #vi /etc/postfix/main.cf 添加以下内容: ############################CYRUS-SASL############################ broken_sasl_auth_clients = yes smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject_invalid_hostname,reject_non_fqdn_hostname,reject_unknown_sender_domain,reject_non_fqdn_sender,reject_non_fqdn_recipient,reject_unknown_recipient_domain,reject_unauth_pipelining,reject_unauth_destination smtpd_sasl_auth_enable = yes smtpd_sasl_local_domain = $myhostname smtpd_sasl_security_options = noanonymous smtpd_sasl_application_name = smtpd smtpd_banner = Welcome to our $myhostname ESMTP,Warning: Version not Available!

#vi /usr/local/lib/sasl2/smtpd.conf 添加如下内容: pwcheck_method: saslauthd mech_list: PLAIN LOGIN

让postfix重新加载配置文件 #/usr/local/postfix/sbin/postfix reload

添加smtp认证用户

使用shadow认证 [root@dev ~]# groupadd mailuser [root@dev ~]# adduser -g mailuser -s /sbin/nologin service [root@dev ~]# passwd service Changing password for user service. New UNIX password: BAD PASSWORD: it is too simplistic/systematic Retype new UNIX password: passwd: all authentication tokens updated successfully. [root@dev ~]#

检查是否可以通过认证 [root@dev ~]# /usr/local/sasl2/sbin/testsaslauthd -u service -p 123456 0: OK “Success.”

生成base64备用 [root@dev ~]# perl -MMIME::Base64 -e ‘print encode_base64(“service”);’ c2VydmljZQ== [root@dev ~]# perl -MMIME::Base64 -e ‘print encode_base64(“123456”);’ MTIzNDU2 [root@dev ~]# telnet localhost 25 REtOWTk5OXh4eA== Trying 127.0.0.1… Connected to localhost.localdomain (127.0.0.1). Escape character is ‘^]’. 220 Welcome to our devmail.c1gstudio.com ESMTP,Warning: Version not Available! ehlo localhost 250-devmail.c1gstudio.com 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-AUTH PLAIN LOGIN 250-AUTH=PLAIN LOGIN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN auth login 334 VXNlcm5hbWU6 c2VydmljZQ== 334 UGFzc3dvcmQ6 MTIzNDU2 235 2.0.0 Authentication successful mail from:[email protected] 250 2.1.0 Ok rcpt to:[email protected] 250 2.1.5 Ok data 354 End data with . subject:hello 13:08 this is a test . 250 2.0.0 Ok: queued as 0BABAD607EB quit 221 2.0.0 Bye Connection closed by foreign host.

开机运行 #echo “/usr/local/postfix/sbin/postfix start” >> /etc/rc.d/rc.local
列出配置 #/usr/local/postfix/sbin/postconf -n 

可以查看邮件队列 #/usr/local/postfix/sbin/postqueue -p

清除队列 #/usr/local/postfix/sbin/postsuper -d all 去邮箱检查邮件已收到。 dreammail发送也成功。 网站esmtp发送成功。

========================== 使用sasldb验证 # vi /usr/local/lib/sasl2/smtpd.conf:     pwcheck_method: auxprop     auxprop_plugin: sasldb     mech_list: PLAIN LOGIN

找到myhostname的配置备用

egrep myhostname /etc/postfix/main.cf

#saslpasswd2 -c -u mail.c1gstudio.com andy 输入密码 #cd /etc #chown postfix sasldb2 查看用户

sasldblistusers2

取消saslauthdb自启动 #vi /etc/rc.local

然后就可以使用了 测试下来投递速度差不多50封/s

[root@dev ~]# telnet xxx.xxx.xxx.xxx 25 Trying xxx.xxx.xxx.xxx … telnet: connect to address 221.130.185.107: Connection refused telnet: Unable to connect to remote host: Connection refused 把main.cf里的inet_interfaces改成all,再关闭后重开服务

postfix的日志分析工具有如下几种

pflogsumm AWStats Isoqlog mailgraph 等 更多的postfix logfile analysis在postfix.org的网站上有介绍 http://www.postfix.org/addon.html#logfile 1 下载 http://jimsun.linxnet.com/postfix_contrib.html 2 安装 Date::Calc #perl -MCPAN -e shell cpan> install Date::Calc 一路回车 3 安装pflogsumm(安装说明都在README里) tar zxvf pflogsumm-1.1.0.tar.gz cd pflogsumm-1.1.0 cp pflogsumm.pl /usr/local/bin/pflogsumm chown bin:bin /usr/local/bin/pflogsumm chmod 755 /usr/local/bin/pflogsumm cp pflogsumm.1 /usr/local/man/man1/pflogsumm.1 chown bin:bin /usr/local/man/man1/pflogsumm.1 chmod 644 /usr/local/man/man1/pflogsumm.1 3 配置系统LANG(在pflogsumm-faq.txt中19条有讲) vi /etc/sysconfig/i18n LANG=”en_US” 4 运行命令,查看日志 /usr/local/bin/pflogsumm /var/log/maillog 或 pflogsumm `ls -rt /var/log/maillog*` 或 /usr/local/bin/pflogsumm -d today /var/log/maillog 或 /usr/local/bin/pflogsumm -d yesterday /var/log/maillog 更详细的用法,讲参照man pflogsumm 5 定时把报告发送到邮箱 0 5 * * * /usr/local/bin/pflogsumm -d yesterday /var/log/maillog | mail -s “Mail Report From mail.c1gstudio.com” [email protected]          

Posted in Mail/Postfix, 技术.

Tagged with , , , .


使用crontab+ssh每天自动完全备份mysql数据

mysql+ftp备份

https://blog.c1gstudio.com/archives/13

自动ssh/scp方法配置 A为本地主机(即用于控制其他主机的机器) ; B为远程主机(即被控制的机器Server), 假如ip为192.168.60.110; A和B的系统都是Linux

在A上运行命令:

#cd ~

ssh-keygen -t rsa (连续三次回车,即在本地生成了公钥和私钥,不设置密码)

ssh -p 22 [email protected] ‘mkdir .ssh’ (建立目录,需要输入密码,只需一次)

scp -P 22 ~/.ssh/id_rsa.pub [email protected]:.ssh/id_rsa.pub (copy本地公钥到B,需要输入密码)

 

=============================================== 08-07-03改动 当B机重装或改动时可能遇到下面状况 可能遇到的问题:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that the RSA host key has just been changed. The fingerprint for the RSA key sent by the remote host is be:5f:d2:45:66:4d:0c:9e:2b:6b:45:65:a7:b2:85:28. Please contact your system administrator. Add correct host key in /root/.ssh/known_hosts to get rid of this message. Offending key in /root/.ssh/known_hosts:11 RSA host key for localhost has changed and you have requested strict checking. Host key verification failed.
如上问题,请删除 ~/.ssh/known_hosts指定的行,如上面的第11行,然后再试。 =========================================================

2008-11-11 用scponly创建一个chroot环境的sftp 在B上用root登录 以backup1为例,通过一临时用户拷贝 #mkdir /home/backup1/.ssh #touch /home/backup1/.ssh/authorized_keys #chown -R backup1:backup1 /home/backup1/.ssh #cat /home/backup/.ssh/id_rsa.pub >> /home/backup1/.ssh/authorized_keys

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

2009-08-19 chmod 0700 /home/backup1/.ssh chmod 0600 /home/backup1/.ssh/authorized_keys 记得权限要保持一致,否则还是需要输入密码…

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

========================================================= 2010-3-15更新 A机

ssh-keygen -t rsa (连续三次回车,即在本地生成了公钥和私钥,不设置密码)

ssh-copy-id -i ~/.ssh/id_rsa.pub “-p 22 [email protected]

#有chroot环境的需先复制到临时用户,再移过去,参考上面步骤

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

在B上用backup用户的命令: #cd ~

touch .ssh/authorized_keys (如果已经存在这个文件, 跳过这条)

cat .ssh/id_rsa.pub >> .ssh/authorized_keys (将id_rsa.pub的内容追加到authorized_keys 中)

回到A机器:

ssh backup@192.168.60.110 (不需要密码, 登录成功)

在a机上建立放脚本的目录

cd /opt/lampp

mkdir shell

copy文件到上面目录

chmod +x mysqlbackup.sh

在本地/home/backup下建立本地备份目录

cd /home/backup

mkdir mysqlbackup && chown root:website mysqlbackup && chmod 0666 mysqlbackup

crontab 设置,每天凌晨3点执行

crontab -e

0 3 * /bin/sh /opt/lampp/shell/mysqlbackup.sh

发下为脚本mysqlbackup.sh

 

#!/bin/bash #每天备份mysql数据 #保留3天的备份包

#需备份的服务器名 server=test

#FTP主机 ftphost=’202.100.222.2′ #FTP用户名 ftpusername=test #FTP密码 ftppassword=test

#ssh主机 sshhost=’202.100.222.2′ #ssh用户名 sshuser=backup #备份存放目录 remotefolder=backup

#备份文件存放的目录 backuppath=/home/user/mysqlbackup #备份文件名 file=${server}-mysql-$(date +%Y-%m-%d).tar.gz #需备份的目录 sourcepath=/opt/lampp/var/mysql #备份日志 logfile=${backuppath}/mysqlbackup.log

function Backup() #处理涵数 { /bin/tar -czf ${backuppath}/${file} –exclude=${sourcepath}/mysql.sock ${sourcepath} #执行备份操作 echo -e $(date +%Y-%m-%d_%H:%M:%S)’:tar:’${backuppath}/${file} ${sourcepath}”\r” >>${logfile}

}

function Send() { #ssh,使用前请先做好配置 /usr/bin/rsync -av ${backuppath}/${file} -e /usr/bin/ssh ${sshuser}@${sshhost}:${remotefolder}/>>${logfile}

#cd $backuppath #ftp -i -n open $ftphost user $ftpusername $ftppassword #if [ ! [ -d BACKUP/$server ]]; then #mkdir BACKUP/$server #如目录不存在则创建 #fi #cd BACKUP/$server #put $file #上传文件 #bye #退出 ##! }

echo -e ‘——————\r’ >>${logfile} /bin/chown local:website ${logfile} && /bin/chmod 0666 ${logfile} echo -e $(date +%Y-%m-%d%H:%M:%S)”:server “${server}” beginning\r” >>${logfile} /bin/rm -rf ${backuppath}/${serve}r-mysql-$(date +%Y-%m-%d –date=’3 days ago’).tar.gz #删除3天前的压缩文件 echo -e $(date +%Y-%m-%d%H:%M:%S)”:delete backup file\r” >>$logfile echo -e $(date +%Y-%m-%d%H:%M:%S)”stop mysql\r” >>$logfile /opt/lampp/lampp stopmysql >/dev/null 2>&1 #停止Mysql服务 Backup #调用处理涵数 /opt/lampp/lampp startmysql >/dev/null 2>&1 #启动Mysql服务 echo -e “\r\n”$(date +%Y-%m-%d%H:%M:%S)”:start mysql\r” >>$logfile Send

echo -e $(date +%Y-%m-%d_%H:%M:%S)”:mysql backup ok\r” >>$logfile echo ‘ok’

Posted in Mysql, shell, 备份.

Tagged with , , , , .


查看Apache并发请求数及其TCP连接状态[转]

Posted in Apache, shell, 技术.

Tagged with , , .


网站负载均衡技术[转]

http://blog.s135.com/read.php/307.htm

DNS轮循   DNS轮循是指将相同的域名解释到不同的IP,随机使用其中某台主机的技术。但其具有明显的缺点:一旦某个服务器出现故障,即使及时修改了DNS设置,还是要等待足够的时间(刷新时间)才能发挥作用,在此期间,保存了故障服务器地址的客户计算机将不能正常访问服务器。DNS负载均衡采用的是简单的轮循负载算法,不能区分服务器的差异,不能反映服务器的当前运行状态,不能做到为性能较好的服务器多分配请求,甚至会出现客户请求集中在某一台服务器上的情况。

  F5 BIG-IP   简介:F5 Networks 公司的著名硬件负载均衡交换机。支持硬件四层、七层交换。不同的型号性能不同,BIG-IP 6400可以支持800万条并发连接,低一点型号的可以支持400万条以上的并发连接。性能极高,但价格也不菲。   价格:BIG-IP 6400的价格在16万元人民币左右。   网址:http://www.f5.com.cn/(中国http://www.f5.com/(全球

  LVS(Linux Virtual Server)   简介:软件四层交换。LVS是在Linux内核中作四层交换,只花128个字节记录一个连接信息,不涉及到文件句柄操作,故没有65535最大文件句柄数的限制。LVS性能很高,可以支持100~400万条并发连接。   价格:免费、开源   网址:http://zh.linuxvirtualserver.org/

  L7SW(Layer7 switching)   简介:软件七层交换。这是一款类似LVS的新负载均衡软件,我没有实际应用过,性能未知,因此不作评价。这是它的英文介绍:Layer7 switching is driving a low-level engine using networking design to speed-up forwarding of data stream. Implementation in this project is split into a userspace daemon and a low-level kernelspace forwarding engine. Userspace daemon is responsible for scheduling and switching decisions. Kernelspace forwarding engine is responsible for forwarding stream and using TCP-Splicing scheme. TCP-Splicing is the postponement of the connection between the client and the server in order to obtain sufficient information to make a routing decision. This project is close to Linux Virtual Server project since lot of discusions on this topics have been made online and offline LVS project.   价格:免费、开源   网址:http://www.linux-l7sw.org/

  HAProxy   简介:软件七层交换,反向代理服务器。目前还不支持虚拟主机,但其配置简单,拥有非常不错的服务器健康检查功能,当其代理的后端服务器出现故障,HAProxy会自动将该服务器摘除,故障恢复后再自动将该服务器加入。另外,HAProxy还支持双机热备。我曾经用过一段时间,能支持2~3万条并发连接。现在我用它做普通的小并发负载均衡,主要用到的是它的服务器健康检查功能。   价格:免费、开源   网址:http://haproxy.1wt.eu/

  Nginx   简介:软件七层交换,反向代理服务器。能够很好地支持虚拟主机,可配置性很强,可以按URL做负载均衡。我目前一直在用,大约能支持3~5万条并发连接。   价格:免费、开源   网址:http://wiki.codemongers.com/NginxChs(中文维基

Posted in 网站架构.

Tagged with , .


解决不能通过mysql.sock连接MySQL问题

mysql不能启动,报找不到xxx.sock

kill -9 进程。不行 查看my.cnf配置。没错

看了一下error.log,发现没空间了

df -ks du -hs /opt

/opt占了三十几G,原来apache日志一直没清过,新上的产品每天又产生近2G的日志。

把日志删了后就正常了.

修改apache不产生日志 CustomLog combined /dev/null

Posted in linux 维护优化, Mysql, 技术.

Tagged with .


squid 安装

按照此贴安装 http://bbs.chinaunix.net/thread-873126-1-1.html

wget http://www.squid-cache.org/Versions/v2/2.6/squid-2.6.STABLE23.tar.gz tar zxvf squid-2.6.STABLE23.tar.gz cd squid-2.6.STABLE23

来自车东

./configure –prefix=/opt/squid-2.6.STABLE23 –enable-useragent-log –enable-referer-log –with-large-files –enable-default-err-language=Simplify_Chinese –enable-err-languages=”Simplify_Chinese English” –disable-internal-dns make make install ln -s /opt/squid-2.6.STABLE23 /opt/squid

++apache的log显示ip来源都是127.0.0.1,修改配置文件使其可以正常记录来访IP 将CustomLog的%h改为%{X-Forwarded-For}i,其它不变.

++快速清空cache echo ” ” > $CachePath/caches/swap.state

对于类似http://you.video.sina.com.cn/index.html之类的网页,squid只会生成一个缓存文件。可以用squid附带的squidclient工具清除: 引用 squidclient -m PURGE -p 80 “http://you.video.sina.com.cn/index.html

多个网址可参考这里 但在取URL时存在10%的错误率 http://www.365bloglink.com/go.php?id=0215245 老外的程序,可以批量清除某类URL的Squid缓存,支持正则表达式 http://blog.s135.com/read.php/308.htm

常用命令 1,初始化你在 squid.conf 里配置的 cache 目录 #squid/sbin/squid -z 如果有错误提示,请检查你的 cache目录的权限。 2,对你的squid.conf 排错,即验证 squid.conf 的 语法和配置。 #squid/sbin/squid -k parse 如果squid.conf 有语法或配置错误,这里会返回提示你,如果没有返回,恭喜,可以尝试启动squid。 3,在前台启动squid,并输出启动过程。 #squid/sbin/squid -N -d1 如果有到 ready to server reques,恭喜,启动成功。 然后 ctrl + c,停止squid,并以后台运行的方式启动它。 4,启动squid在后台运行。 #squid/sbin/squid -s 这时候可以 ps -A 来查看系统进程,可以看到俩个 squid 进程。 5,停止 squid #squid/sbin/squid -k shutdown 这个不用解释吧。 6,重引导修改过的 squid.conf #squid/sbin/squid -k reconfigure 这个估计用的时候比较多,当你发现你的配置有不尽你意的时候,可以随时修改squid.conf,然后别忘记对你的 squid.conf排错,然后再执行此指令,即可让squid重新按照你的 squid.conf 来运行。 7,把squid添加到系统启动项 编辑 /etc/rc.d/rc.local 添加如下行: echo “65535”>/proc/sys/fs/file-max ulimit -HSn 65535 /usr/local/squid/sbin/squid -s 当然,并不是每个人都喜欢这种启动方式,你可以用你最习惯的方式;或者把它安装为服务。

#查看运行信息 /usr/local/squid/bin/squidclient -h 127.0.0.1 -p 81 mgr:info

#分割日志 20 0 * /usr/local/squid/sbin/squid -k rotate

再来点其他的。 1,修改cache 缓存目录的权限。 #chown -R squid:squid /home/cache 我的cache缓存目录是 /home/cache,squid执行用户和用户组是 squid,squid。 2,修改squid 日志目录的权限 #chown -R squid:squid /usr/local/squid/var/logs 这一步并不是适合每一个使用squid的用户.意为让squid有权限在该目录进行写操作 。 例如生成 access.log cache.log store.log 3,查看你的日志文档。 #more /usr/local/squid/var/logs/access.log | grep TCP_MEM_HIT 该指令可以看到在squid运行过程中,有那些文件被squid缓存到内存中,并返回给访问用户。 #more /usr/local/squid/var/logs/access.log | grep TCP_HIT 该指令可以看到在squid运行过程中,有那些文件被squid缓存到cache目录中,并返回给访问用户。 #more /usr/local/squid/var/logs/access.log | grep TCP_MISS 该指令可以看到在squid运行过程中,有那些文件没有被squid缓存,而是现重原始服务器获取并返回给访问用户。 关于 TCP_XXXX 等参数及代表的信息,请参看《squid中文权威指南》13.2.1 章节。 当然,本例中的蓝色文字是可以修改为其他的参数,例如你的域名 www.xxxx.com ,同样可以看到access.log里关于该域名的行。

安装时需注意rh的selinux安全设置,会造成无创建cache目录

64位系统注意cache_mem 大小,过大会报 out of memory 可用tcmalloc 优化内存

Posted in Squid/varnish, 技术.

Tagged with .


redhat4 gcc 安装

glibc-kernheaders glibc-headers glibc-devel cpp gcc 五个文件,注意顺序

http://download.quicklinux.org/RPMS.os/ http://download.quicklinux.org/RPMS.os/glibc-kernheaders-2.4-9.1.89.i386.rpm http://download.quicklinux.org/RPMS.os/glibc-headers-2.3.4-3.i386.rpm http://download.quicklinux.org/RPMS.os/glibc-devel-2.3.4-3.i386.rpm http://download.quicklinux.org/RPMS.os/cpp-3.4.3-17.i386.rpm http://download.quicklinux.org/RPMS.os/libgcc-3.4.3-17.i386.rpm http://download.quicklinux.org/RPMS.os/gcc-3.4.3-17.i386.rpm

相关的rpm包在redhat的iso镜像里都能找到。

wget 以上包

rpv -ivh 安装

安装好后,使用 rpm -qa | grep gcc 会发现gcc已经成功安装了,我们还可以使用 rpm -qR gcc-xxx 查询一下gcc都依赖于哪些文件。

Posted in LINUX, 技术.


复制到系统剪贴板之IE,ff兼容版

http://www.w3c-cn.com/article.asp?id=88

//

请另存代码测试

FF下需设一下安全 第一步.在Firefox浏览器的地址栏中输入 about:config 第二步.将 signed.applets.codebase_principal_support 的值从 false 更新为 true 。

Posted in JavaScript/DOM/XML, 技术.


用mysqldumpslow分析mysql的slow query log(转)

mysql有一个功能就是可以log下来运行的比较慢的sql语句,默认是没有这个log的,为了开启这个功能,要修改my.cnf或者在mysql启动的时候加入一些参数。如果在my.cnf里面修改,需增加如下几行

long_query_time = 1 log-slow-queries = /var/youpath/slow.log log-queries-not-using-indexes

long_query_time 是指执行超过多久的sql会被log下来,这里是1秒。 log-slow-queries 设置把日志写在那里,可以为空,系统会给一个缺省的文件host_name-slow.log,我生成的log就在mysql的data目录 log-queries-not-using-indexes 就是字面意思,log下来没有使用索引的query。

把上述参数打开,运行一段时间,就可以关掉了,省得影响生产环境。

接下来就是分析了,我这里的文件名字叫host-slow.log。 先mysqldumpslow –help以下,俺主要用的是 -s ORDER what to sort by (t, at, l, al, r, ar etc), ‘at’ is default -t NUM just show the top n queries -g PATTERN grep: only consider stmts that include this string

-s,是order的顺序,说明写的不够详细,俺用下来,包括看了代码,主要有 c,t,l,r和ac,at,al,ar,分别是按照query次数,时间,lock的时间和返回的记录数来排序,前面加了a的时倒叙 -t,是top n的意思,即为返回前面多少条的数据 -g,后边可以写一个正则匹配模式,大小写不敏感的

mysqldumpslow -s c -t 20 host-slow.log mysqldumpslow -s r -t 20 host-slow.log

上述命令可以看出访问次数最多的20个sql语句和返回记录集最多的20个sql。 mysqldumpslow -t 10 -s t -g “left join” host-slow.log 这个是按照时间返回前10条里面含有左连接的sql语句。

用了这个工具就可以查询出来那些sql语句是性能的瓶颈,进行优化,比如加索引,该应用的实现方式等。

Posted in Mysql, 技术.


WAP的用户行为分析——无聊经济

说WAP是无聊经济,一点也不为过。在使用WAP的原因分布中,“在移动状态下(如上下班途中等)使用”的比例超过了一半,选择“在无聊的时候,打发时间”的比例也超过1/3,而“在一些突发需要上网的时候只能使用WAP”的比例也超过1/4,因此可以发现WAP的移动性即不受地理条件的限制是其吸引用户最主要的方面。此外“包月资费便宜”和“对新技术比较好奇,尝试一下”的比例分别为18.5%和17.0%。

WAP是被迫使用,用户只有在特定情况下,主要是在没有电视和电脑上网等替代品的情况下才使用WAP。据调查,用户一般在以下情况使用WAP:在车上,上课时(无聊时),等车中,临睡时床上,出差途中。

很少有人主动要使用WAP。与游戏相比较,游戏有瘾,人们会去想主动玩游戏,很多人买电脑是为了玩游戏;而很少有人为了上WAP而买手机的。WAP就如同最早的黑白屏幕的286电脑一样,早期只有技术狂热性的和非用不可的人群才会使用。WAP复杂的输入操作,缓慢的速度和内容的单调性等都是限制其发展的因素。

对于数字音乐产业来说,研究WAP用户其实是研究未来音乐消费者的特征。目前是铃声业务业务,接下来是全曲下载业务。未来手机会代替MP3,就如同手机会替代寻呼机一样。这里面会有一部分人会是使用免费的音乐,但仍然有一部分人会付费下载音乐。这个时候,了解什么样的用户会在什么特定情况下会为手机音乐付费,是我们要早做准备的事情。

WAP用户的特征:

WAP用户分布很广,也会有高低用户之分,例如有大城市用户和中小城市的用户;有高端机型用户和低端机型用户;有白领用户和农民工用户。但是,WAP仍然有一个主要消费人群。一般来说,低端用户虽然收入很低,但是却为WAP业务(图铃等)付费的主要人群;高端用户(高端收入、高端机型、大型城市)虽然是WAP的浏览用户,但是他们很少会为WAP业务付费(例如付费图铃业务等)。

高端机型用户一般为白领,销售人员,还有部分大学生,这一类人群中技术发烧性用户比较多;WAP的低端机型的用户一般为务工人群,例如广东外来务工人群,他们住集体宿舍,没有电脑上网,没有电视。

WAP用户有一个共同特点是:群居;在公司和公车上,外地出差中使用WAP;其中学生和打工仔都是没有电脑和电视的宿舍中使用,一般会集中在晚上临睡前上下班的公车上(铃声下载类的操作一般不会在地铁里,因为信号不太好)使用业务。

WAP用户在以下七个方面有鲜明的特征,并且都和“无聊经济”有着关系

1、用户的地域分布

WAP主要分布在广东、北京、上海、江浙等发达省份和城市。广东最多,广东WAP 用户数约为970 万人,占到了全国WAP 用户的1/4,北京和上海的WAP用户数量分别为170 万人和130 万人。

WAP 用户的地域分布集中在我国东部经济相对比较发达的东部地区,这些地方工厂、公司、学校比较集中。但是WAP却不属于最高端人群的业务,而是这些地方的中低端人群消费的业务。以广东为例,广东WAP用户占1/4,但是WAP业务规模却占全国一半以上。这是因为广东外来务工人群居多,一般都是封闭式的工厂,工人住宿舍,WAP是这个人群特有的消遣方式,是一个专门为低收入人群服务的市场。

2、上网条件

  之前说过,WAP是无聊经济,是在没有电视和电脑上网的情况下才被迫使用的。根据WAP用户的使用动机,用户通常都会在闲暇无聊的情况下浏览WAP门户网站,拥有无聊闲暇时间最大的是经常跑外的销售人员,以及公车上班一族,以及上课时无聊的学生一族。在上下班高峰,以及夜间临睡前WAP的使用比例最高。

WAP用户与互联网用户重合度也低,估计在30%以内。WAP用户不是你我这样人手一台电脑的人,很多人都是没有接触过电脑而直接成为WAP用户的。

3、性别

WAP用户中,男性占到了8成,女性仅为2成(目前有调查说女性WAP用户在增加的趋势),而传统互联网网民中男性的比例为58.3%,女性为41.7%,可以发现WAP用户男性用户的比例更高。这和WAP的主要群体的职业也有关系。例如男性对技术性更敏感,愿意探索新事物。而女性一般会选择其他消遣方式,例如与人聊天、电话以及看电视等方式。

4、年龄

WAP 用户中,年龄在18~24 岁的比例超出了一半,为51.6%,年龄在25~30 岁的比

例也超出了1/4,为27.8%,31~40 岁的比例为13.1%, 40 岁以上的比例仅有2.2%。值得

一提的是,“80 后”的用户占到所有用户的73.2%。与传统互联网网民相比,WAP用户的年龄更加年轻,也更加集中于18~30 岁年龄段。年轻人更易接受新鲜事物,对技术性产品学习和掌握也更快。

5、职业

WAP 用户中,学生和基础职业(保安、军人、工人)占大部分。其中学生的比例超过了2 成,企事业单位普通员工的比例约为1/4,企事业单位的管理人员的比例也达到了10.8%,专业技术人员的比例也达到了16.2%,农民工虽然在这里面的比例不是太大,但是农民工却是WAP付费业务消费的中坚力量。

WAP 用户中,文化程度为高中的比例最高,为35.8%,文化程度为大学本科和大专的比例则分别为27.1%和21.7%。

6、收入

WAP 用户的个人月收入在1000-2000 元的比例最高,达到了29.5%,2000-3000元的比例为16.2%,而无收入的比例达到21.1%是由于学生用户占有相当的比例。WAP用户中月

收入在3000元以下的比例达到了78.1%,月收入在3000元以上的比例仅为21.9%。

 WAP中高收入的人群是白领阶层,属于技术发烧型的人群。他们无论是电脑还是手机,还是其他数码产品都比较精通。WAP中的中收入人群可能是销售人员,上网条件不太便利。

WAP用户中,每月话费消费在100元以内的占56%。这也证明WAP是为特定的低收入用户服务的业务,他们钱不多。但是有闲,并且很少有其他可替代的娱乐项目;而高收入用户一是时间比较繁忙,有钱无闲;二是有其他的可替代WAP的娱乐项目。

7、PC以及手机操作水平

很多用户都是没有接触过互联网而直接使用WAP的。WAP用户的PC操作水平分三部分人,一是技术型用户,玩家级别的;二是初级水平;三是不会上网的。除了少量技术型用户,大部分用户对PC的操作水平都不是太高。

对于手机操作水平,无论用户使用高端机型还是低端机型,无论是高收入用户还是低收入用户,只要不是属于技术性的用户,对手机操作水平都不是太高。

例如,年龄在30岁以上的领导阶层,尽管使用高端机型,尽管收入也很高,但是他们的PC和手机操作能力都不高;另外是低收入使用低端机型的务工人群,PC和手机操作能力都不高;只有中间的白领和学生,操作能力比较高,他们一般是属于技术行用户。

所以,WAP网站和WAP业务在考虑业务设计时,一定要处处想着WAP用户这些人群的特点。懒人推动技术进步,为了他们着想的人才会赢得先机。

附:其他一些数据(以下数据来自互联网,仅供参考)

1、WAP用户形象目前手机上网的形象目前被认为是时尚一组。即便是农民工兄弟的使用,其形象也是在农民工群体中相对时尚新潮一组。

目前使用群体特征:时尚、对新鲜事物感兴趣、容易接受新事物,对资讯需求大,对技术感兴趣的男性年轻用户居多。

和彩铃业务一样,WAP初期的用户是第一批追求新事物的年轻时尚人群。随着业务的成熟,逐渐会扩散到大众用户市场。

2、WAP内容单调。内容方面是导致使用者放弃手机上网的原因。

内容上的单调、匮乏致使目前使用者新鲜感逐渐消失,导致每次上网都是无特别目的,而内容或服务的介绍文字非常古板,千篇一律缺乏特点与个性。内容更新慢,主要从铃声图片感觉明显--1-2个月才有些变化。

用户对全曲下载的内容要求比彩铃要挑剔的多。使用频率更活跃,也更容易退订因为彩铃用户听不到自己的歌曲,所以很容易沉默。全曲用户需要天天有新东西,因为近半数的用户会天天浏览。

3、WAP 上网的使用特征分析

WAP 用户中新增用户的规模较大,一年内的新增用户占到所有用户的47.5%;6成的用户使用WAP的频率不低于每周一次,平均每次使用WAP的时间以10~30 分钟最多,重度用户占所有用户的40.4%;有54.3%的用户只上或者尽量选择免费的网站,31.6%的被访者表示无所谓收费和免费,14.2%的被访者表示只上手机内置的网站。

WAP 用户认知WAP 站点主要通过三大途径:手机内置、口碑相传和传统互联网;用户使用较多的WAP服务有手机图铃下载、WAP 搜索、在线游戏、在线音乐和在线图书;WAP 用户对目前手机上网的意见主要集中在速度和资费方面。

4、WAP 用户使用频率

对WAP的使用频率分布中,每天使用多次的比例为13.8%,每天一次的比例也有15.3%,

每周至少一次的比例为28.3%,这三者汇总的比例占到了57.4%,这说明WAP用户对WAP

的使用频率较高,近6 成的用户使用WAP的频率不低于每周一次。学生用户的使用频率略

高于非学生用户。

WAP 用户平均每次使用WAP 的时间以10~30 分钟的比例最高,为31.8%,在5~10 分钟的比例也超过了两成,总体上看WAP 用户每次的使用时间都不长,平均在30 分钟以内的比例为64.7%,在1 小时以内的比例为80.9%。非学生用户平均每次使用时间要略高于学生用户。将WAP使用频率与每次使用时长交叉可以发现,使用频率较高的用户平均每次的使用时间长度也比较长,这是由于用户的使用习惯受到惯性影响。

5、WAP 用户对站点选择的态度

27.5%的被访者表示只上免费的WAP网站,还有26.8%的被访者表示尽量选择免费的网站,此两者占到了所有被访者的54.3%。有31.6%的被访者表示无所谓收费和免费,只选择上自己喜欢的网站,此外还有14.2%的被访者表示只上手机内置的网站。调查结果显示,免费网站更受欢迎,但收费网站如果能提供有吸引力的内容也会有相当的市场,还有部分用户由于操作等方面的原因只上手机内置网站,表明手机内置对WAP用户尤其是新用户是一个非常重要的渠道。

6、使用WAP 的平均每月花费

WAP 用户使用WAP 的平均每月花费在11~20 元间的比例占所有用户的1/4 强,在21~50 元间的比例超过了1/5,6~10 元的比例也达到了1/5,超过2/3 的用户每月花费在WAP上的费用在6~50 元之间。

手机图铃下载使用状况:最近半年内使用过WAP 下载手机图铃的比例占到了所有WAP 用户的63.0%,那么意味着半年内使用WAP下载图铃的用户约为2460万人。调查发现通过WAP下载手机图铃的用户典型特征为男性、24~30 岁、月收入为1001~3000 元的企事业单位普通员工。

WAP 音乐使用状况:最近半年内通过WAP 在线试听/下载音乐的比例为40.2%,那么意味着半年内通过WAP玩在线试听/下载音乐的用户约为1570 万人。文化程度为高中及以下,年龄在18~24 岁之间的用户更倾向于通过WAP 在线试听/下载音乐。

7、用户经常访问的WAP站点

WAP 用户经常访问的WAP 网站中,排名前十名的网站为(以下排名不分前后,按照中文名称拼音排序):

n 移动梦网

n 3G 门户

n 空中网

n 乐讯网

n 手机百度

n 手机搜狐网

n 手机腾讯网

n 手机新浪网

n 网易WAP

n 易查搜索

Posted in 其它, 分析报告.