November 18, 2011
linux下varnish配置及使用教程
"\u003cp\u003ecentos6.0 32位\nVarnish3.0.2\u003c/p\u003e\n\u003cp\u003e我们先配置nginx环境.参考教程:http://blog.haohtml.com/archives/6051\n并修改nginx的监听端口为81.下面我们varnish监听的端口为80端口.\u003c/p\u003e\n\u003cp\u003e==============================================================\n目前varnish的最新版本为3.0.2,这里我们使用最新的稳定版本\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003ecd /usr/local/soft\nwget http://repo.varnish-cache.org/source/varnish-3.0.2.tar.gz\ntar zxvf varnish-3.0.2.tar.gz\ncd varnish-3.0.2\n./configure --prefix=/usr/local/varnish\nmake \u0026amp;\u0026amp; make install\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e如果在执行./configure命令的过程中遇到”No package ‘libpcre’ found”的错误提示信息的话,需要执行以下命令\u003c/p\u003e\n\u003cblockquote\u003e\n\u003c/blockquote\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eexport …\u003c/code\u003e\u003c/pre\u003e"
November 17, 2011
fckeditor的Error creating folder “” (Can’t create directory)错误的解决办法
"\u003cp\u003e今天使用了fckeditor的编辑器,在下面的环境里测试着没有一点问题的,但上传到服务器上,总是提示\u003c/p\u003e\n\u003cp\u003eError creating folder “” (Can’t create directory)\u003c/p\u003e\n\u003cp\u003e这个错误.经测试发现是 \u003cstrong\u003eapache_lookup_uri\u003c/strong\u003e 函数出的问题,经测试需要获得物理路径,无奈只能修改为 $_SERVER函数\u003c/p\u003e\n\u003cp\u003e打开文件,fckeditor\\editor\\filemanager\\connectors\\php\\io.php\u003c/p\u003e\n\u003cp\u003e修改为\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eif ( function_exists( ‘apache_lookup_uri’ ) )\n{\n/*zongzong 修改\n$info = apache_lookup_uri( $path ) ;\nreturn $info-\u0026gt;filename . $info-\u0026gt;path_info ;\n*/\nreturn $_SERVER[‘DOCUMENT_ROOT’].$path;\n}\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e即可.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eapache_lookup_uri\u003c/strong\u003e 函数参考: …\u003c/p\u003e"
November 15, 2011
LVM基本介绍与常用命令
"\u003cp\u003e\u003cstrong\u003e一、LVM介绍\u003c/strong\u003e\nLVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制\nLVM – 优点:\nLVM通常用于装备大量磁盘的系统,但它同样适于仅有一、两块硬盘的小系统。\u003c/p\u003e\n\u003cp\u003e小系统使用LVM的益处:\u003c/p\u003e\n\u003cp\u003e传统的文件系统是基于分区的,一个文件系统对应一个分区。这种方式比较直观,但不易改变:\u003c/p\u003e\n\u003cp\u003e1.不同的分区相对独立,无相互联系,各分区空间很易利用不平衡,空间不能充分利用;\u003c/p\u003e\n\u003cp\u003e2.当一个文件系统/分区已满时,无法对其扩充,只能采用重新分区/建立文件系统,非常麻烦;或把分区中的数据移到另一个更\u003c/p\u003e\n\u003cp\u003e大的分区中;或采用符号连接的方式使用其它分区的空间。\u003c/p\u003e\n\u003cp\u003e3.如果要把硬盘上的多个分区合并在一起使用,只能采用再分区的方式,这个过程需要数据的备份与恢复。\u003c/p\u003e\n\u003cp\u003e当采用LVM时,情况有所不同:\u003c/p\u003e\n\u003cp\u003e1.硬盘的多个分区由LVM统一为卷组管理,可以方便的加入或移走分区以扩大或减小卷组的可用容量,充分利用硬盘空间;\u003c/p\u003e\n\u003cp\u003e2.文件系统建立在逻辑卷上,而逻辑卷可根据需要改变大小(在卷组容量范围内)以满足要求;\u003c/p\u003e\n\u003cp\u003e3.文件系统建立在LVM上,可以跨分区,方便使用;\u003c/p\u003e\n\u003cp\u003e大系统使 …\u003c/p\u003e"
November 13, 2011
关于Linux操作系统源代码查看工具的介绍
"\u003cp\u003ea、Windows系统可以用Source Insight,Linux系统可以用Source Navigator。\u003c/p\u003e\n\u003cp\u003eb、vim或emacs编辑器,配合cscope、ctags、etags等交叉索引工具。\u003c/p\u003e\n\u003cp\u003ec、vim或emacs编辑器,配合grep、egrep等文本搜索工具,不过最好要对源代码目录结构有所熟悉\u003c/p\u003e\n\u003cp\u003ed、LXR,以网页的形式通过浏览器浏览,安装复杂(debian下安装容易,请版面搜寻lxr)\u003c/p\u003e\n\u003cp\u003ee、GNU global,可以在命令行用,也可以生成hypertext,类似lxr,但更省事。\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://blog.haohtml.com/wp-content/uploads/2011/11/source_insight+key.zip\"\u003eSource Insight3.5(含Key)下载\u003c/a\u003e\u003c/p\u003e"
November 10, 2011
php里函数名或者方法名前加 & 符号表示的意思
"\u003ch1 id=\"先阅读手册\"\u003e先阅读手册\u003c/h1\u003e\n\u003cp\u003e从函数返回一个引用,必须在函数声明和指派返回值给一个变量时都使用引用操作符**\u0026amp;**\u003c/p\u003e\n\u003cp\u003e例子 17-13. 由函数返回一个引用\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e\u0026lt;?php\nfunction \u0026amp;returns_reference()\n{\nreturn $someref;\n}\n\n$newref =\u0026amp; returns_reference();\n?\u0026gt;\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e有关引用的更多信息, 请查看引用的解释。\u003c/p\u003e\n\u003cp\u003e在来看一段很多开源代码喜欢用的单例注册模式\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e\u0026lt;?php\nclass a{}\nclass b{}\nfunction \u0026amp; aa($name)\n{\n static $class = array();\n if(!$class[$name])\n {\n $class[$name] = new $name();\n }\n return $class[$name];\n}\n$a = \u0026amp; aa(\u0026#39;a\u0026#39;);\n$b = \u0026amp; aa(\u0026#39;b\u0026#39;);\n\n$a2 = \u0026amp; aa(\u0026#39;a\u0026#39;);\n$b2 = …\u003c/code\u003e\u003c/pre\u003e"
November 6, 2011
php5.3不支持ZendOptimizer的解决办法(Zend Guard Loader)
"\u003cp\u003e[ \u003cstrong\u003e2013-04-04]好像ZendGuard-5_5_0版本找不到这个dll文件的\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003ePHP 5.3 下,Zend Optimizer 已经被全新的 \u003cstrong\u003eZend Guard Loader\u003c/strong\u003e 取代\u003c/p\u003e\n\u003cp\u003e已经Zend Optimer的代替品为 Opcache,请参考: \u003ca href=\"http://blog.haohtml.com/archives/14071\"\u003ehttp://blog.haohtml.com/archives/14071\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e————————————————\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\n\u003cp\u003e下载 Zend Guard Loader 压缩包。(官方下载地址: \u003ca href=\"http://www.zend.com/en/products/guard/downloads\"\u003ehttp://www.zend.com/en/products/guard/downloads\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e解压并提取 ZendGuardLoader.so(Linux)或 ZendLoader.dll(Windows),对应你的PHP版本。\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e在你的 php.ini 文件添加下面一行,用来加载 Zend Guard Loader:\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e**Linux 和 Mac OS X: **zend_extension = 完整路径/ZendGuardLoader.so\n\u003cstrong\u003eWindows(非线程安全):\u003c/strong\u003e zend_extension = 完整路 …\u003c/p\u003e"
November 1, 2011
检查局域网可用ip的dos批处理脚本
"\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e要扫描192.168.0.x段的所有可用ip地址\n\u003c/code\u003e\u003c/pre\u003e\u003cpre tabindex=\"0\"\u003e\u003ccode\u003efor /L %i IN(1,1,254) DO ping -w 2 -n 1 192.168.0.%\narp -a\n\u003c/code\u003e\u003c/pre\u003e"
November 1, 2011
freeBSD挂载光驱
"\u003cp\u003e挂接光驱\nmount -t cd9660 /dev/acd0 /cdrom\n卸载光驱\numount -f /cdrom\n挂接USB\nmount -t msdos /dev/da0s1 /mnt/usb\n卸载USB\numount /dev/da0s1\u003c/p\u003e"
October 31, 2011
Freebsd解决ARP欺骗问题
"\u003cp\u003e\u003cstrong\u003e1.不安装软件的方法。\u003c/strong\u003e\n首先要重启,确保你拿到的网关地址是正确的。\n步骤如下:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eifconfig\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e显示类似如下内容\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003ebge0: flags=8843 mtu 1500\noptions=1b\ninet 192.168.0.5 netmask 0xffffffc0 broadcast 192.168.0.1\nether 00:17:08:2a:13:88\nmedia: Ethernet autoselect (100baseTX )\nstatus: active\nplip0: flags=108810 mtu 1500\nlo0: flags=8049 mtu 16384\ninet 127.0.0.1 netmask 0xff000000\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e我们把网关的信息存到一个文件里。\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eecho 192.168.0.1 00:17:08:2a:13:88 \u0026gt; /etc/ipmac\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e接着使用crontab -e编辑系统定时排程(计划任务)让它按照设定时间循环执行\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e*/5 * * * * /usr/sbin/arp -f /etc/ipmac\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e这样就每5分钟更新一次网关MAC地址,保证正确。\u003c/p\u003e\n\u003cp\u003e注 …\u003c/p\u003e"
October 30, 2011
一个自动检测服务器网络状态的脚本
"\u003cp\u003e最近服务器总是莫明奇妙的网络不通。我在上一篇文章里写了一个自动检测网卡状态的脚本: \u003ca href=\"http://blog.haohtml.com/archives/11827\"\u003ehttp://blog.haohtml.com/archives/11827\u003c/a\u003e.但发现服务器仍然出现此问题.但服务器内部运行正常.这里基本可以确认是与外网不通的原因.就写了一个脚本,用来检测网络状态,在不通的情况就重启服务器了.此解决办法相当的变态.最好不要使用.\u003c/p\u003e\n\u003cp\u003e1.创建新文件 /data/check_net_status.sh,内容如下\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e#!/bin/bash\nif [ $# -ne 1 ]\nthen\necho \u0026#39;ip address not defined!\u0026#39;\nexit\nfi\n\nip=$1\nlog_file=\u0026#34;$(date +%Y%m%d).log\u0026#34;\n\nret=`ping -c 10 $ip | grep ttl | wc -l`\nif [ $ret -lt 2 ]; then\necho \u0026#34;$(date +%H:%M:%S) ===== reboot\u0026#34; \u0026gt;\u0026gt; $log_file\nshutdown -r now\nfi …\u003c/code\u003e\u003c/pre\u003e"
October 27, 2011
php客户端memcached的安装教程
"\u003cp\u003e我们在上篇文章里()介绍了LNMP的安装方法.只安装了memcache客户端.有些用户可能需要memcached这种客户端的.这里介绍一种php客户端memcached的安装方法.\u003c/p\u003e\n\u003cp\u003e之前在安装memcache时有提到memcached客户端是叫memcache,其实还有一个基于libmemcached的客户端叫memcached,据说性能更好,功能也更多。参考:\u003c/p\u003e\n\u003cp\u003ememcache的官方主页: \u003ca href=\"http://pecl.php.net/package/memcache\"\u003ehttp://pecl.php.net/package/memcache\u003c/a\u003e\nmemcached的官方主页: \u003ca href=\"http://pecl.php.net/package/memcached\"\u003ehttp://pecl.php.net/package/memcached\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e以下是我安装Memcached版本的PHP模块的过程记录:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e#wget http://download.tangent.org/libmemcached-0.9.tar.gz\n#tar zxf libmemcached-0.9.tar.gz\n#cd libmemcached-0.9\n#./configure --prefix=/usr/local/libmemcached --with-memcached\n#make …\u003c/code\u003e\u003c/pre\u003e"
October 26, 2011
MySQL 数据库性能优化之缓存参数优化[转载]
"\u003cp\u003e在平时被问及最多的问题就是关于 MySQL 数据库性能优化方面的问题,所以最近打算写一个MySQL数据库性能优化方面的系列文章,希望对初中级 MySQL DBA 以及其他对 MySQL 性能优化感兴趣的朋友们有所帮助。\u003c/p\u003e\n\u003cp\u003e这是本系列的第一篇文章:MySQL 数据库性能优化之缓存参数优化\u003c/p\u003e\n\u003cp\u003e数据库属于 IO 密集型的应用程序,其主要职责就是数据的管理及存储工作。而我们知道,从内存中读取一个数据库的时间是微秒级别,而从一块普通硬盘上读取一个IO是在毫秒级别,二者相差3个数量级。所以,要优化数据库,首先第一步需要优化的就是 IO,尽可能将磁盘IO转化为内存IO。\u003cstrong\u003e\u003cem\u003e本文先从 MySQL 数据库IO相关参数(缓存参数)的角度来看看可以通过哪些参数进行IO优化\u003c/em\u003e\u003c/strong\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003equery_cache_size/query_cache_type (global)\u003c/strong\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eQuery cache 作用于整个 MySQL Instance,主要用来缓存 MySQL 中的 ResultSet,也就是一条SQL语句执行的结果集,所以仅仅只能针对select语句。当我们打开了 Query Cache 功能,MySQL在接受到一 …\u003c/p\u003e"
October 22, 2011
FreeBSD下自动检查网卡状态并自动启用网卡
"\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e#/bin/bash\n\nlog_file=`date +%Y%m%d`\nlog_file=$log_file\u0026#34;.log\u0026#34;\ncheck_date=`date +%H:%M:%S`\n#status=`ifconfig bge0 | grep status | awk \u0026#39;{print $2}\u0026#39;`\nstatus=`ifconfig bge0 | awk \u0026#39;/status/{print $2}\u0026#39;`\n\nif [ $status != \u0026#39;active\u0026#39; ]; then\n status=\u0026#39;down\u0026#39;\n ifconfig bge0 up\nelse\n echo \u0026#39;ok\u0026#39;\nfi\n\ncheck_date=${check_date}\u0026#34; =========== \u0026#34;${status}\necho $check_date \u0026gt;\u0026gt; $log_file\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e另一处写法,其实一样的:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e#!/bin/bash\nlog_file=\u0026#34;$(date …\u003c/code\u003e\u003c/pre\u003e"
October 20, 2011
dd 命令用来测试硬盘读写速度(转)
"\u003cp\u003edd 是 Linux/UNIX 下的一个非常有用的命令,作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e1. 命令简介\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003edd 的主要选项:\n指定数字的地方若以下列字符结尾乘以相应的数字:\nb=512, c=1, k=1024, w=2, xm=number m\u003c/p\u003e\n\u003cp\u003eif=file\n输入文件名,缺省为标准输入。\u003c/p\u003e\n\u003cp\u003eof=file\n输出文件名,缺省为标准输出。\u003c/p\u003e\n\u003cp\u003eibs=bytes\n一次读入 bytes 个字节(即一个块大小为 bytes 个字节)。\u003c/p\u003e\n\u003cp\u003eobs=bytes\n一次写 bytes 个字节(即一个块大小为 bytes 个字节)。\u003c/p\u003e\n\u003cp\u003ebs=bytes\n同时设置读写块的大小为 bytes ,可代替 ibs 和 obs 。\u003c/p\u003e\n\u003cp\u003ecbs=bytes\n一次转换 bytes 个字节,即转换缓冲区大小。\u003c/p\u003e\n\u003cp\u003eskip=blocks\n从输入文件开头跳过 blocks 个块后再开始复制。\u003c/p\u003e\n\u003cp\u003eseek=blocks\n从输出文件开头跳过 blocks 个块后再开始复制。(通常只有当输出文件是磁盘或磁带时才有效)。\u003c/p\u003e\n\u003cp\u003ecount=blocks\n仅拷贝 blocks 个块,块大小等于 ibs 指定的字节数。 …\u003c/p\u003e"
October 20, 2011
FreeBSD/Linux检测硬盘坏道
"\u003cp\u003e\u003cstrong\u003eLinux检测硬盘坏道\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003ebadblocks\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e功能说明:检查磁盘装置中损坏的区块。\u003c/p\u003e\n\u003cp\u003e语法:badblocks [-svw][-b ][-o ][磁盘装置][磁盘区块数][启始区块]\u003c/p\u003e\n\u003cp\u003e补充说明:执行指令时须指定所要检查的磁盘装置,及此装置的磁盘区块数。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e参数:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e-b 指定磁盘的区块大小,单位为字节。\u003c/p\u003e\n\u003cp\u003e-o 将检查的结果写入指定的输出文件。\u003c/p\u003e\n\u003cp\u003e-s 在检查时显示进度。\u003c/p\u003e\n\u003cp\u003e-v 执行时显示详细的信息。\u003c/p\u003e\n\u003cp\u003e-w 在检查时,执行写入测试。\u003c/p\u003e\n\u003cp\u003e[磁盘装置] 指定要检查的磁盘装置。\u003c/p\u003e\n\u003cp\u003e[磁盘区块数] 指定磁盘装置的区块总数。\u003c/p\u003e\n\u003cp\u003e[启始区块] 指定要从哪个区块开始检查。\u003c/p\u003e\n\u003cp\u003ebadblocks 检测磁盘坏块\u003c/p\u003e\n\u003cp\u003e1)$badblocks -s //显示进度 -v //显示执行详细情况 /dev/sda1\u003c/p\u003e\n\u003cp\u003e2)读写方式检测 未挂载的磁盘设备或分区\u003c/p\u003e\n\u003cp\u003e$badblocks -s //显示进度 -w //以写去检测 -v //显示执行详细情况 /dev/sda2\u003c/p\u003e\n\u003cp\u003e=========================\u003cstrong\u003eFreeBSD检测硬盘坏道\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e利用硬盘的S.M.A.R.T.功能来做。\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003ecd …\u003c/p\u003e\u003c/blockquote\u003e"