<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>陈书艺—Creative,Calmness,Passion,Unremitting,Belief &#187; 技术探讨</title>
	<atom:link href="http://www.cnedwin.com/category/tech/feed" rel="self" type="application/rss+xml" />
	<link>http://www.cnedwin.com</link>
	<description>Edwin Chen's Blog</description>
	<lastBuildDate>Mon, 29 Jun 2009 11:05:02 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>分享Axure 5.1.0.1699汉化版</title>
		<link>http://www.cnedwin.com/82.html</link>
		<comments>http://www.cnedwin.com/82.html#comments</comments>
		<pubDate>Mon, 09 Feb 2009 09:40:02 +0000</pubDate>
		<dc:creator>Edwin</dc:creator>
				<category><![CDATA[技术探讨]]></category>
		<category><![CDATA[Axure]]></category>
		<category><![CDATA[交互设计]]></category>
		<category><![CDATA[模型]]></category>
		<category><![CDATA[流程]]></category>

		<guid isPermaLink="false">http://www.cnedwin.com/?p=82</guid>
		<description><![CDATA[Axure是一款产品原型（Prototype）设计软件，可通过这个软件编辑一些常见的事件和在特点条件下才会触发的情况，可以快速的生成HTML Demo页面。
使用Axure的用户很多，据淘宝UED消息，他们的就使用Axure进行产品原型设计。
因为这个软件一直都是英文版，所以很多朋友还不太会使用，但伟大的平生一笑如雪中送炭一般给我们大家分享了Axure汉化文件，再次表示深不见底的谢意。
请注意，这个汉化是针对“Axure RP Pro 5.1.0.1699”的汉化，其他版本是否可以使用，还不知道。
使用方法是下载后解压缩，用解压缩得到的Client.dll文件覆盖掉Axure安装目录的同名文件。
Axure RP pro 5.1.0.1699
下载地址：http://www.skycn.com/soft/41842.html
汉化文件下载地址：http://share.138.io/get/c8bcfb5583f90227767246820.html
注册用户名：Axure
序列号：8t+3Yk/zu4cX601/seX6wBZgYRVj/lkC2PICCdO4+sFKCCLx8mcCnccoylVb40lP
图文教程： http://www.jojobox.cn/blog/article.asp?id=76
]]></description>
			<content:encoded><![CDATA[<p>Axure是一款产品原型（Prototype）设计软件，可通过这个软件编辑一些常见的事件和在特点条件下才会触发的情况，可以快速的生成HTML Demo页面。</p>
<p>使用Axure的用户很多，据<a href="http://ued.taobao.com/blog/2007/08/13/our_design_flow/">淘宝UED</a>消息，他们的就使用Axure进行产品原型设计。</p>
<p>因为这个软件一直都是英文版，所以很多朋友还不太会使用，但伟大的平生一笑如雪中送炭一般给我们大家分享了<a href="http://www.thinkjam.org/zoptuno/archives/2009/01/axure-5-chinese-realease.html">Axure汉化文件</a>，再次表示深不见底的谢意。</p>
<p>请注意，这个汉化是针对“Axure RP Pro 5.1.0.1699”的汉化，其他版本是否可以使用，还不知道。</p>
<p>使用方法是下载后解压缩，用解压缩得到的Client.dll文件覆盖掉Axure安装目录的同名文件。</p>
<p>Axure RP pro 5.1.0.1699</p>
<p>下载地址：<a href="http://www.skycn.com/soft/41842.html">http://www.skycn.com/soft/41842.html</a></p>
<p>汉化文件下载地址：<a href="http://share.138.io/get/c8bcfb5583f90227767246820.html">http://share.138.io/get/c8bcfb5583f90227767246820.html</a></p>
<p>注册用户名：Axure</p>
<p>序列号：8t+3Yk/zu4cX601/seX6wBZgYRVj/lkC2PICCdO4+sFKCCLx8mcCnccoylVb40lP</p>
<p>图文教程： <a href="http://www.jojobox.cn/blog/article.asp?id=76">http://www.jojobox.cn/blog/article.asp?id=76</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.cnedwin.com/82.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>freebsd vmstat结果内容的解释</title>
		<link>http://www.cnedwin.com/50.html</link>
		<comments>http://www.cnedwin.com/50.html#comments</comments>
		<pubDate>Wed, 27 Aug 2008 09:56:40 +0000</pubDate>
		<dc:creator>Edwin</dc:creator>
				<category><![CDATA[技术探讨]]></category>
		<category><![CDATA[Freebsd]]></category>
		<category><![CDATA[vmstat]]></category>

		<guid isPermaLink="false">http://www.cnedwin.com/?p=50</guid>
		<description><![CDATA[top是给Linux设计的。在FreeBSD VM里面的Free概念和其他OS完全不同，使用top查看Free内存对于FreeBSD来说可以说没什么意义。正确的方法是看vmstat。
而vmstat这个指令，在linux系统，sun系统和freebsd系统中得到的结果样式和所代表的意义还很不相同。
procs memory page disk faults cpu
r b w swap free re mf mi po fr de sr f0 s0 s1 s2 in sy cs us sy id
0 0 0 14888 19120 0 4 2 11 10 0 0 0 0 0 8 198 2158 98 11 19 69
SWAP的单位应该是K，不是M。还有两个比较重要的参数是PI、PO，表示内存的调入、调出页面，单位也是K，但是多大值作为一个衡量标准，我也不清楚，不知道是否有经验值。
还有，最好使用vmstat t [n]命令，例如 vmstat 5 5,表示在T（5）秒时间内进行N（5）次采样。如果只使用vmstat，无法反映真正的系统情况，试一下，看看结果就知道了。
procs:
r&#8211;&#62;在运行队列中等待的进程数
b&#8211;&#62;在等待io的进程数
w&#8211;&#62;可以进入运行队列但被替换的进程
memoy
swap&#8211;&#62;现时可用的交换内存（k表示）
free&#8211;&#62;空闲的内存（k表示）
pages
re－－》回收的页面
mf－－》非严重错误的页面
pi－－》进入页面数（k表示）
po－－》出页面数（k表示）
fr－－》空余的页面数（k表示）
de－－》提前读入的页面中的未命中数
sr－－》通过时钟算法扫描的页面
disk 显示每秒的磁盘操作。 [...]]]></description>
			<content:encoded><![CDATA[<p>top是给Linux设计的。在FreeBSD VM里面的Free概念和其他OS完全不同，使用top查看Free内存对于FreeBSD来说可以说没什么意义。正确的方法是看vmstat。</p>
<p>而vmstat这个指令，在linux系统，sun系统和freebsd系统中得到的结果样式和所代表的意义还很不相同。<br />
procs memory page disk faults cpu<br />
r b w swap free re mf mi po fr de sr f0 s0 s1 s2 in sy cs us sy id<br />
0 0 0 14888 19120 0 4 2 11 10 0 0 0 0 0 8 198 2158 98 11 19 69<br />
SWAP的单位应该是K，不是M。还有两个比较重要的参数是PI、PO，表示内存的调入、调出页面，单位也是K，但是多大值作为一个衡量标准，我也不清楚，不知道是否有经验值。<br />
还有，最好使用vmstat t [n]命令，例如 vmstat 5 5,表示在T（5）秒时间内进行N（5）次采样。如果只使用vmstat，无法反映真正的系统情况，试一下，看看结果就知道了。<br />
procs:<br />
r&#8211;&gt;在运行队列中等待的进程数<br />
b&#8211;&gt;在等待io的进程数<br />
w&#8211;&gt;可以进入运行队列但被替换的进程<br />
memoy<br />
swap&#8211;&gt;现时可用的交换内存（k表示）<br />
free&#8211;&gt;空闲的内存（k表示）<br />
pages<br />
re－－》回收的页面<br />
mf－－》非严重错误的页面<br />
pi－－》进入页面数（k表示）<br />
po－－》出页面数（k表示）<br />
fr－－》空余的页面数（k表示）<br />
de－－》提前读入的页面中的未命中数<br />
sr－－》通过时钟算法扫描的页面<br />
disk 显示每秒的磁盘操作。 s表示scsi盘，0表示盘号<br />
fault 显示每秒的中断数<br />
in－－》设备中断<br />
sy－－》系统中断<br />
cy－－》cpu交换<br />
cpu 表示cpu的使用状态<br />
cs－－》用户进程使用的时间<br />
sy－－》系统进程使用的时间<br />
id－－》cpu空闲的时间<br />
解释：<br />
如果 r经常大于 4 ，且id经常少于40，表示cpu的负荷很重。<br />
如果pi，po 长期不等于0，表示内存不足。<br />
如果disk 经常不等于0， 且在 b中的队列 大于3， 表示 io性能不好。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cnedwin.com/50.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Discuz! 优化的误区</title>
		<link>http://www.cnedwin.com/36.html</link>
		<comments>http://www.cnedwin.com/36.html#comments</comments>
		<pubDate>Tue, 15 Jul 2008 04:42:27 +0000</pubDate>
		<dc:creator>Edwin</dc:creator>
				<category><![CDATA[技术探讨]]></category>
		<category><![CDATA[Discuz!]]></category>
		<category><![CDATA[优化]]></category>
		<category><![CDATA[误区]]></category>

		<guid isPermaLink="false">http://www.cnedwin.com/?p=36</guid>
		<description><![CDATA[很多 Discuz! 的用户在论坛规模达到一定程度上，就要经常性的考虑优化的问题。现在网络上的很多热心的技术人都分享了 Discuz! 的优化经验，应该说，很多经验还是不错的，但也有的帖子可能会让用户走入误区。

误区一：SQL 慢，加索引
多数情况下，数据库可能是瓶颈。通过 Slow Query Log 发现执行时间比较长的 SQL 并不难，于是有的人一看 SQL 走了全表扫描，干脆添加个索引好了。
其实这个地方值得商榷的。第一，必须确定一下该 SQL 执行次数到底是怎样的? 执行真的很频繁? 那么对应的页面是否通过 Cache 可以减少对 DB 的冲击? 如果可以，尽量不要添加索引，索引本身对表的负面影响也是很大的，比如降低更新速度，影响并发能力等。
误区二：瓶颈一定在数据库上
前面说，数据库&#8221;可能&#8221;是瓶颈，但不总是瓶颈，优化的第一步，必需要有针对瓶颈优化。很多时候，图片访问带来的压力甚至比数据库压力还大 &#8212; 有的用户数据库、用户上传的图片文件、Web 服务器都扔到一台服务器上，这时候，第一手去调整 MySQL 或许会有作用，但价值不大。
应该说，瓶颈的有效定位的确是个技术活儿，对于一个新的论坛环境，也有人用逐一尝试法来做，这倒也没什么。
误区四：盲目的静态编译 MySQL
静态编译 MySQL 有好处，但如果系统已经在线上运行了，在原有环境中进行静态编译未必能带来多大好处。我问过一些朋友，静态编译到底带来多大好处? 没有几个人能说清楚。
对于 PHP 也是这样，如果一次优化从其它方式上能带来更清晰、直接的开销，就不要重新编译
误区五：反复尝试，但不建立基准数据
这其实是第四点的延伸。而建立基准数据，实在应该是优化的最基本的步骤。这样才能有效的评估优化的效果。否则的话，象误区一描述的，添加了一个索引，短期内可能感觉快了，长期看，性能可能又会慢下来。

误区六：一次进行多个优化步骤
这可能是比较普遍的&#8221;习惯&#8221;了，有的朋友喜欢一次调整多个参数或是多个环境的设置，然后观察效果。如果每个步骤都是&#8221;对&#8221;的话，那么效果看起来是好的。如果有的步骤调节&#8221;错&#8221;的话，可能会抵消那些有效果的优化步骤。
优化策略是个见仁见智的问题。以上只是个人浅见，欢迎留言探讨。
]]></description>
			<content:encoded><![CDATA[<p>很多 Discuz! 的用户在论坛规模达到一定程度上，就要经常性的考虑优化的问题。现在网络上的很多热心的技术人都分享了 Discuz! 的优化经验，应该说，很多经验还是不错的，但也有的帖子可能会让用户走入误区。</p>
<p><span id="more-36"></span><br />
<strong>误区一：SQL 慢，加索引</strong></p>
<p>多数情况下，数据库可能是瓶颈。通过 Slow Query Log 发现执行时间比较长的 SQL 并不难，于是有的人一看 SQL 走了全表扫描，干脆添加个索引好了。</p>
<p>其实这个地方值得商榷的。第一，必须确定一下该 SQL 执行次数到底是怎样的? 执行真的很频繁? 那么对应的页面是否通过 Cache 可以减少对 DB 的冲击? 如果可以，尽量不要添加索引，索引本身对表的负面影响也是很大的，比如降低更新速度，影响并发能力等。</p>
<p><strong>误区二：瓶颈一定在数据库上</strong></p>
<p>前面说，数据库&#8221;可能&#8221;是瓶颈，但不总是瓶颈，优化的第一步，必需要有针对瓶颈优化。很多时候，图片访问带来的压力甚至比数据库压力还大 &#8212; 有的用户数据库、用户上传的图片文件、Web 服务器都扔到一台服务器上，这时候，第一手去调整 MySQL 或许会有作用，但价值不大。</p>
<p>应该说，瓶颈的有效定位的确是个技术活儿，对于一个新的论坛环境，也有人用逐一尝试法来做，这倒也没什么。</p>
<p><strong>误区四：盲目的静态编译 MySQL</strong></p>
<p>静态编译 MySQL 有好处，但如果系统已经在线上运行了，在原有环境中进行静态编译未必能带来多大好处。我问过一些朋友，静态编译到底带来多大好处? 没有几个人能说清楚。</p>
<p>对于 PHP 也是这样，如果一次优化从其它方式上能带来更清晰、直接的开销，就不要重新编译</p>
<p><strong>误区五：反复尝试，但不建立基准数据</strong></p>
<p>这其实是第四点的延伸。而建立基准数据，实在应该是优化的最基本的步骤。这样才能有效的评估优化的效果。否则的话，象误区一描述的，添加了一个索引，短期内可能感觉快了，长期看，性能可能又会慢下来。<br />
<!--more--><br />
<strong>误区六：一次进行多个优化步骤</strong></p>
<p>这可能是比较普遍的&#8221;习惯&#8221;了，有的朋友喜欢一次调整多个参数或是多个环境的设置，然后观察效果。如果每个步骤都是&#8221;对&#8221;的话，那么效果看起来是好的。如果有的步骤调节&#8221;错&#8221;的话，可能会抵消那些有效果的优化步骤。</p>
<p>优化策略是个见仁见智的问题。以上只是个人浅见，欢迎留言探讨。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cnedwin.com/36.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Nginx 简单的负载均衡配置</title>
		<link>http://www.cnedwin.com/31.html</link>
		<comments>http://www.cnedwin.com/31.html#comments</comments>
		<pubDate>Thu, 29 May 2008 03:19:26 +0000</pubDate>
		<dc:creator>Edwin</dc:creator>
				<category><![CDATA[技术探讨]]></category>
		<category><![CDATA[Nginx]]></category>
		<category><![CDATA[安装]]></category>
		<category><![CDATA[负载均衡]]></category>

		<guid isPermaLink="false">http://www.cnedwin.com/?p=31</guid>
		<description><![CDATA[一、) 安装Nginx
1.) 安装
Nginx发音为[engine x]，是由俄罗斯人Igor Sysoev建立的项目,基于BSD许可。据说他当初是F5的成员之一，英文主页：http://nginx.net。俄罗斯的一些大网站已经使用它超过两年多了，一直表现不凡。
Nginx的编译参数如下：

[root@localhost]#./configure --prefix=/usr/local/server/nginx --with-openssl=/usr/include \
--with-pcre=/usr/include/pcre/ --with-http_stub_status_module --without-http_memcached_module \
--without-http_fastcgi_module --without-http_rewrite_module --without-http_map_module \
--without-http_geo_module --without-http_autoindex_module

在这里，需要说明一下，由于Nginx的配置文件中我想用到正则，所以需要 pcre 模块的支持。我已经安装了 pcre 及 pcre-devel 的rpm包，但是 Ngxin 并不能正确找到 .h/.so/.a/.la 文件，因此我稍微变通了一下：
[root@localhost]#mkdir /usr/include/pcre/.libs/
[root@localhost]#cp /usr/lib/libpcre.a /usr/include/pcre/.libs/libpcre.a
[root@localhost]#cp /usr/lib/libpcre.a /usr/include/pcre/.libs/libpcre.la

然后，修改 objs/Makefile 大概在908行的位置上，注释掉以下内容：
./configure --disable-shared

接下来，就可以正常执行 make 及 make install 了。
2.) 修改配置文件 /usr/local/server/nginx/conf/nginx.conf
以下是我的 nginx.conf 内容，仅供参考：
#运行用户
user  nobody nobody;

#启动进程
worker_processes  2;

#全局错误日志及PID文件
error_log  logs/error.log notice;
pid      [...]]]></description>
			<content:encoded><![CDATA[<p>一、) 安装Nginx<br />
1.) 安装<br />
Nginx发音为[engine x]，是由俄罗斯人Igor Sysoev建立的项目,基于BSD许可。据说他当初是F5的成员之一，英文主页：<a href="http://nginx.net/" target="_blank"><span style="color: #008800;">http://nginx.net</span></a>。俄罗斯的一些大网站已经使用它超过两年多了，一直表现不凡。<br />
Nginx的编译参数如下：</p>
<p><span id="more-31"></span></p>
<pre>[root@localhost]#./configure --prefix=/usr/local/server/nginx --with-openssl=/usr/include \
--with-pcre=/usr/include/pcre/ --with-http_stub_status_module --without-http_memcached_module \
--without-http_fastcgi_module --without-http_rewrite_module --without-http_map_module \
--without-http_geo_module --without-http_autoindex_module
</pre>
<p>在这里，需要说明一下，由于Nginx的配置文件中我想用到正则，所以需要 <code><span style="background-color: #e3ffc1; color: #800080;">pcre</span></code> 模块的支持。我已经安装了 <code><span style="background-color: #e3ffc1; color: #800080;">pcre</span></code> 及 <code><span style="background-color: #e3ffc1; color: #800080;">pcre-devel</span></code> 的rpm包，但是 Ngxin 并不能正确找到 .h/.so/.a/.la 文件，因此我稍微变通了一下：</p>
<pre>[root@localhost]#mkdir /usr/include/pcre/.libs/
[root@localhost]#cp /usr/lib/libpcre.a /usr/include/pcre/.libs/libpcre.a
[root@localhost]#cp /usr/lib/libpcre.a /usr/include/pcre/.libs/libpcre.la
</pre>
<p>然后，修改 <code><span style="background-color: #e3ffc1; color: #800080;">objs/Makefile</span></code> 大概在908行的位置上，注释掉以下内容：</p>
<pre>./configure --disable-shared
</pre>
<p>接下来，就可以正常执行 <code><span style="background-color: #e3ffc1; color: #800080;">make</span></code> 及 <code><span style="background-color: #e3ffc1; color: #800080;">make install</span></code> 了。</p>
<p>2.) 修改配置文件 <span style="color: #800080;"><span style="background-color: #e3ffc1;"><code>/usr/local/server/nginx/conf/nginx.conf</code><br />
</span></span>以下是我的 <code><span style="background-color: #e3ffc1; color: #800080;">nginx.conf</span></code> 内容，仅供参考：</p>
<pre>#运行用户
user  nobody nobody;

#启动进程
worker_processes  2;

#全局错误日志及PID文件
error_log  logs/error.log notice;
pid        logs/nginx.pid;

#工作模式及连接数上限
events {
        use epoll;
        worker_connections      1024;
}

#设定http服务器，利用它的反向代理功能提供负载均衡支持
http {
        #设定mime类型
        include       conf/mime.types;
        default_type  application/octet-stream;

        #设定日志格式
        log_format main         '$remote_addr - $remote_user [$time_local] '
                                                '"$request" $status $bytes_sent '
                                                '"$http_referer" "$http_user_agent" '
                                                '"$gzip_ratio"';

        log_format download '$remote_addr - $remote_user [$time_local] '
                                                '"$request" $status $bytes_sent '
                                                '"$http_referer" "$http_user_agent" '
                                                '"$http_range" "$sent_http_content_range"';

        #设定请求缓冲
        client_header_buffer_size    1k;
        large_client_header_buffers  4 4k;

        #开启gzip模块
        gzip on;
        gzip_min_length  1100;
        gzip_buffers     4 8k;
        gzip_types       text/plain;

        output_buffers   1 32k;
        postpone_output  1460;

        #设定access log
        access_log  logs/access.log  main;

        client_header_timeout  3m;
        client_body_timeout    3m;
        send_timeout           3m;

        sendfile                on;
        tcp_nopush              on;
        tcp_nodelay             on;

        keepalive_timeout  65;

        #设定负载均衡的服务器列表
        upstream mysvr {
                #weigth参数表示权值，权值越高被分配到的几率越大
                #本机上的Squid开启3128端口
                server 192.168.8.1:3128 weight=5;
                server 192.168.8.2:80   weight=1;
                server 192.168.8.3:80   weight=6;
        }

        #设定虚拟主机
        server {
                listen          80;
                server_name     192.168.8.1 www.yejr.com;

                charset gb2312;

                #设定本虚拟主机的访问日志
                access_log  logs/www.yejr.com.access.log  main;

                #如果访问 /img/*, /js/*, /css/* 资源，则直接取本地文件，不通过squid
                #如果这些文件较多，不推荐这种方式，因为通过squid的缓存效果更好
                location ~ ^/(img|js|css)/  {
                        root    /data3/Html;
                        expires 24h;
                }

                #对 "/" 启用负载均衡
                location / {
                        proxy_pass      http://mysvr;

                        proxy_redirect          off;
                        proxy_set_header        Host $host;
                        proxy_set_header        X-Real-IP $remote_addr;
                        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
                        client_max_body_size    10m;
                        client_body_buffer_size 128k;
                        proxy_connect_timeout   90;
                        proxy_send_timeout      90;
                        proxy_read_timeout      90;
                        proxy_buffer_size       4k;
                        proxy_buffers           4 32k;
                        proxy_busy_buffers_size 64k;
                        proxy_temp_file_write_size 64k;
                }

                #设定查看Nginx状态的地址
                location /NginxStatus {
                        stub_status             on;
                        access_log              on;
                        auth_basic              "NginxStatus";
                        auth_basic_user_file  conf/htpasswd;
                }
        }
}
</pre>
<p>运行以下命令检测配置文件是否无误：</p>
<pre>  如果没有报错，那么就可以开始运行Nginx了，执行以下命令即可：
<pre>  备注：conf/htpasswd 文件的内容用 apache 提供的 htpasswd 工具来产生即可，内容大致如下：
<pre>  3.) 查看 Nginx 运行状态
  输入地址 http://192.168.8.1/NginxStatus/，输入验证帐号密码，即可看到类似如下内容：
<pre>Active connections: 328
server accepts handled requests
9309 8982 28890
Reading: 1 Writing: 3 Waiting: 324
</pre>
<p>第一行表示目前活跃的连接数<br />
第三行的第三个数字表示Nginx运行到当前时间接受到的总请求数，如果快达到了上限，就需要加大上限值了。<br />
第四行看不懂 <img src='http://www.cnedwin.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </pre>
</pre>
<p>暂时保存，有时间细看。</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.cnedwin.com/31.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MooPHP 0.91.178 alpha版本发布下载</title>
		<link>http://www.cnedwin.com/30.html</link>
		<comments>http://www.cnedwin.com/30.html#comments</comments>
		<pubDate>Thu, 22 May 2008 04:16:37 +0000</pubDate>
		<dc:creator>Edwin</dc:creator>
				<category><![CDATA[技术探讨]]></category>
		<category><![CDATA[行业动态]]></category>
		<category><![CDATA[MooPHP]]></category>
		<category><![CDATA[开发框架]]></category>
		<category><![CDATA[开源]]></category>

		<guid isPermaLink="false">http://www.cnedwin.com/?p=30</guid>
		<description><![CDATA[开发简介
从整个PHP产业来看，随着PHP语言的日益流行，PHP的市场占有率不断提高，各种PHP框架也层出不穷。通过借鉴.Net、Java、Ruby On Rails等语言的开发思想，使得PHP在快速开发、企业应用等方面逐渐站在了Web开发语言的前端。
纵观国外的Zend Framework、CakePHP；国内的FleaPHP、ThinkPHP等这些优秀的PHP开源框架，我们不难发现它们对于PHP初学者还不够友 好。较高的入门难度和庞大的体系，已经不能完全满足当前PHP业界日益增长的多种多样的PHP需求。这些PHP开发框架都是非常出色的，但是由于文档、设 计思想、开发模式、入门难度中的一点或者几点降低了它们的广泛适用性，同时也为其他PHP开发框架提供了发展的机会。由此，MooPHP应运而生。

实际上，从国外到国内各大PHP专业论坛关于PHP的讨论相当激烈，对于技术永无止境的追求让我们乐此不疲，但是我们应该想到：为PHP初学者提供更大的 帮助会对整个PHP业界产生更大的推动力。我敬佩国内外做开源软件和开源框架的朋友们，让我们一起伴随MooPHP为整个开源世界共享自己的一份力量。
MooPHP简介
MooPHP，全名是More &#38; Original PHP Framwork。从MooPHP的全名我们就可以感受到MooPHP框架的设计理念：在安全、高效、稳定、易用的前提下，还原PHP语言的原生态；以松 耦合的方式，进一步增强了MooPHP的扩展性。MooPHP除了核心之外，基于其本身松耦合的特性，非常容易进行外围的扩展。More
MooPHP框架采用在所有开源协议中几乎是最“自由”的BSD协议。赋予使用者更高的使用权和决策权。所以选择MooPHP来做为项目的基础架构，完全不用担心遇到许可协议问题。
MooPHP框架下载
下载地址： 	 		 			 MooPHP 0.91.178 alpha.zip (59.98 KB)
 MooPHP 0.91.178 alpha.zip (59.98 KB)
下载次数: 19
2008-5-22 11:07

MooPHP框架相关文档

MooPHP框架简介
MooPHP框架编码规范
MooPHP框架文件结构
MooPHP框架模板语法
MooPHP框架后台
MooPHP框架上传类类使用
MooPHP框架图片类使用
MooPHP框架文件操作类语法
MooPHP框架数据库类语法
MooPHP框架验证码类使用

MooPHP框架教程文档

MooPHP框架十分钟创建Blog程序

发布后记
这是一个开源项目，她的存在是我们整个团队对于开源事业的执着向往和不断的追求。她是一个新生的婴儿需要我们的努力和您的支持，我们热切的希望志同道合的您能为她提供更多发展的空间。欢迎所有热爱开源事业的朋友们、一起加入进来。
这是一个alpha版本，通过这次发布，我们希望能够得到很多很多的反馈和很多很多的建议，然后加快MooPHP框架的速度和进程。
您可以分享一下在您体验MooPHP的过程中的心得和经验在：http://www.ismole.net/forum-16-1.html
同时也欢迎您制作属于自己的作品，并撰写一些教程哦
当然，当您发现MooPHP的错误，或者有您迫切希望增强的功能和需求，可以到这里提出：http://www.ismole.net/forum-17-1.html
同时感谢我们所有在下面抢沙发的团队成员。
QQ群：52740589 MooPHP交流群
]]></description>
			<content:encoded><![CDATA[<p><strong>开发简介</strong><br />
从整个PHP产业来看，随着PHP语言的日益流行，PHP的市场占有率不断提高，各种PHP框架也层出不穷。通过借鉴.Net、Java、Ruby On Rails等语言的开发思想，使得PHP在快速开发、企业应用等方面逐渐站在了Web开发语言的前端。</p>
<p>纵观国外的Zend Framework、CakePHP；国内的FleaPHP、ThinkPHP等这些优秀的PHP开源框架，我们不难发现它们对于PHP初学者还不够友 好。较高的入门难度和庞大的体系，已经不能完全满足当前PHP业界日益增长的多种多样的PHP需求。这些PHP开发框架都是非常出色的，但是由于文档、设 计思想、开发模式、入门难度中的一点或者几点降低了它们的广泛适用性，同时也为其他PHP开发框架提供了发展的机会。由此，MooPHP应运而生。</p>
<p><span id="more-30"></span></p>
<p>实际上，从国外到国内各大PHP专业论坛关于PHP的讨论相当激烈，对于技术永无止境的追求让我们乐此不疲，但是我们应该想到：为PHP初学者提供更大的 帮助会对整个PHP业界产生更大的推动力。我敬佩国内外做开源软件和开源框架的朋友们，让我们一起伴随MooPHP为整个开源世界共享自己的一份力量。</p>
<p><strong>MooPHP简介</strong><br />
MooPHP，全名是More &amp; Original PHP Framwork。从MooPHP的全名我们就可以感受到MooPHP框架的设计理念：在安全、高效、稳定、易用的前提下，还原PHP语言的原生态；以松 耦合的方式，进一步增强了MooPHP的扩展性。MooPHP除了核心之外，基于其本身松耦合的特性，非常容易进行外围的扩展。<a href="http://www.moophp.net/introduction" target="_blank">More</a></p>
<p>MooPHP框架采用在所有开源协议中几乎是最“自由”的BSD协议。赋予使用者更高的使用权和决策权。所以选择MooPHP来做为项目的基础架构，完全不用担心遇到许可协议问题。</p>
<p><strong>MooPHP框架下载</strong><br />
<span style="color: darkolivegreen;">下载地址</span>： 	 		 			<img class="absmiddle" src="http://www.ismole.net/images/attachicons/zip.gif" border="0" alt="" /> <span id="attach_543" style="white-space: nowrap;" onmouseover="showMenu(this.id)"><a href="http://www.ismole.net/attachment.php?aid=543&amp;k=5c784129cb10b4b215df749baf6d9fe6&amp;t=1211429718" target="_blank"><strong>MooPHP 0.91.178 alpha.zip</strong></a> (59.98 KB)</span></p>
<div id="attach_543_menu" class="t_attach" style="position: absolute; z-index: 50; clip: rect(auto, auto, auto, auto); left: 311px; top: 729px; display: none;"><img class="absmiddle" src="http://www.ismole.net/images/attachicons/zip.gif" border="0" alt="" /> <a href="http://www.ismole.net/attachment.php?aid=543&amp;k=5c784129cb10b4b215df749baf6d9fe6&amp;t=1211429718" target="_blank"><strong>MooPHP 0.91.178 alpha.zip</strong></a> (59.98 KB)<br />
下载次数: 19</p>
<div class="t_smallfont">2008-5-22 11:07</div>
</div>
<p><strong>MooPHP框架相关文档</strong></p>
<ul>
<li><a href="http://www.moophp.net/introduction" target="_blank">MooPHP框架简介</a></li>
<li><a href="http://www.moophp.net/phpcoding" target="_blank">MooPHP框架编码规范</a></li>
<li><a href="http://www.moophp.net/documents/systemfiles" target="_blank">MooPHP框架文件结构</a></li>
<li><a href="http://www.moophp.net/documents/templatesyntax" target="_blank">MooPHP框架模板语法</a></li>
<li><a href="http://www.moophp.net/documents/adminclasss" target="_blank">MooPHP框架后台</a></li>
<li><a href="http://www.moophp.net/documents/uploadclass" target="_blank">MooPHP框架上传类类使用</a></li>
<li><a href="http://www.moophp.net/documents/imageclass" target="_blank">MooPHP框架图片类使用</a></li>
<li><a href="http://www.moophp.net/documents/fileclasssyntax" target="_blank">MooPHP框架文件操作类语法</a></li>
<li><a href="http://www.moophp.net/documents/mysqlclasssyntax" target="_blank">MooPHP框架数据库类语法</a></li>
<li><a href="http://www.moophp.net/documents/seccodeclasssyntax" target="_blank">MooPHP框架验证码类使用</a></li>
</ul>
<p><strong>MooPHP框架教程文档</strong></p>
<ul>
<li><a href="http://www.ismole.net/thread-671-1-1.html" target="_blank">MooPHP框架十分钟创建Blog程序</a></li>
</ul>
<p><strong>发布后记</strong><br />
这是一个开源项目，她的存在是我们整个团队对于开源事业的执着向往和不断的追求。她是一个新生的婴儿需要我们的努力和您的支持，我们热切的希望志同道合的您能为她提供更多发展的空间。欢迎所有热爱开源事业的朋友们、一起加入进来。</p>
<p>这是一个alpha版本，通过这次发布，我们希望能够得到很多很多的反馈和很多很多的建议，然后加快MooPHP框架的速度和进程。<br />
您可以分享一下在您体验MooPHP的过程中的心得和经验在：<a href="http://www.ismole.net/forum-16-1.html" target="_blank">http://www.ismole.net/forum-16-1.html</a><br />
同时也欢迎您制作属于自己的作品，并撰写一些教程哦<br />
当然，当您发现MooPHP的错误，或者有您迫切希望增强的功能和需求，可以到这里提出：<a href="http://www.ismole.net/forum-17-1.html" target="_blank">http://www.ismole.net/forum-17-1.html</a></p>
<p>同时感谢我们所有在下面抢沙发的团队成员。</p>
<p>QQ群：52740589 MooPHP交流群</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cnedwin.com/30.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>互联网产品设计及研发团队的工作流程</title>
		<link>http://www.cnedwin.com/28.html</link>
		<comments>http://www.cnedwin.com/28.html#comments</comments>
		<pubDate>Tue, 20 May 2008 02:10:13 +0000</pubDate>
		<dc:creator>Edwin</dc:creator>
				<category><![CDATA[技术探讨]]></category>
		<category><![CDATA[行业动态]]></category>
		<category><![CDATA[产品经理]]></category>
		<category><![CDATA[产品设计]]></category>
		<category><![CDATA[工作流程]]></category>

		<guid isPermaLink="false">http://www.cnedwin.com/?p=28</guid>
		<description><![CDATA[在这个中国互联网产业越来越趋于成熟的年代，互联网公司的产品设计和研发，在一些公司也逐步趋向于成熟和分工细化、专业化。
通过与魏姗姗同学的求证，获知了现在雅虎中国的产品设计及研发团队的工作流程。
因为雅虎是目前业内最注重产品质量和用户体验的互联网企业之一，他们的分工流程和工作态度非常值得研究学习。
在这里，我结合自己的从业经验，将产品设计的流程总结出来，与大家分享。

网络产品设计：
1，产品经理立项，写产品计划书，确定新产品或新功能的市场意义和经济效益(往往在立项之初，还需要与市场部门配合调查，并与公司分管的副总多次开会讨论)，提交上级审批。
2，计划书审批同意后，确认需要设计的部分。
产品经理和用户体验研究员(user researcher)，信息建构师(information architect)，视觉设计师(visual designer)、UI设计师(user interface designer)，互动设计师(interaction designer)，开发/程序员(web developer)，工程师(engineer)一起讨论需要的支持，然后订出时间计划分工合作。
3，接下来，一般情况下先由用户体验研究员作调查、分析后由信息建构师设计产品架构。（他们需要紧密配合）
4，产品架构确认后，由互动设计师(interaction designer)作出互动流程。（也是需要不断修正）
5，视觉设计师(visual designer)和user interface designer作出视觉设计。
6，然后web developer把设计通过编写程序(html, dhtml, php, JavaScript……)等等再现出来，
7，最后交给工程师。
8，做完后用户体验研究员需要做用户测试，QA(Quality assurance) 需要测验这一产品的每一步骤，确认产品的使用质量。
9，如果有问题需要让工程师或相关人员解决。
至此，一个产品从立项到设计、研发、测试、推出，整个过程就完成了。
产品经理是从最初到结束全程跟进的角色，是起到一个资源调配、协作、时间和进度控制、质量把控、内部沟通等等作用的核心凝聚点。
而每一步的作业都有专业领域的专业人员从事，这些不同的小工种是相对非常专业的，并且需要一定的从业经验和独到的眼光。
在这里，因为篇幅有限，我无法为你详细的讲述他们的职责和专业知识。
但是，由于我过互联网行业目前普遍采取的短平快的手法，讲究快速执行的效率和以最少的人力完成最大工作量的要求，从而达到控制成本和抢在竞争对手之前产出的目标，这其中涉及到的9个角色和7个流程，往往会被合并到3个左右。
基本分为策划、设计、开发这三种角色。
配合我上次提到的 初阶UI美术设计师手册
相信大家应该越来越了解互联网行业，乃至网络产品从设计初，到研发，出成品的流程了吧。
希望对你有所帮助
]]></description>
			<content:encoded><![CDATA[<p>在这个中国互联网产业越来越趋于成熟的年代，互联网公司的产品设计和研发，在一些公司也逐步趋向于成熟和分工细化、专业化。<br />
通过与魏姗姗同学的求证，获知了现在雅虎中国的产品设计及研发团队的工作流程。<br />
因为雅虎是目前业内最注重产品质量和用户体验的互联网企业之一，他们的分工流程和工作态度非常值得研究学习。<br />
在这里，我结合自己的从业经验，将产品设计的流程总结出来，与大家分享。</p>
<p><span id="more-28"></span><br />
网络产品设计：<br />
1，产品经理立项，写产品计划书，确定新产品或新功能的市场意义和经济效益(往往在立项之初，还需要与市场部门配合调查，并与公司分管的副总多次开会讨论)，提交上级审批。</p>
<p>2，计划书审批同意后，确认需要设计的部分。<br />
产品经理和用户体验研究员(user researcher)，信息建构师(information architect)，视觉设计师(visual designer)、UI设计师(user interface designer)，互动设计师(interaction designer)，开发/程序员(web developer)，工程师(engineer)一起讨论需要的支持，然后订出时间计划分工合作。</p>
<p>3，接下来，一般情况下先由用户体验研究员作调查、分析后由信息建构师设计产品架构。（他们需要紧密配合）</p>
<p>4，产品架构确认后，由互动设计师(interaction designer)作出互动流程。（也是需要不断修正）</p>
<p>5，视觉设计师(visual designer)和user interface designer作出视觉设计。</p>
<p>6，然后web developer把设计通过编写程序(html, dhtml, php, JavaScript……)等等再现出来，</p>
<p>7，最后交给工程师。</p>
<p>8，做完后用户体验研究员需要做用户测试，QA(Quality assurance) 需要测验这一产品的每一步骤，确认产品的使用质量。</p>
<p>9，如果有问题需要让工程师或相关人员解决。</p>
<p>至此，一个产品从立项到设计、研发、测试、推出，整个过程就完成了。<br />
产品经理是从最初到结束全程跟进的角色，是起到一个资源调配、协作、时间和进度控制、质量把控、内部沟通等等作用的核心凝聚点。<br />
而每一步的作业都有专业领域的专业人员从事，这些不同的小工种是相对非常专业的，并且需要一定的从业经验和独到的眼光。<br />
在这里，因为篇幅有限，我无法为你详细的讲述他们的职责和专业知识。</p>
<p>但是，由于我过互联网行业目前普遍采取的短平快的手法，讲究快速执行的效率和以最少的人力完成最大工作量的要求，从而达到控制成本和抢在竞争对手之前产出的目标，这其中涉及到的9个角色和7个流程，往往会被合并到3个左右。<br />
基本分为策划、设计、开发这三种角色。</p>
<p>配合我上次提到的 <a href="http://www.ismole.net/thread-589-1-1.html" target="_blank">初阶UI美术设计师手册</a><br />
相信大家应该越来越了解互联网行业，乃至网络产品从设计初，到研发，出成品的流程了吧。<br />
希望对你有所帮助</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cnedwin.com/28.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PHP文件缓存的性能测试</title>
		<link>http://www.cnedwin.com/27.html</link>
		<comments>http://www.cnedwin.com/27.html#comments</comments>
		<pubDate>Wed, 14 May 2008 10:57:18 +0000</pubDate>
		<dc:creator>Edwin</dc:creator>
				<category><![CDATA[技术探讨]]></category>
		<category><![CDATA[MooPHP]]></category>
		<category><![CDATA[性能]]></category>
		<category><![CDATA[缓存]]></category>

		<guid isPermaLink="false">http://www.cnedwin.com/?p=27</guid>
		<description><![CDATA[前言：
在开发MooPHP的过程中，为了寻找更为高效的缓存方式，对两种最常用的缓存方式进行了测试。
PHP常用缓存方式：
第一种，把需要缓存的数据进行处理，形成PHP可以直接执行的文件。在需要缓存数据的时候，通过include方式引入，并使用。
第二种，把需要的数据通过serialize函数序列化后直接保存到文件。在需要使用缓存数据的时候，通过反序列化读入文件内容并复制给需要的变量，然后使用。
测试结果：
通过测试我们发现，第二种也就是serialize缓存数据的方式更加高效。（数据略去，最后提供了文章地址下载，大家可以自行测试）
原因分析：
include方式读取缓存的时候，PHP需要执行几个过程
1.读取文件
2.解析所Include的文件
3.执行，给变量赋值

而serialize序列化方式读取缓存的时候：
1.读取数据
2.反序列化数据内容
3.给变量赋值
从以上内容对比的话，可能是由于解析PHP文件内的数组需要的时间超过unserialize反序列化数组的时间。如果你有兴趣可以查看《PHP filesystem相关函数和include require的性能效率研究》：http://www.ccvita.com/163.html
测试文件代码：
下载地址：MooPHP-CacheTest.zip
原创地址：http://www.ccvita.com/311.html  有新的研究心得会在这里更新。
CacheTest_IncludeFile.php

&#60; ?php
$t1 = gettimeofday();
for ($i = 0; $i &#60; 10000; $i++){
include(&#8221;CacheTest_IncludeData.php&#8221;);
}
$t2 = gettimeofday();
echo ($t2['sec'] &#8211; $t1['sec']) * 1000 + ($t2['usec'] &#8211; $t1['usec']) / 1000 . &#8220;\n&#8221;;


CacheTest_SerializeFile.php

&#60; ?php
function read_cache($filename) {
if(@$fp = fopen($filename, &#8216;r&#8217;)) {
@$data = fread($fp,filesize($cachefile));
fclose($fp);
}
return $s;
}
$t1 = gettimeofday();
for ($i = 0; $i &#60; 10000; $i++){
$x = read_cache(&#8221;CacheTest_SerializeData.php&#8221;);
$x_r = unserialize($x);
}
$t2 = gettimeofday();
echo [...]]]></description>
			<content:encoded><![CDATA[<p><strong>前言</strong>：<br />
在开发MooPHP的过程中，为了寻找更为高效的缓存方式，对两种最常用的缓存方式进行了测试。</p>
<p><strong>PHP常用缓存方式</strong>：<br />
第一种，把需要缓存的数据进行处理，形成PHP可以直接执行的文件。在需要缓存数据的时候，通过include方式引入，并使用。<br />
第二种，把需要的数据通过serialize函数序列化后直接保存到文件。在需要使用缓存数据的时候，通过反序列化读入文件内容并复制给需要的变量，然后使用。</p>
<p><strong>测试结果</strong>：<br />
通过测试我们发现，第二种也就是serialize缓存数据的方式更加高效。（数据略去，最后提供了文章地址下载，大家可以自行测试）</p>
<p><strong>原因分析</strong>：<br />
include方式读取缓存的时候，PHP需要执行几个过程<br />
1.读取文件<br />
2.解析所Include的文件<br />
3.执行，给变量赋值</p>
<p><span id="more-27"></span></p>
<p>而serialize序列化方式读取缓存的时候：<br />
1.读取数据<br />
2.反序列化数据内容<br />
3.给变量赋值</p>
<p>从以上内容对比的话，可能是由于解析PHP文件内的数组需要的时间超过unserialize反序列化数组的时间。如果你有兴趣可以查看《<a href="http://www.ccvita.com/163.html">PHP filesystem相关函数和include require的性能效率研究</a>》：http://www.ccvita.com/163.html</p>
<p><strong>测试文件代码</strong>：<br />
下载地址：<a href="http://www.ccvita.com/demo/download/MooPHP-CacheTest.zip">MooPHP-CacheTest.zip</a><br />
原创地址：http://www.ccvita.com/311.html  有新的研究心得会在这里更新。<br />
CacheTest_IncludeFile.php</p>
<div class="hl-surround">
<div class="hl-main">&lt; ?php</p>
<p>$t1 = gettimeofday();</p>
<p>for ($i = 0; $i &lt; 10000; $i++){<br />
include(&#8221;CacheTest_IncludeData.php&#8221;);<br />
}</p>
<p>$t2 = gettimeofday();</p>
<p>echo ($t2['sec'] &#8211; $t1['sec']) * 1000 + ($t2['usec'] &#8211; $t1['usec']) / 1000 . &#8220;\n&#8221;;</p>
</div>
</div>
<p>CacheTest_SerializeFile.php</p>
<div class="hl-surround">
<div class="hl-main">&lt; ?php</p>
<p>function read_cache($filename) {</p>
<p>if(@$fp = fopen($filename, &#8216;r&#8217;)) {<br />
@$data = fread($fp,filesize($cachefile));<br />
fclose($fp);<br />
}<br />
return $s;<br />
}</p>
<p>$t1 = gettimeofday();</p>
<p>for ($i = 0; $i &lt; 10000; $i++){<br />
$x = read_cache(&#8221;CacheTest_SerializeData.php&#8221;);<br />
$x_r = unserialize($x);<br />
}</p>
<p>$t2 = gettimeofday();</p>
<p>echo ($t2['sec'] &#8211; $t1['sec']) * 1000 + ($t2['usec'] &#8211; $t1['usec']) / 1000 . &#8220;\n&#8221;;</p>
</div>
</div>
<p><strong>总结分析</strong>：<br />
第一种，include缓存的方式<br />
优点：增加数据的保密性，和安全性，缓存内容不会被外界发现。<br />
缺点：速度相对较慢。<br />
用途：保存禁止系统外部得知的数据，比如web系统的设置，甚至MySQL信息等的保存</p>
<p>第二种，serialize序列化缓存的方式<br />
优点：速度较快。<br />
缺点：缓存系统文件路径一点曝光，缓存内容会泄露。<br />
用途：缓存最新文章，相关文章等不担心外部得知的数据的时候，可以使用这种方式。</p>
<p><strong>备注</strong>：<br />
当装了ea、apc等PHP内存缓存之后，第一种通过include读取缓存的方式速度会高于第二种serialize序列化缓存的方式。所以在MooPHP框架中，我们对于非敏感信息采用第二种方式缓存；敏感信息采用第一种方式缓存。有关MooPHP的介绍可以参考《<a href="http://www.ccvita.com/295.html">MooPHP框架简介</a>》这篇文章（地址：http://www.ccvita.com/295.html）</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cnedwin.com/27.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PHP 6发布前新特性大展望</title>
		<link>http://www.cnedwin.com/26.html</link>
		<comments>http://www.cnedwin.com/26.html#comments</comments>
		<pubDate>Mon, 12 May 2008 09:55:49 +0000</pubDate>
		<dc:creator>Edwin</dc:creator>
				<category><![CDATA[技术探讨]]></category>
		<category><![CDATA[PHP，面向对象，展望]]></category>

		<guid isPermaLink="false">http://www.cnedwin.com/?p=26</guid>
		<description><![CDATA[PHP下一个备受关注的版本6.0，已经进入snapshot阶段，不久即将发布。PHP 6.0将包含很多新的特性、语法改进，会让面向对象编程更加简单，另外还有很多重要的改进，比如Unicode的核心支持，这将让PHP更适合全球范围支 持和更加的健康发展。PHP是已经风靡全球的脚本语言，在数以万计的网站上运行着,包括Linuxeden PHP 6.0将完全向前兼容,同时增加许多令人激动的特性。


# 更加好的Unicode支持
# NameSpace:名字空间,将更好的避免在函数及类之间的变量名冲突。
# 令人激动的Web 2.0特性
# SOAP: 简单对象访问协议 (SOAP:Simple Object Access Protocol)SOAP 可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议( HTTP),简单邮件传输协议(SMTP),多用途网际邮件扩充协议(MIME)。它还支持从消息系统到远程过程调用(RPC)等大量的应用程序。
# XML:
从PHP 5.1版本开始,XMLReader和XMLWriter就已经包含在PHP内核,它可以让它可以让XML编程更加轻松。
当然，除了增加新的特性，一些会给系统带来不稳定因素和安全隐患的特性也将被取消，以下是取消的内容列表：
magic_quotes
register_globals
register_long_arrays
safe_mode
magic_quotes
]]></description>
			<content:encoded><![CDATA[<p>PHP下一个备受关注的版本6.0，已经进入snapshot阶段，不久即将发布。PHP 6.0将包含很多新的特性、语法改进，会让面向对象编程更加简单，另外还有很多重要的改进，比如Unicode的核心支持，这将让PHP更适合全球范围支 持和更加的健康发展。PHP是已经风靡全球的脚本语言，在数以万计的网站上运行着,包括Linuxeden PHP 6.0将完全向前兼容,同时增加许多令人激动的特性。</p>
<p><span id="more-26"></span></p>
<div style="text-align: center;"><img src="http://www.linuxeden.com/upimg/allimg/080512/1331520.gif" alt="" width="150" height="150" /></div>
<p># 更加好的Unicode支持<br />
# NameSpace:名字空间,将更好的避免在函数及类之间的变量名冲突。<br />
# 令人激动的Web 2.0特性<br />
# SOAP: 简单对象访问协议 (SOAP:Simple Object Access Protocol)SOAP 可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议( HTTP),简单邮件传输协议(SMTP),多用途网际邮件扩充协议(MIME)。它还支持从消息系统到远程过程调用(RPC)等大量的应用程序。<br />
# XML:<br />
从PHP 5.1版本开始,XMLReader和XMLWriter就已经包含在PHP内核,它可以让它可以让XML编程更加轻松。<br />
<br style="font-weight: bold;" /><span style="font-weight: bold;">当然，除了增加新的特性，一些会给系统带来不稳定因素和安全隐患的特性也将被取消，以下是取消的内容列表：</span></p>
<p>magic_quotes<br />
register_globals<br />
register_long_arrays<br />
safe_mode<br />
magic_quotes</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cnedwin.com/26.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP 5.2.6 Released</title>
		<link>http://www.cnedwin.com/20.html</link>
		<comments>http://www.cnedwin.com/20.html#comments</comments>
		<pubDate>Sun, 04 May 2008 06:26:46 +0000</pubDate>
		<dc:creator>Edwin</dc:creator>
				<category><![CDATA[技术探讨]]></category>
		<category><![CDATA[行业动态]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.cnedwin.com/20.html</guid>
		<description><![CDATA[期待已久的PHP5.2.6终于发布了！其实几天前Released就可以下载了，但是官方网站没有更新，怕有变动一直没有下载。这次对比PHP5.2.5的更新，是非常有意义的一次变动。
The PHP development team would like to announce the immediateavailability of PHP 5.2.6. This release focuses on improving the stability ofthe PHP 5.2.x branch with over 120 bug fixes, several of which are security related.All users of PHP are encouraged to upgrade to this release. Further details about the PHP 5.2.6 release can be found [...]]]></description>
			<content:encoded><![CDATA[<p>期待已久的PHP5.2.6终于发布了！其实几天前Released就可以下载了，但是官方网站没有更新，怕有变动一直没有下载。这次对比PHP5.2.5的更新，是非常有意义的一次变动。</p>
<p>The PHP development team would like to announce the immediateavailability of PHP 5.2.6. This release focuses on improving the stability ofthe PHP 5.2.x branch with over 120 bug fixes, several of which are security related.All users of PHP are encouraged to upgrade to this release. Further details about the PHP 5.2.6 release can be found in the <a href="http://www.php.net/releases/5_2_6.php" mce_href="http://www.php.net/releases/5_2_6.php" target="_blank"><font style="" color="#0000ff">release announcement for 5.2.6</font></a>, the full list of changes is available in the <a href="http://www.php.net/ChangeLog-5.php#5.2.6" mce_href="http://www.php.net/ChangeLog-5.php#5.2.6" target="_blank"><font style="" color="#0000ff">ChangeLog for PHP 5</font></a>. <img src="http://www.cnedwin.com/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif" mce_src="http://www.cnedwin.com/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif" alt="" class="mceWPmore mceItemNoResize" title="更多……"> <b>Security Enhancements and Fixes in PHP 5.2.6:</b></p>
<ul>
<li>Fixed possible stack buffer overflow in the FastCGI SAPI identified by Andrei Nigmatulin.</li>
<li>Fixed integer overflow in printf() identified by Maksymilian Aciemowicz.</li>
<li>Fixed security issue detailed in CVE-2008-0599 identified by Ryan Permeh.</li>
<li>Fixed a safe_mode bypass in cURL identified by Maksymilian Arciemowicz.</li>
<li>Properly address incomplete multibyte chars inside escapeshellcmd() identified by Stefan Esser.</li>
<li>Upgraded bundled PCRE to version 7.6</li>
</ul>
<p>Downloads：<a href="http://www.php.net/downloads.php" mce_href="http://www.php.net/downloads.php" target="_blank">http://www.php.net/downloads.php</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.cnedwin.com/20.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CentOS 5.1部署L.A.M.P环境配置手册</title>
		<link>http://www.cnedwin.com/18.html</link>
		<comments>http://www.cnedwin.com/18.html#comments</comments>
		<pubDate>Tue, 29 Apr 2008 19:00:43 +0000</pubDate>
		<dc:creator>Edwin</dc:creator>
				<category><![CDATA[技术探讨]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[CentOS]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[手册]]></category>
		<category><![CDATA[环境]]></category>
		<category><![CDATA[部署]]></category>

		<guid isPermaLink="false">http://www.cnedwin.com/?p=18</guid>
		<description><![CDATA[刚刚为公司的系统部门编写的公司LAMP部署标准，基于CentOS5.1 32/64位系统。
一、系统约定
软件源代码包存放位置        /usr/local/src
源码包编译安装位置(prefix)        /usr/local/software_name
脚本以及维护程序存放位置        /usr/local/sbin
MySQL 数据库位置        /var/lib/mysql（可按情况设置）
Apache 网站根目录        /www/domain.com（可按情况设置）
Apache 虚拟主机日志根目录        /var/logs/www（可按情况设置）
Apache 运行账户        www:www

二、系统环境部署及调整
1. 检查系统是否正常
# more /var/log/messages        （检查有无系统级错误信息）
# dmesg （检查硬件设备是否有错误信息）
# ifconfig（检查网卡设置是否正确）
# ping www.moophp.org （检查网络是否正常）
2. 关闭不需要的服务
# export LANG=&#8217;en_US&#8217; //设置语言
# ntsysv
以下仅列出需要启动的服务，未列出的服务一律推荐关闭：
atd
crond
irqbalance
vsftpd   (FTP服务可选)
microcode_ctl
network
ntpd
sendmail
sshd
syslog
3. 重新启动系统
# init 6
4. 配置 vim
# vi /root/.bashrc
在 alias mv=&#8217;mv -i&#8217; 下面添加一行：alias vi=&#8217;vim&#8217; 保存退出。
# echo &#8217;syntax on&#8217; &#62; /root/.vimrc
5. [...]]]></description>
			<content:encoded><![CDATA[<p>刚刚为公司的系统部门编写的公司LAMP部署标准，基于CentOS5.1 32/64位系统。</p>
<p>一、系统约定<br />
软件源代码包存放位置        /usr/local/src<br />
源码包编译安装位置(prefix)        /usr/local/software_name<br />
脚本以及维护程序存放位置        /usr/local/sbin<br />
MySQL 数据库位置        /var/lib/mysql（可按情况设置）<br />
Apache 网站根目录        /www/domain.com（可按情况设置）<br />
Apache 虚拟主机日志根目录        /var/logs/www（可按情况设置）<br />
Apache 运行账户        www:www</p>
<p><span id="more-18"></span></p>
<p>二、系统环境部署及调整<br />
1. 检查系统是否正常<br />
# more /var/log/messages        （检查有无系统级错误信息）<br />
# dmesg （检查硬件设备是否有错误信息）<br />
# ifconfig（检查网卡设置是否正确）<br />
# ping <a href="http://www.moophp.org/" target="_blank">www.moophp.org</a> （检查网络是否正常）</p>
<p>2. 关闭不需要的服务<br />
# export LANG=&#8217;en_US&#8217; //设置语言<br />
# ntsysv<br />
以下仅列出需要启动的服务，未列出的服务一律推荐关闭：<br />
atd<br />
crond<br />
irqbalance<br />
vsftpd   (FTP服务可选)<br />
microcode_ctl<br />
network<br />
ntpd<br />
sendmail<br />
sshd<br />
syslog</p>
<p>3. 重新启动系统<br />
# init 6</p>
<p>4. 配置 vim<br />
# vi /root/.bashrc<br />
在 alias mv=&#8217;mv -i&#8217; 下面添加一行：alias vi=&#8217;vim&#8217; 保存退出。<br />
# echo &#8217;syntax on&#8217; &gt; /root/.vimrc</p>
<p>5. 使用 yum 程序安装所需开发包（以下为标准的 RPM 包名称）<br />
a.修改/etc/yum.repos.d/CentOS-Base.repo，将镜象站点地址改为在中国的镜象站点地址。<br />
修改如下：</p>
<p># CentOS-Base.repo<br />
#<br />
# This file uses a new mirrorlist system developed by Lance Davis for CentOS.<br />
# The mirror system uses the connecting IP address of the client and the<br />
# update status of each mirror to pick mirrors that are updated to and<br />
# geographically close to the client. You should use this for CentOS updates<br />
# unless you are manually picking other mirrors.<br />
#<br />
# If the mirrorlist= does not work for you, as a fall back you can try the<br />
# remarked out baseurl= line instead.<br />
#<br />
#</p>
<p>[base]<br />
name=CentOS-$releasever &#8211; Base<br />
baseurl=http://mirror.be10.com/centos/$releasever/os/$basearch/<br />
gpgcheck=1<br />
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5<br />
protect=1</p>
<p>#released updates<br />
[updates]<br />
name=CentOS-$releasever &#8211; Updates<br />
baseurl=http://mirror.be10.com/centos/$releasever/updates/$basearch/<br />
gpgcheck=1<br />
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5<br />
protect=1</p>
<p>#packages used/produced in the build but not released<br />
[addons]<br />
name=CentOS-$releasever &#8211; Addons<br />
baseurl=http://mirror.be10.com/centos/$releasever/addons/$basearch/<br />
gpgcheck=1<br />
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5<br />
protect=0</p>
<p>#additional packages that may be useful<br />
[extras]<br />
name=CentOS-$releasever &#8211; Extras<br />
baseurl=http://mirror.be10.com/centos/$releasever/extras/$basearch/<br />
gpgcheck=1<br />
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5<br />
protect=0</p>
<p>#additional packages that extend functionality of existing packages<br />
[centosplus]<br />
name=CentOS-$releasever &#8211; Plus<br />
baseurl=http://mirror.be10.com/centos/$releasever/centosplus/$basearch/<br />
gpgcheck=1<br />
enabled=0<br />
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5<br />
protect=1</p>
<p>#contrib &#8211; packages by Centos Users<br />
[contrib]<br />
name=CentOS-$releasever &#8211; Contrib<br />
baseurl=http://mirror.be10.com/centos/$releasever/contrib/$basearch/<br />
gpgcheck=1<br />
enabled=0<br />
protect=0<br />
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5</p>
<p>#packages in testing<br />
[testing]<br />
name=CentOS-5 &#8211; Testing<br />
baseurl=http://mirror.be10.com/centos/5/testing/i386/</p>
<p>gpgcheck=1<br />
enabled=0<br />
protect=0</p>
<p>b.保存后更新系统,执行：<br />
# yum upgrade<br />
c.建议更新所有列出的程序<br />
d.最后安装需要的开发库：<br />
# yum install vim-enhanced gcc gcc-c++ gcc-g77 flex bison autoconf automake bzip2-devel ncurses-devel libjpeg-devel libpng-devel libtiff-devel freetype-devel pam-devel kernel</p>
<p>6. a.定时校正服务器时钟，启用ntpd服务<br />
# service ntpd start<br />
b.对TCP/IP网络参数进行调整，加强抗SYN Flood能力<br />
# echo &#8216;net.ipv4.tcp_syncookies = 1&#8242; &gt;&gt; /etc/sysctl.conf<br />
将net.ipv4.tcp_syncookies = 1写入sysctl.conf 文件<br />
# sysctl -p<br />
查看结果</p>
<p>7. 源码编译安装所需包(Source)<br />
(1) GD2<br />
# cd /usr/local/src<br />
# wget –c <a href="http://www.ismole.net/downloads/gd-2.0.35.tar.gz" target="_blank">http://www.ismole.net/downloads/gd-2.0.35.tar.gz</a><br />
# tar xzvf gd-2.0.35.tar.gz<br />
# cd gd-2.0.35<br />
# ./configure &#8211;prefix=/usr/local/gd2<br />
# make<br />
# make install</p>
<p>(2) LibXML2<br />
# cd /usr/local/src<br />
# wget –c <a href="http://www.ismole.net/downloads/libxml2-2.6.32.tar.gz" target="_blank">http://www.ismole.net/downloads/libxml2-2.6.32.tar.gz</a><br />
# tar xzvf libxml2-2.6.32.tar.gz<br />
# cd libxml2-2.6.32<br />
# ./configure &#8211;prefix=/usr/local/libxml2<br />
# make<br />
# make install</p>
<p>(3) LibMcrypt<br />
# cd /usr/local/src<br />
# wget –c <a href="http://www.ismole.net/downloads/libmcrypt-2.5.8.tar.bz2" target="_blank">http://www.ismole.net/downloads/libmcrypt-2.5.8.tar.bz2</a><br />
# tar xjvf libmcrypt-2.5.8.tar.bz2<br />
# cd libmcrypt-2.5.8<br />
# ./configure &#8211;prefix=/usr/local/libmcrypt<br />
# make<br />
# make install</p>
<p>(4) Apache日志截断程序<br />
# cd /usr/local/src<br />
# wget –c <a href="http://www.ismole.net/downloads/cronolog-1.7.0-beta.tar.gz" target="_blank">http://www.ismole.net/downloads/cronolog-1.7.0-beta.tar.gz</a><br />
# tar xzvf cronolog-1.7.0-beta.tar.gz<br />
# cd cronolog-1.7.0-beta<br />
# ./configure &#8211;prefix=/usr/local/cronolog<br />
# make<br />
# make install</p>
<p>8. 升级OpenSSL和OpenSSH<br />
# cd /usr/local/src<br />
# wget –c <a href="http://www.ismole.net/downloads/openssl-0.9.8g.tar.gz" target="_blank">http://www.ismole.net/downloads/openssl-0.9.8g.tar.gz</a><br />
# wget –c <a href="http://www.ismole.net/downloads/openssh-5.0p1.tar.gz" target="_blank">http://www.ismole.net/downloads/openssh-5.0p1.tar.gz</a><br />
# tar xzvf openssl-0.9.8g.tar.gz<br />
# cd openssl-0.9.8g<br />
# ./config &#8211;prefix=/usr/local/openssl<br />
# make<br />
# make test<br />
# make install<br />
# cd ..<br />
# tar xzvf openssh-5.0p1.tar.gz<br />
# cd openssh-5.0p1<br />
# ./configure  \<br />
&#8220;&#8211;prefix=/usr&#8221; \<br />
&#8220;&#8211;with-pam&#8221; \<br />
&#8220;&#8211;with-zlib&#8221; \<br />
&#8220;&#8211;sysconfdir=/etc/ssh&#8221; \<br />
&#8220;&#8211;with-ssl-dir=/usr/local/openssl&#8221; \<br />
&#8220;&#8211;with-md5-passwords&#8221;<br />
# make<br />
# make install</p>
<p>（1）禁用 SSH V1 协议<br />
找到：<br />
#Protocol 2,1<br />
改为：<br />
Protocol 2</p>
<p>（2）禁止root直接登录<br />
此处先建立一个普通系统用户：<br />
# useradd username<br />
# passwd username<br />
找到：<br />
#PermitRootLogin yes<br />
改为：<br />
PermitRootLogin no</p>
<p>（3）禁用服务器端GSSAPI<br />
找到以下两行，并将它们注释：<br />
GSSAPIAuthentication yes<br />
GSSAPICleanupCredentials yes</p>
<p>（4）禁用 DNS 名称解析<br />
找到：<br />
#UseDNS yes<br />
改为：<br />
UseDNS no</p>
<p>（5）禁用客户端 GSSAPI<br />
# vi /etc/ssh/ssh_config<br />
找到：<br />
GSSAPIAuthentication yes<br />
将这行注释掉。</p>
<p>最后，确认修改正确后重新启动 SSH 服务<br />
# service sshd restart<br />
# ssh -v<br />
确认 OpenSSH 以及 OpenSSL 版本正确。</p>
<p>8. FTP服务器的配置<br />
#vi /etc/vsftpd/vsftpd.conf<br />
把anonymous_enable=YES注释掉不允许匿名登录。<br />
把 chroot_list_enable=YES<br />
chroot_list_file=/etc/vsftpd.chroot_list<br />
前的注释去掉。<br />
把ftpd_banner=*前的注释去掉。后面改成你的欢迎信息(这样设置可以避免显示ftp服务器的版本信息)<br />
保存，并执行<br />
#service vsftpd start</p>
<p>这时可以用刚才添加的普通用户登陆FTP，root默认不能通过FTP方式登录。</p>
<p>三、编译安装L.A.M.P环境<br />
1. 下载软件<br />
# cd /usr/local/src<br />
# wget –c <a href="http://www.ismole.net/downloads/" target="_blank">http://www.ismole.net/downloads/</a>软件包名称<br />
httpd-2.2.6.tar.bz2<br />
mysql-5.1.24-rc-linux-i686-glibc23.tar.gz<br />
php-5.2.4.tar.bz2<br />
ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz</p>
<p>2. 安装MySQL<br />
# tar xzvf mysql-5.1.24-rc-linux-i686-glibc23.tar.gz<br />
# mv mysql-5.1.24-rc-linux-i686-glibc23  /usr/local/<br />
# ln -s /usr/local/ mysql-5.1.24-rc-linux-i686-glibc23  /usr/local/mysql<br />
# useradd mysql<br />
# chown -R mysql:root  /usr/local/mysql/<br />
# cd /usr/local/mysql<br />
# ./scripts/mysql_install_db  &#8211;user=mysql<br />
# cp ./support-files/mysql.server  /etc/rc.d/init.d/mysqld<br />
# chown root:root /etc/rc.d/init.d/mysqld<br />
# chmod 755 /etc/rc.d/init.d/mysqld<br />
# chkconfig &#8211;add mysqld<br />
# chkconfig &#8211;level 35 mysqld on<br />
# cp ./support-files/my-huge.cnf  /etc/my.cnf<br />
# mv /usr/local/mysql/data  /var/lib/mysql<br />
# chown -R mysql:mysql /var/lib/mysql/<br />
# vi /etc/my.cnf  修改以下内容：</p>
<p>（1）        在 [mysql] 段增加一行：<br />
default-character-set = utf8<br />
（2）        在 [mysqld] 段增加或修改：<br />
datadir = /var/lib/mysql<br />
&#8211;skip-innodb<br />
default-character-set = utf8<br />
&#8211;wait-timeout = 5<br />
max_connections = 512<br />
max_connect_errors = 10000000<br />
thread_concurrency = CPU个数×2<br />
将 log-bin 注释<br />
# bin/mysqladmin -u root password &#8216;password_for_root&#8217;</p>
<p>3. 编译安装Apache<br />
# cd /usr/local/src<br />
# tar xjvf httpd-2.2.6.tar.bz2<br />
# cd httpd-2.2.6<br />
# ./configure \<br />
&#8220;&#8211;prefix=/usr/local/apache2&#8243; \<br />
&#8220;&#8211;with-included-apr&#8221; \<br />
&#8220;&#8211;enable-so&#8221; \<br />
&#8220;&#8211;enable-deflate=shared&#8221; \<br />
&#8220;&#8211;enable-expires=shared&#8221; \<br />
&#8220;&#8211;enable-rewrite=shared&#8221; \<br />
&#8220;&#8211;enable-static-support&#8221; \<br />
&#8220;&#8211;disable-userdir&#8221;<br />
# make<br />
# make install<br />
# echo &#8216;/usr/local/apache2/bin/apachectl start &#8216; &gt;&gt; /etc/rc.local</p>
<p>4. 编译安装PHP<br />
# cd /usr/local/src<br />
# tar xjvf php-5.2.4.tar.bz2<br />
# cd php-5.2.4<br />
# ./configure &#8211;prefix=/usr/local/php &#8211;with-apxs2=/usr/local/apache2/bin/apxs &#8211;with-config-file-path=/usr/local/php/etc &#8211;with-mysql=/usr/local/mysql &#8211;with-libxml-dir=/usr/local/libxml2 &#8211;with-gd=/usr/local/gd2 &#8211;with-jpeg-dir &#8211;with-png-dir &#8211;with-bz2 &#8211;with-freetype-dir &#8211;with-iconv-dir &#8211;with-zlib-dir &#8211;with-mcrypt=/usr/local/libmcrypt &#8211;enable-soap &#8211;enable-gd-native-ttf &#8211;enable-ftp &#8211;enable-mbstring &#8211;enable-exif &#8211;disable-ipv6 &#8211;disable-cgi &#8211;disable-cli<br />
# make<br />
# make install<br />
# mkdir /usr/local/php/etc<br />
# cp php.ini-dist /usr/local/php/etc/php.ini</p>
<p>5. 安装Zend Optimizer<br />
# cd /usr/local/src<br />
# tar xzvf ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz<br />
# ./ ZendOptimizer-3.3.3-linux-glibc23-i386/install.sh<br />
安装Zend Optimizer过程的最后不要选择重启Apache。</p>
<p>6. 整合Apache与PHP<br />
# vi /usr/local/apache2/conf/httpd.conf<br />
找到：<br />
AddType application/x-gzip .gz .tgz<br />
在该行下面添加<br />
AddType application/x-httpd-php .php</p>
<p>找到：<br />
&lt;IfModule dir_module&gt;<br />
DirectoryIndex index.html<br />
&lt;/IfModule&gt;<br />
将该行改为<br />
&lt;IfModule dir_module&gt;<br />
DirectoryIndex index.html index.htm index.php<br />
&lt;/IfModule&gt;</p>
<p>找到：<br />
#Include conf/extra/httpd-mpm.conf<br />
#Include conf/extra/httpd-info.conf<br />
#Include conf/extra/httpd-vhosts.conf<br />
#Include conf/extra/httpd-default.conf<br />
去掉前面的“#”号，取消注释。</p>
<p>注意：以上 4 个扩展配置文件中的设置请按照相关原则进行合理配置！</p>
<p>修改完成后保存退出。<br />
# /usr/local/apache2/bin/apachectl restart</p>
<p>7. 查看确认L.A.M.P环境信息、提升 PHP 安全性<br />
在网站根目录放置 phpinfo.php 脚本，检查phpinfo中的各项信息是否正确。</p>
<p>确认 PHP 能够正常工作后，在 php.ini 中进行设置提升 PHP 安全性。<br />
# vi /etc/php.ini<br />
找到：<br />
disable_functions =<br />
设置为：<br />
phpinfo,passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server</p>
<p>三、服务器安全性设置<br />
1. 设置系统防火墙<br />
# vi /usr/local/sbin/fw.sh<br />
将以下脚本命令粘贴到 fw.sh 文件中。<br />
#!/bin/bash</p>
<p># Stop iptables service first<br />
service iptables stop</p>
<p># Load FTP Kernel modules<br />
/sbin/modprobe ip_conntrack_ftp<br />
/sbin/modprobe ip_nat_ftp</p>
<p># Inital chains default policy<br />
/sbin/iptables -F -t filter<br />
/sbin/iptables -P INPUT DROP<br />
/sbin/iptables -P OUTPUT ACCEPT</p>
<p># Enable Native Network Transfer<br />
/sbin/iptables -A INPUT -i lo -j ACCEPT</p>
<p># Accept Established Connections<br />
/sbin/iptables -A INPUT -m state &#8211;state ESTABLISHED,RELATED -j ACCEPT</p>
<p># ICMP Control<br />
/sbin/iptables -A INPUT -p icmp -m limit &#8211;limit 1/s &#8211;limit-burst 10 -j ACCEPT</p>
<p># WWW Service<br />
/sbin/iptables -A INPUT -p tcp &#8211;dport 80 -j ACCEPT</p>
<p># FTP Service<br />
/sbin/iptables -A INPUT -p tcp &#8211;dport 21 -j ACCEPT</p>
<p># SSH Service<br />
/sbin/iptables -A INPUT -p tcp &#8211;dport 22 -j ACCEPT</p>
<p># chmod 755 /usr/local/sbin/fw.sh<br />
# echo &#8216;/usr/local/sbin/fw.sh&#8217; &gt;&gt; /etc/rc.local<br />
# /usr/local/sbin/fw.sh</p>
<p>原载地址：<a href="http://www.ismole.net/thread-505-1-1.html">http://www.ismole.net/thread-505-1-1.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.cnedwin.com/18.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
