<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[静怡家园]]></title> 
<link>http://www.zhanghaijun.com/index.php</link> 
<description><![CDATA[书山有路勤为径，学海无涯苦作舟！]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[静怡家园]]></copyright>
<item>
<link>http://www.zhanghaijun.com/post//</link>
<title><![CDATA[Apache服务器学习之PHP应用精彩图解]]></title> 
<author>碟舞飞扬 &lt;webmaster@zhanghaijun.com&gt;</author>
<category><![CDATA[服务器类]]></category>
<pubDate>Sat, 01 Nov 2008 05:56:25 +0000</pubDate> 
<guid>http://www.zhanghaijun.com/post//</guid> 
<description>
<![CDATA[ 
	Apache服务器是Internet网上应用最为广泛的Web服务器软件之一。如果我们需要创建一个每天有数百万人访问的Web服务器，Apache可能是最佳选择。 <br/><P>&nbsp;&nbsp;&nbsp; PHP的全名是“PHP：HYPERTEXT PREPROCESSOR”。是一种多平台无缝运行的服务器端嵌入式脚本语言，它融合了C、JAVA和PERL等编程语言，由于它是一种免费的软件，具有自由软件的性质，版本更新速度快，移植速度快，丰富的函数库功能，因而很快得到大家的喜欢，特别是PHP提供加密函数库，特别适合给安全性较高的电子商务网站的要求，在Apache环境下构建的PHP网站已经作为当前的流行的Web网站之一。<BR><BR>&nbsp;&nbsp;&nbsp; PHP能够作为Apache Web服务器的模块执行，使得它的执行效率要高于普通的CGI程序，而且能比CGI或者Perl更快速地执行动态网页。</P><br/><P>&nbsp;&nbsp;&nbsp; PHP的工作原理如下（如下图1所示）：<BR></P><br/><P><IMG border=0 src="/attachment/2008-11/20081105135934663.jpg"></P><br/><P><BR>&nbsp;&nbsp;&nbsp; 我们如果创建了一个PHP应用程序，实际上相当于创建了一个PHP脚本文件。在服务器将输出信息发送到客户端之前，网络服务器会率先将文件中的PHP语言进行加工处理。如果服务器不支持PHP，通常情况下，网络服务器会直接将超文本文件送到客户的浏览器上以表示对HTTP的要求作出应答；如果服务器支持PHP，则在服务器响应一个对PHP文件的请求时，会进行下列处理：首先在一个PHP文件内，标准的HTML编码会被直接送到浏览器上，而内嵌PHP程序却是先被网络服务器解释执行。如果是标准输出的话，输出信息也将作为标准的HTML而被送至浏览器。</P><br/><P>&nbsp;&nbsp;&nbsp; PHP可以安装在Unix/Linux环境下，也可以安装在Windows环境下。目前网站使用最多的、也是最理想的便是PHP+MySQL+Apache基于Unix/Linux下的服务器策略。</P><br/><P>本文中所说的Linux就选用大家比较熟悉的Red Hat Linux操作系统。</P><br/><P>&nbsp;&nbsp;&nbsp; 作为一个领先的开放源代码操作系统，红帽企业Linux提供了适用于从台式计算机到大型数据中心的系列产品：红帽企业 Linux AS 适用于高端的，用于关键业务处理的系统，红帽企业 Linux ES 适用于小到中型服务器，红帽企业 Linux WS 适用于技术／设计工作站，红帽企业 Desktop适用于安全，可管理的客户机环境。</P><br/><P>&nbsp;&nbsp;&nbsp; 我们采用最新的红帽企业 Linux AS4的环境中使用Apache来构建PHP网站，作为学习环境使用，在安装redhat AS4时选择为系统“定制软件包”，在定制安装中选择“全部”，会安装包括在红帽企业 Linux AS4中的所有软件包。Apache 2.0服务器版本、PHP 4.3.9以及MySQL 4.1.x等软件都已经安装成功。</P><br/><P>&nbsp;&nbsp;&nbsp; 我们也可以到<A href="http://www.apache.org/"><FONT color=#0000ff>http://www.apache.org/</FONT></A>网站下载Apache最新版本， <A href="http://www.php.net/"><FONT color=#0000ff>http://www.php.net/</FONT></A>网站下载PHP新版本以及<A href="http://www.mysql.com/"><FONT color=#0000ff>http://www.mysql.com/</FONT></A>下载Linux的MySQL最新版本分别进行安装，由于篇幅有限，这里就不介绍如何分别编译、配置和安装了。</P><br/><P>&nbsp;&nbsp;&nbsp; 红帽企业 Linux AS4中使用 “HTTP 配置工具”来配置 Apache HTTP 服务器 的一般步骤如下所述： </P><br/><P>&nbsp;&nbsp;&nbsp; 1）在「主」标签下配置基本设置。<BR>&nbsp;&nbsp;&nbsp; 2）根据实际需要，点击「虚拟主机」标签来配置默认设置。在「虚拟主机」标签下，配置默认的虚拟主机。如果你想为不止一个 URL 或虚拟主机提供服务，则添加额外的虚拟主机。<BR>&nbsp;&nbsp;&nbsp; 3）在「服务器」标签下配置服务器设置。<BR>&nbsp;&nbsp;&nbsp; 4）在「性能微调」标签下配置连接设置。<BR>&nbsp;&nbsp;&nbsp; 5）把所有必要的文件复制到 DocumentRoot 和 cgi-bin 目录中。<BR>&nbsp;&nbsp;&nbsp; 6）退出程序并保存你的设置。</P><br/><P><STRONG><FONT color=#0000ff>1、基本设置</FONT></STRONG></P><br/><P><STRONG><FONT color=#0000ff>&nbsp;&nbsp;&nbsp; </FONT></STRONG>使用「主」标签来配置基本服务器设置。<BR>&nbsp; <IMG border=0 src="/attachment/2008-11/20081105135937865.jpg"><BR>&nbsp;&nbsp;&nbsp; 在「服务器名称」文本字段中输入有权使用的完整域名。该选项和 httpd.conf 中的 ServerName 指令相对应。ServerName 指令设置万维网（WWW或WEB）服务器的主机名。服务器名称不一定非要是它的 IP 地址。在这里服务器名称设为 <A href="http://www.ghq.com/"><FONT color=#0000ff>www.ghq.com</FONT></A>。 </P><br/><P>&nbsp;&nbsp;&nbsp; 在「网主电子邮件地址」文本字段中输入万维网服务器维护者的电子邮件地址。该选项和 httpd.conf 中的ServerAdmin 指令相对应。如果配置服务器的错误页要包含电子邮件地址，该地址将会被用户用来向服务器的管理员提交问题。默认的值是：<A href="mailto:root@localhost"><FONT color=#0000ff>root@localhost</FONT></A>。 </P><br/><P>&nbsp;&nbsp;&nbsp; 使用「可用地址」文本字段来定义服务器接受进入连接请求的端口。该选项和 httpd.conf 中的Listen 指令相对应。红帽默认配置 Apache HTTP 服务器 在端口 80 上监听非安全万维网通讯。</P><br/><P>&nbsp;&nbsp;&nbsp; 为了简单明了，这里我们不配置虚拟主机。</P><br/><P>「服务器」标签允许配置基本的服务器设置。默认设置在多数情况下都是适用的。<BR>&nbsp; <IMG border=0 src="/attachment/2008-11/20081105135940190.jpg"><BR>&nbsp;&nbsp; 「锁文件」的值和LockFile 指令相对应。在服务器使用 USE_FCNTL_SERIALIZED_ACCEPT 或 USE_FLOCK_SERIALIZED_ACCEPT 编译时，该指令把路径设为锁文件所用的路径。它必须贮存在本地磁盘上。</P><br/><P>&nbsp;&nbsp; 「PID 文件」的值和PidFile 指令相对应。该指令设置服务器记录进程 ID（PID） 的文件。该文件应该只能够被根用户读取。多数情况下，应该使用默认值。 </P><br/><P>&nbsp;&nbsp; 「核心转储目录」的值和CoreDumpDirectory 指令相对应。Apache HTTP 服务器在转储核心前会试图转换到该目录中。默认值是 ServerRoot。</P><br/><P>&nbsp;&nbsp; 「用户」的值和 User 指令相对应。它设置服务器回答请求所用的 userid。用户的设置决定服务器的访问权限。该用户所无法访问的文件，网站来宾也不能够访问。默认的 User 是 apache。<BR>Group 的值与 Group 指令相对应。Group 指令和 User 指令很相似。它设置服务器回答请求所用的组群。默认组群也是 apache。</P><br/><P><STRONG><FONT color=#0000ff>3、调整性能</FONT></STRONG></P><br/><P><STRONG><FONT color=#0000ff>&nbsp;&nbsp;&nbsp; </FONT></STRONG>点击「调整性能」标签来配置使用的服务器子进程的最大数量，以及客户连接方面的 Apache HTTP 服务器选项。这些选项的默认设置在多数情况下是恰当的。改变这些设置会影响你的万维网服务器的整体性能。<BR>&nbsp; <IMG border=0 src="/attachment/2008-11/20081105135941396.jpg"><BR>&nbsp;&nbsp;&nbsp; 把「最多连接数量」设为服务器能够同时处理的客户请求的最多数量。服务器为每个连接创建一个 httpd 子进程。进程数量达到最大限度后，直到某子进程结束，Web服务器才能够接受新客户连接。如果不重新编译 Apache，该选项设置的值将不能超高 256。该选项与 MaxClients 指令相对应。 </P><br/><P>&nbsp;&nbsp; 「连接超时」定义的服务器在通信时等候传输和回应的秒数。特别是，「连接超时」定义服务器在接收 GET 请求时要等多久，在接收 POST 或 PUT 请求的 TCP 包时要等多久，以及在回应 TCP 包的 ACK 之间要等多久。「连接超时」被默认设为 300 秒，这在多数情况下都是适用的。该选项与 TimeOut 指令相对应。 </P><br/><P>&nbsp;&nbsp;&nbsp; 把「每次连接最多请求数量」设为每个持续连接所允许的最多请求次数。默认值为 100，这应该在多数情况下都适用。该选项与 MaxRequestsPerChild 指令相对应。 </P><br/><P>&nbsp;&nbsp;&nbsp; 如果选择了「允许每次连接可有无限制请求」选项，MaxKeepAliveRequests 指令的值就会是 0，这会允许无限制的请求次数。 </P><br/><P>&nbsp;&nbsp;&nbsp; 如果取消选择了「允许持久性连接」选项，KeepAlive 指令就会被设为 false。如果选择了它，KeepAlive 指令就会被设为 true，并且KeepAliveTimeout 指令的值会被设为「下次连接的超时时间」中选定的值。该指令设置的超时秒数是服务器在回答了一项请求之后，关闭连接之前，等待下一个请求时会等候的秒数。一旦接收到请求，服务器就会改用「连接超时」中的值。 </P><br/><P>&nbsp;&nbsp;&nbsp; 把「持续连接」设为一个较大的数值可能会导致服务器速度减慢，这要依据试图连接该服务器的用户数量而定。该选项的数值越大，等候前一个用户再次连接的服务器进程就越多。</P><br/><P><STRONG><FONT color=#0000ff>4、保存设置</FONT></STRONG></P><br/><P><STRONG><FONT color=#0000ff>&nbsp;&nbsp;&nbsp; </FONT></STRONG>如果不想保存所做的 Apache HTTP 服务器 配置，点击 HTTP 配置工具窗口右下角的「取消」按钮，会被提示确认。如果点击了「是」来确认该选择，设置就不会被保存。 </P><br/><P>&nbsp;&nbsp;&nbsp; 如果你想保存你所做的 Apache HTTP 服务器 配置，点击 HTTP 配置工具窗口右下角的「确定」按钮。一个对话框就会出现。如果你点击了「是」，你的设置就会被保存在 /etc/httpd/conf/httpd.conf 中。</P><br/><P>&nbsp;&nbsp;&nbsp; 如果这是第一次使用 HTTP 配置工具，我们会看到一个警告配置文件已经被手工修改的对话框。如果 HTTP 配置工具检测到 httpd.conf 配置文件已被手工修改，它会把手工修改的文件保存为 /etc/httpd/conf/httpd.conf.bak。</P><br/><P>&nbsp;&nbsp;&nbsp; Apache的配置文件httpd.conf位于/etc/httpd/conf目录下如图5所示，其中的主机名和网页存放的目录位置等都有相应的配置如图6所示。<BR>&nbsp; <IMG border=0 src="/attachment/2008-11/20081105135942512.jpg"><BR><IMG border=0 src="/attachment/2008-11/20081105135942899.jpg"></P><br/><P>&nbsp;&nbsp;&nbsp; 红帽企业 Linux AS4中默认的 /etc/php.ini 配置文件已经把过去使用的默认值 "development" 改为使用 "production" 为默认值。这个软件包现在使用 "apache2handler" SAPI 与 Apache httpd 2.0 集成，而不是使用 "apache2filter" SAPI。如果从以前的发行版本升级，SetOutputFilter 会被从 /etc/httpd/conf.d/php.conf 文件中删除。</P><br/><P>&nbsp;&nbsp;&nbsp; Php.ini文件在/etc目录下（如图7），打开文件内容如图8所示，其中有engine=On项，表示PHP语言模块已经集成在Apache中即启动Apache服务，PHP也就启动了。<BR>&nbsp; <IMG border=0 src="/attachment/2008-11/20081105135943696.jpg"></TABLE> <TD align="middle"></TD></TR></TBODY></TABLE><IMG border=0 src="/attachment/2008-11/20081105135943114.jpg"></TABLE>&nbsp;&nbsp;&nbsp; Php.conf配置文件在/etc/httpd/conf.d目录下如图9所示，打开文件内容如图10所示，Apache启动时加载Php的libphp4.so模块，接着让Apache服务器能够识别PHP网页，需要用户定义它的扩展名，这样当Apache服务器加载以下扩展名的网页时，就会作为PHP网页来处理。<BR>&nbsp; <IMG border=0 src="/attachment/2008-11/20081105135946748.jpg"></TABLE>&nbsp;<BR><IMG border=0 src="/attachment/2008-11/20081105135947709.jpg"></TABLE></P>&nbsp;&nbsp;&nbsp; 首先编辑一个test.php文件，内容如图11所示，将该文件保存在/var/www/html目录中；然后启动Apache 服务如图12，在浏览器上输入<A href="http://192.168.1.68/test.php"><FONT color=#0000ff>http://192.168.1.68/test.php</FONT></A>，调出页面如图13所示，至此在Apache服务器的构建PHP网站就算完成了。<BR>&nbsp; <IMG border=0 src="/attachment/2008-11/20081105135947660.jpg"></TABLE><BR><IMG border=0 src="/attachment/2008-11/20081105135947805.jpg"></TABLE><BR><IMG border=0 src="/attachment/2008-11/20081105135948640.jpg"></TABLE><br/>Tags - <a href="http://www.zhanghaijun.com/tags/apache/" rel="tag">apache</a> , <a href="http://www.zhanghaijun.com/tags/php/" rel="tag">php</a>
]]>
</description>
</item><item>
<link>http://www.zhanghaijun.com/post//#blogcomment</link>
<title><![CDATA[[评论] Apache服务器学习之PHP应用精彩图解]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.zhanghaijun.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>