<?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>等待喝彩_OnEcho &#187; APACHE</title>
	<atom:link href="http://www.onecho.com/category/server/apache/feed" rel="self" type="application/rss+xml" />
	<link>http://www.onecho.com</link>
	<description>http://www.onecho.com  回声的启示</description>
	<lastBuildDate>Sat, 20 Mar 2010 14:26:02 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>APACHE 日志管理，以及apache2.2 的配置问题</title>
		<link>http://www.onecho.com/2009-11-14/501.html</link>
		<comments>http://www.onecho.com/2009-11-14/501.html#comments</comments>
		<pubDate>Sat, 14 Nov 2009 14:14:44 +0000</pubDate>
		<dc:creator>Kenami</dc:creator>
				<category><![CDATA[APACHE]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[403错误]]></category>
		<category><![CDATA[apache2.2]]></category>
		<category><![CDATA[rotatelogs]]></category>
		<category><![CDATA[日志截断]]></category>

		<guid isPermaLink="false">http://www.onecho.com/?p=501</guid>
		<description><![CDATA[最近服务器apache经常当机，一时也查不出原因，也只有想着如何去优化一下了。首先想到的是apache 的日志。
其实如果没有必要存储日志，可以禁用日志，这是对于不需要日志分析的情况，如果需要保存日志，又不想日志文件太大，则可以用下面的方法：
就是把日志按照日期分割，每天在服务器上面生成一个单独文件，这样，访问量再大，日志文件的大小也就有限制了。]]></description>
			<content:encoded><![CDATA[<p>最近服务器apache经常当机，一时也查不出原因，也只有想着如何去优化一下了。首先想到的是apache 的日志。<br />
其实如果没有必要存储日志，可以禁用日志，这是对于不需要日志分析的情况，如果需要保存日志，又不想日志文件太大，则可以用下面的方法：<br />
就是把日志按照日期分割，每天在服务器上面生成一个单独文件，这样，访问量再大，日志文件的大小也就有了限制。<br />
打开apache 的配置文件<br />
#vi /usr/local/apache2/conf/httpd.conf<span id="more-501"></span></p>
<p>找到ErrorLog 这一行，改成<br />
ErrorLog &#8220;|/usr/local/apache2.2/bin/rotatelogs /home/kenami/logsrvdata/input/%Y%m%d 86400 480</p>
<p>意思是调用rotatelogs 命令，把日志放进 /home/kenami/logsrcdata/input 文件夹，后面的日期是日志的名字，然后每一天保存一个新的日志</p>
<p>还有错误日志的修改，找到 CustomLog 行，改为：<br />
CustomLog &#8220;|usr/local/apache2.2/bin/rotatelogs /home/kenami/logsrvdata/input/%Y%m%d 86400 480&#8243; common</p>
<p>原理同上。<br />
这样，每天的apache 日志就可以独立成文件，减小了系统存入大日志文件的负担。</p>
<p>还有一个 apache 的日志截断工具，下面是安装方法：<br />
# cd /usr/local/src<br />
# wget http://cronolog.org/download/cronolog-1.6.2.tar.gz<br />
# tar xzvf cronolog-1.6.2.tar.gz<br />
# cd cronolog-1.6.2<br />
# ./configure &#8211;prefix=/usr/local/cronolog<br />
# make<br />
# make install</p>
<p>服务器一直用的apache2，最近想升级一下，就安装了apache2.2.14，安装方法基本一致，但配置的时候还是有几点要注意：<br />
1、虚拟主机配置文件和apache 本来的 httpd.conf文件分离，如果在apache里面配置虚拟主机，需要把httpd.conf中的<br />
# Virtual hosts<br />
#Include conf/extra/httpd-vhosts.conf<br />
下面一行的注释去掉，这样配置虚拟主机有单独的配置文件，就是conf/extra/httpd-vhosts.conf<br />
2、配置好apache 的虚拟主机后，打开页面发现都是403错误，如何解决呢？<br />
原来在httpd.conf 中，默认是禁止了所有访问，</p>
<p>Order allow,deny<br />
Allow from all<br />
Deny from all</p>
<p>把Deny from all 这行注释掉就好。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.onecho.com/2009-11-14/501.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apache 限制并发连接数和下载速度 的配置</title>
		<link>http://www.onecho.com/2009-06-05/488.html</link>
		<comments>http://www.onecho.com/2009-06-05/488.html#comments</comments>
		<pubDate>Fri, 05 Jun 2009 06:20:04 +0000</pubDate>
		<dc:creator>Kenami</dc:creator>
				<category><![CDATA[APACHE]]></category>
		<category><![CDATA[mod_bw]]></category>
		<category><![CDATA[mod_limitipconn]]></category>
		<category><![CDATA[并发数]]></category>
		<category><![CDATA[限速]]></category>

		<guid isPermaLink="false">http://www.onecho.com/2009-06-05/488.html</guid>
		<description><![CDATA[  昨天我们的一台服务器apache出现了问题，页面无法访问，过段时间要重启apache才能访问页面。查看了系统日志，没有发现被攻击的迹象，然后查看了所有网站的日志，发现一个论坛的LOG 显示了大量了mp3下载，而且是同一IP不断刷新，我想这就是我们Apache当机的原因，随后关闭了此网站，apache 再也没有出现问题，所以问题应该就在这。]]></description>
			<content:encoded><![CDATA[<p>      昨天我们的一台服务器apache出现了问题，页面无法访问，过段时间要重启apache才能访问页面。查看了系统日志，没有发现被攻击的迹象，然后查看了所有网站的日志，发现一个论坛的LOG 显示了大量了mp3下载，而且是同一IP不断刷新，我想这就是我们Apache当机的原因，随后关闭了此网站，apache 再也没有出现问题，所以问题应该就在这。</p>
<p>      下面就是如何解决这个问题了。因为这个论坛是提供音乐在线收听的，里面有大量的mp3文件，也就避免不了大量的下载链接，而我们之前也没有做任何限制（因为这不是下载站，而且没有经验）。为此，我上网找了些资料，发现了两个很好的apache模块: mod_bw 和 mod_limitipconn ;分别是限速和限制IP连接数的模块。</p>
<p>      安装mod_bw 和 mod_limitipconn 都非常简单。<span id="more-488"></span></p>
<p>1、下载：</p>
<p>      wget <a href="http://dominia.org/djao/limit/mod_limitipconn-0.22.tar.gz">http://dominia.org/djao/limit/mod_limitipconn-0.22.tar.gz</a> </p>
<p>      wget <a href="http://bwmod.sourceforge.net/files/mod_bw-0.7.tgz">http://bwmod.sourceforge.net/files/mod_bw-0.7.tgz</a></p>
<p>2.安装</p>
<p>#tar -zxvf mod_limitipconn-0.22.tar.gz<br />
#cd mod_limitipconn-0.22<br />
#vi Makefile<br />
修改：apxs = &#8220;/usr/local/apache2/bin/apxs&#8221; # 这里是自己apache的apxs路径，加载模块</p>
<p>或者</p>
<p>#/usr/local/apache2/bin/apxs -i -c -a mod_limitipconn.c  来加载模块<br />
#make<br />
#make install</p>
<p>#tar -xvf mod_bw-0.7.tgz<br />
#cd mod_bw<br />
#/usr/local/apache2/bin/apxs -i -c -a /home/kenami/mod_bw/mod_bw.c</p>
<p>下面用vi打开apache 的配置文件 httpd.conf</p>
<p>发现了以下两行：</p>
<p>LoadModule limitipconn_module modules/mod_limitipconn.so<br />
LoadModule bw_module          modules/mod_bw.so</p>
<p>说明这两个模块安装成功</p>
<p>以下在httpd.conf 配置这两个模块，我的配置如下：</p>
<p>&lt;IfModule mod_limitipconn.c&gt;<br />
    &lt;Location <a>/home/bo@znche.com/attachments/month</a>_*&gt; #需要控制的路径<br />
        MaxConnPerIP 3 #限制的线程数<br />
        NoIPLimit index.htm #对此文件不做限制<br />
    &lt;/Location&gt;<br />
&lt;/IfModule&gt;</p>
<p>在论坛的虚拟主机配置文件下面加上：</p>
<p>    BandwidthModule On  <br />
    ForceBandWidthModule On<br />
    Bandwidth all 10000 #限速10K<br />
    MinBandwidth all -1</p>
<p>测试了一下，一切正常，下载mp3的速度限制在10K一下，这样就再也不用担心大量的下载链接导致apache当机的问题了，当然以上方法不能阻止攻击。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.onecho.com/2009-06-05/488.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[转载]centos 5.0 编译安装apache 2.2.6+php5.2.5+mysql5.0.46+Z</title>
		<link>http://www.onecho.com/2008-10-13/403.html</link>
		<comments>http://www.onecho.com/2008-10-13/403.html#comments</comments>
		<pubDate>Mon, 13 Oct 2008 13:13:49 +0000</pubDate>
		<dc:creator>Kenami</dc:creator>
				<category><![CDATA[APACHE]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[centos]]></category>

		<guid isPermaLink="false">http://www.onecho.com/2008-10-13/403.html</guid>
		<description><![CDATA[V2.0 2007年2月12日 操作系统更新为centos 5.0 apache 更新为2.2.6版本， php更新为5.2.5,增加集成Suhosin补丁，mysql 更新为5.0.46, Zend Optimizer 更新为3.3.0。解决新平台下的一些问题。修正文字错误。]]></description>
			<content:encoded><![CDATA[<p>V2.0 2007年2月12日 操作系统更新为centos 5.0 apache 更新为2.2.6版本， php更新为5.2.5,增加集成Suhosin补丁，mysql 更新为5.0.46, Zend Optimizer 更新为3.3.0。解决新平台下的一些问题。修正文字错误。</p>
<p>v1.2 2007年2月12日 apache 更新为2.2.4版本，增加mod_ssl和openssl支持，增加apr和apr-util的编译， php更新为5.2.1,增加集成Suhosin补丁，mysql 更新为5.0.33, Zend Optimizer 更新为3.2.2，增加phpmyadmin。修改一些文字错误。</p>
<p>v1.0 2007年1月11日</p>
<p>先声明，我绝对是个Linux的菜鸟，以下的这些文字个人的安装笔记，是参考了网上许多高手的成功经验组合而成的，说实话我自己的东西不多 ：）我想把这些经验写下来，既可以对其他跟我一样摸索的兄弟一个经验，也可以防止以后自己都忘记了，嘿嘿。</p>
<p>所以如果某个大虾看到我借用了你的资源，请你不要生气。也欢迎大家进行指点。</p>
<h4>1、下载centos 5</h4>
<p>我是下载的DVD版本，大家也可以下载服务器CD安装版本，其实都差不多。大家可以到这儿下载，速度很快的。<br />
<a href="http://ftp.iasi.roedu.net/mirrors/centos.org/5/isos/i386/CentOS-5.0-i386-bin-DVD.iso" target="_blank"><span style="color: #0000ff;">http://ftp.iasi.roedu.net/mirrors/ce&#8230;86-bin-DVD.iso</span></a></p>
<p>当然也可以在windows下用BT或迅雷下载，速度也很不错的。</p>
<p>下载后当然就刻录成光盘。我建议你刻录DVD啦，如果是菜鸟，也可以在图形界面进行学习，不会这么抓不住头脑。<span id="more-403"></span></p>
<h4>2、（1）安装CentOS 5</h4>
<p>作为服务器，不安装不需要的组件，所以在选择组件的时候，除了选择FTP SERVER外取消所有组件的选择。也不要选web服务器。因为我们后面要手动编译安装。</p>
<p>系统约定RPM包和源码包存放位置</p>
<p>RPM包和源码包存放位置 /usr/local/src<br />
源码包编译安装位置(prefix) /usr/local/xxx<br />
脚本以及维护程序存放位置 /usr/local/sbin<br />
MySQL 数据库位置 /var/lib/mysql<br />
Apache 网站根目录 /home/www<br />
Apache 虚拟主机日志根目录 /data/logs/www<br />
yum RPM包信息文件 /etc/yum.list</p>
<h4>3、系统环境部署及调整</h4>
<p>（1）. 检查系统是否正常<br />
# more /var/log/messages //检查有无系统内核级错误信息<br />
# demesg //检查硬件设备是否有错误信息<br />
# ifconfig //检查网卡设置是否正确<br />
# ping <a href="http://www.163.com/" target="_blank"><span style="color: #0000ff;">www.163.com</span></a> // 检查网络是否正常</p>
<p>（2）. 关闭不需要的服务<br />
# export LANG=&#8217;en_US&#8217; //设置语言<br />
# setup //选择启动的服务<br />
进入system service 选项。<br />
以space 键选定所需服务。<br />
以下仅列出需要启动的服务，未列出的服务一律关闭：<br />
crond<br />
irqbalance 仅当服务器CPU为S.M.P架构或支持双核心、HT技术时，才需开启，否则关闭。<br />
microcode_ctl<br />
network<br />
vsftpd<br />
sshd<br />
syslog</p>
<p>（3）、修改/etc/yum.repos.d/CentOS-Base.repo，将镜象站点地址改为在中国的镜象站点地址。不然我们通过yum安装软件速度会极慢。修改如下：</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>保存。</p>
<p>（2）更新系统，我们使用yum,</p>
<p>然后执行：<br />
# yum upgrade<br />
建议更新所有列出的程序，rhel 5.X的稳定性还要继续努力呢。</p>
<p>（4）、定时校正服务器时间<br />
# yum install ntp<br />
# crontab -e<br />
0 23 * * * root /usr/sbin/ntpdate 210.72.145.44 &gt; /dev/null 2&gt;&amp;1</p>
<p>以上命令设置好后存盘。您的机器将在每天的23:00根据中国国家授时中心的NTP服务器时间自动校准时间。</p>
<p>(5). 对TCP/IP网络参数进行调整，加强抗SYN Flood能力<br />
# echo &#8216;net.ipv4.tcp_syncookies = 1&#8242; &gt;&gt; /etc/sysctl.conf //将net.ipv4.tcp_syncookies = 1写入sysctl.conf 文件<br />
# sysctl -p //查看</p>
<p>（6）、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 />
然后保存，service vsftpd start就可以了。</p>
<p>这时应当添加用户，因为root默认不能通过FTP方式登录。</p>
<p># adduser username<br />
# passwd userpassword</p>
<p>这样对于我们上传一些文件到系统中很方便。</p>
<h4>4. 重新启动系统</h4>
<p># init 6</p>
<h4>5. 使用 yum 程序安装所需开发包（以下为标准的 RPM 包名称）</h4>
<p># yum install gcc gcc-c++ gcc-g77 flex bison autoconf automake bzip2-devel zlib-devel ncurses-devel libjpeg-devel libpng-devel libtiff-devel freetype-devel pam-devel openssl-devel libxml2-devel</p>
<p>#这里我们将编译GD所必须的一些小软件比如libpng,libtiff,freetype,libjpeg,等先用RPM的方式一并安装好，避免手动编译浪费时间，同时也能避免很多错误，这几个小软件的编译很麻烦。这几个小软件编译错误了，GD当然安装不了，php5的编译当然也没戏了。所以我们抓大放小，对这些小牛鬼蛇神采取快速简洁的方式进行安装。并且对服务器的性能也不能产生什么影响。<br />
另外libxml2系统已经默认安装了，所以我们不需要手工编译了，直接安装它的开发包就行了。</p>
<h4>6. 源码编译安装所需包 (Source)</h4>
<p>(1) GD2<br />
# cd /usr/local/src<br />
# wget <a href="http://www.boutell.com/gd/http/gd-2.0.34.tar.gz" target="_blank"><span style="color: #0000ff;">http://www.boutell.com/gd/http/gd-2.0.34.tar.gz</span></a><br />
# tar xzvf gd-2.0.34.tar.gz<br />
# cd gd-2.0.34<br />
# CHOST=&#8221;i686-pc-linux-gnu&#8221; CFLAGS=&#8221;-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer&#8221; CXXFLAGS=&#8221;-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -funroll-loops -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer&#8221; ./configure &#8211;prefix=/usr/local/gd2 &#8211;mandir=/usr/share/man //./configure 配置。</p>
<p># make //make 是用来编译的，它从 Makefile 中读取指令，然后编译。<br />
# make install //make install 是用来安装的，它也从 Makefile 中读取指令，安装到指定的位置。</p>
<p>(2) Apache 日志截断程序<br />
# cd /usr/local/src<br />
# wget <a href="http://cronolog.org/download/cronolog-1.6.2.tar.gz" target="_blank"><span style="color: #0000ff;">http://cronolog.org/download/cronolog-1.6.2.tar.gz</span></a><br />
# tar xzvf cronolog-1.6.2.tar.gz<br />
# cd cronolog-1.6.2<br />
# ./configure &#8211;prefix=/usr/local/cronolog<br />
# make<br />
# make install</p>
<h4>7、编译mysql 5.0.46</h4>
<p>mysql 5.0.46是企业版本，貌似双数版本都是企业版本了。个人觉得代码质量要比社区版本要好一些。大家可以下载，免费使用。并不需要向mysql公司交钱。</p>
<p>cd /usr/local/src<br />
# wget <a href="http://mirror.provenscaling.com/mysql/enterprise/source/5.0/mysql-5.0.46.tar.gz" target="_blank"><span style="color: #0000ff;">http://mirror.provenscaling.com/mysq&#8230;-5.0.46.tar.gz</span></a><br />
# tar xzvf mysql-5.0.46.tar.gz<br />
# cd mysql-5.0.46</p>
<p>修改mysql 客户端最大连接数， 默认的只有100,远远达不到我们的要求。</p>
<p># vi sql/mysqld.cc</p>
<p>搜索找到下面一行：<br />
{&#8221;max_connections&#8221;, OPT_MAX_CONNECTIONS,<br />
&#8220;The number of simultaneous clients allowed.&#8221;, (gptr*) &amp;max_connections,<br />
(gptr*) &amp;max_connections, 0, GET_ULONG, REQUIRED_ARG, 100, 1, 16384, 0, 1,<br />
0},</p>
<p>将其中的100改为1500, 当然小点也可以，根据你的需要来，不建议改的太大。</p>
<p>{&#8221;max_connections&#8221;, OPT_MAX_CONNECTIONS,<br />
&#8220;The number of simultaneous clients allowed.&#8221;, (gptr*) &amp;max_connections,<br />
(gptr*) &amp;max_connections, 0, GET_ULONG, REQUIRED_ARG, 1500, 1, 16384, 0, 1,<br />
0},</p>
<p>保存。</p>
<p># CHOST=&#8221;i686-pc-linux-gnu&#8221; CFLAGS=&#8221;-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer&#8221; CXXFLAGS=&#8221;-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -funroll-loops -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer&#8221; ./configure &#8211;prefix=/usr/local/mysql &#8211;localstatedir=/var/lib/mysql &#8211;with-comment=Source &#8211;with-server-suffix=-enterprise-gpl &#8211;with-mysqld-user=mysql &#8211;without-debug &#8211;with-big-tables &#8211;with-charset=utf8 &#8211;with-collation=utf8_general_ci &#8211;with-extra-charsets=all &#8211;with-pthread &#8211;enable-static &#8211;enable-thread-safe-client &#8211;with-client-ldflags=-all-static &#8211;with-mysqld-ldflags=-all-static &#8211;enable-assembler &#8211;without-innodb &#8211;without-ndb-debug &#8211;without-isam</p>
<p>配置成功会提示：</p>
<p>MySQL has a Web site at <a href="http://www.mysql.com/" target="_blank"><span style="color: #0000ff;">http://www.mysql.com/</span></a> which carries details on the<br />
latest release, upcoming features, and other information to make your<br />
work or play with MySQL more productive. There you can also find<br />
information about mailing lists for MySQL discussion.</p>
<p>Remember to check the platform specific part of the reference manual for<br />
hints about installing MySQL on your platform. Also have a look at the<br />
files in the Docs directory.</p>
<p>Thank you for choosing MySQL!</p>
<p>// 注意 ，CHOST=&#8221;i686-pc-linux-gnu&#8221; CFLAGS=&#8221;-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer&#8221; CXXFLAGS=&#8221;-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -funroll-loops -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer&#8221; 这个环境参数只针对intel P4 芯片，如果你的CPU是AMD的，注意不能使用。请查看相应的编译优化参数。否则程序会无法编译，即使编译成功也无法运行，嘿嘿。</p>
<p>关于其他CPU的优化请看我的BLOG的一篇转贴：<br />
<a href="http://www.cnprint.org/bbs/blogs/1/blog43.html" target="_blank"><span style="color: #800080;">http://www.cnprint.org/bbs/blogs/1/blog43.html</span></a></p>
<p># make<br />
编译的时间可能会比较长，毕竟优化的比较厉害。</p>
<p># make install</p>
<p>编译安装完成后执行后续操作：<br />
# useradd mysql //添加 mysql 用户<br />
# cd /usr/local/mysql<br />
# bin/mysql_install_db &#8211;user=mysql<br />
# chown -R root:mysql . //设置权限，注意后面有一个 &#8220;.&#8221;<br />
# chown -R mysql /var/lib/mysql //设置 mysql 目录权限<br />
# chgrp -R mysql . //注意后面有一个 &#8220;.&#8221;<br />
# cp share/mysql/my-medium.cnf /etc/my.cnf<br />
# cp share/mysql/mysql.server /etc/rc.d/init.d/mysqld //开机自动启动 mysql。<br />
# chmod 755 /etc/rc.d/init.d/mysqld<br />
# chkconfig &#8211;add mysqld<br />
# /etc/rc.d/init.d/mysqld start //启动 MySQL<br />
# bin/mysqladmin -u root password &#8220;password_for_root&#8221;<br />
# service mysqld stop //关闭 MySQL</p>
<h4>8. 编译安装 Apache</h4>
<p># cd /usr/local/src<br />
# wget <a href="http://www.ip97.com/apache.org/httpd/httpd-2.2.6.tar.gz" target="_blank"><span style="color: #0000ff;">http://www.ip97.com/apache.org/httpd/httpd-2.2.6.tar.gz</span></a><br />
# tar zxvf httpd-2.2.6.tar.gz<br />
# cd httpd-2.2.6</p>
<p>依次安装apr和apr-util</p>
<p># cd srclib/apr<br />
# CHOST=&#8221;i686-pc-linux-gnu&#8221; CFLAGS=&#8221;-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer&#8221; CXXFLAGS=&#8221;-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -funroll-loops -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer&#8221; ./configure &#8211;prefix=/usr/local/apr &#8211;enable-threads &#8211;enable-other-child &#8211;enable-static<br />
# make &amp;&amp; make install</p>
<p># cd ../apr-util<br />
# CHOST=&#8221;i686-pc-linux-gnu&#8221; CFLAGS=&#8221;-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer&#8221; CXXFLAGS=&#8221;-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -funroll-loops -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer&#8221; ./configure &#8211;prefix=/usr/local/apr-util &#8211;with-apr=/usr/local/apr/ &#8211;with-mysql=/usr/local/mysql<br />
# make &amp;&amp; make install</p>
<p>cd /usr/local/src/httpd-2.2.6<br />
# CHOST=&#8221;i686-pc-linux-gnu&#8221; CFLAGS=&#8221;-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer&#8221; CXXFLAGS=&#8221;-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -funroll-loops -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer&#8221; ./configure &#8211;prefix=/usr/local/apache2 &#8211;enable-mods-shared=all &#8211;with-mysql=/usr/local/mysql &#8211;enable-cache &#8211;enable-file-cache &#8211;enable-mem-cache &#8211;enable-disk-cache &#8211;enable-static-support &#8211;enable-static-htpasswd &#8211;enable-static-htdigest &#8211;enable-static-rotatelogs &#8211;enable-static-logresolve &#8211;enable-static-htdbm &#8211;enable-static-ab &#8211;enable-static-checkgid &#8211;disable-cgid &#8211;disable-cgi &#8211;with-apr=/usr/local/apr/ &#8211;with-apr-util=/usr/local/apr-util/ &#8211;enable-ssl &#8211;with-ssl=/usr/include/openssl</p>
<p># make<br />
# make install<br />
# echo &#8216;/usr/local/apache2/bin/apachectl start &#8216; &gt;&gt; /etc/rc.local //将 apachectl 的调用加入到你的系统启动文件中。</p>
<p>注解：<br />
./configure //配置源代码树<br />
&#8211;prefix=/usr/local/apache2 //体系无关文件的顶级安装目录PREFIX ，也就Apache的安装目录。<br />
&#8211;enable-module=so //打开 so 模块，so 模块是用来提 DSO 支持的 apache 核心模块<br />
&#8211;enable-mods-shared=all //编译全部的模板，对于不需要我们可以在httpd.conf去掉。<br />
&#8211;enable-cache //支持缓存<br />
&#8211;enable-file-cache //支持文件缓存<br />
&#8211;enable-mem-cache //支持记忆缓存<br />
&#8211;enable-disk-cache //支持磁盘缓存<br />
&#8211;enable-static-support //支持静态连接(默认为动态连接)<br />
&#8211;enable-static-htpasswd //使用静态连接编译 htpasswd &#8211; 管理用于基本认证的用户文件<br />
&#8211;enable-static-htdigest //使用静态连接编译 htdigest &#8211; 管理用于摘要认证的用户文件<br />
&#8211;enable-static-rotatelogs //使用静态连接编译 rotatelogs &#8211; 滚动 Apache 日志的管道日志程序<br />
&#8211;enable-static-logresolve //使用静态连接编译 logresolve &#8211; 解析 Apache 日志中的IP地址为主机名<br />
&#8211;enable-static-htdbm //使用静态连接编译 htdbm &#8211; 操作 DBM 密码数据库<br />
&#8211;enable-static-ab //使用静态连接编译 ab &#8211; Apache HTTP 服务器性能测试工具<br />
&#8211;enable-static-checkgid //使用静态连接编译 checkgid<br />
&#8211;disable-cgid //禁止用一个外部 CGI 守护进程执行CGI脚本<br />
&#8211;disable-cgi //禁止编译 CGI 版本的 PHP<br />
&#8211;enable-ssl // 编译 ssl模块。</p>
<p>我们不再使用worker模式编译apache，worker模式和php貌似有一些不协调不稳定之处。所以使用了默认的perfork模式。</p>
<p>将apache设置成开机自启动:</p>
<p>在/etc/rc.d/rc.local文件中加入一行<br />
/usr/local/apache2/bin/apachectl start<br />
这样每次重新启动系统以后,apache也会随系统一起启动.</p>
<p>或者<br />
# cp /usr/local/apache2/bin/apachectl /etc/rc.d/init.d/httpd<br />
然后 vi /etc/rc.d/init.d/httpd 添加(#!/bin/sh下面)<br />
# chkconfig: 2345 10 90<br />
# description: Activates/Deactivates Apache Web Server<br />
最后，运行chkconfig把Apache添加到系统的启动服务组里面：<br />
# chkconfig &#8211;add httpd<br />
# chkconfig httpd on</p>
<h4>9、编译php 5.2.5-devel。</h4>
<p>php 5.2.4有点小BUG，无法在centos 5上正常编译，官方已经在php5.2.5中修复了。所以我们使用php 5.2.5进行编译。<br />
Suhosin是php增强型安全补丁，可以编译到静态内核中，也可以编译成php动态扩展。我个人强烈你建议安装成静态内核。Suhosin已经进入freebsd和gentoo的ports。下面的以下先说静态安装步骤。当然你也可以在安装php后将它编译成php的动态扩展。</p>
<p># cd /usr/local/src<br />
# wget <a href="http://cn.php.net/get/php-5.2.5.tar.gz/from/this/mirror" target="_blank"><span style="color: #0000ff;">http://cn.php.net/get/php-5.2.5.tar.gz/from/this/mirror</span></a><br />
wget <a href="http://www.hardened-php.net/suhosin/_media/suhosin-patch-5.2.5-0.9.6.2.patch.gz" target="_blank"><span style="color: #0000ff;">http://www.hardened-php.net/suhosin/&#8230;9.6.2.patch.gz</span></a><br />
# tar zxvf php-5.2.5.tar.gz<br />
# gunzip suhosin-patch-5.2.1-0.9.6.2.patch.gz<br />
# cd php-5.2.5</p>
<p># CHOST=&#8221;i686-pc-linux-gnu&#8221; CFLAGS=&#8221;-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer&#8221; CXXFLAGS=&#8221;-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -funroll-loops -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer&#8221; ./configure &#8211;prefix=/usr/local/php &#8211;with-apxs2=/usr/local/apache2/bin/apxs &#8211;with-pear=/usr/share/php &#8211;with-zlib-dir &#8211;with-bz2 &#8211;with-libxml-dir=/usr &#8211;with-gd=/usr/local/gd2 &#8211;enable-gd-native-ttf &#8211;enable-gd-jis-conv &#8211;with-freetype-dir &#8211;with-jpeg-dir &#8211;with-png-dir &#8211;with-ttf=shared,/usr &#8211;enable-mbstring &#8211;with-mysql=/usr/local/mysql &#8211;with-mysqli=/usr/local/mysql/bin/mysql_config &#8211;with-config-file-path=/etc &#8211;with-iconv &#8211;disable-ipv6 &#8211;enable-static &#8211;enable-maintainer-zts &#8211;enable-zend-multibyte &#8211;enable-inline-optimization &#8211;enable-zend-multibyte &#8211;enable-sockets &#8211;enable-soap &#8211;with-openssl</p>
<p>配置成功会提示：</p>
<p>+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+<br />
| License: |<br />
| This software is subject to the PHP License, available in this |<br />
| distribution in the file LICENSE. By continuing this installation |<br />
| process, you are bound by the terms of this license agreement. |<br />
| If you do not agree with the terms of this license, you must abort |<br />
| the installation process at this point. |<br />
+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+</p>
<p>Thank you for using PHP.</p>
<p># make</p>
<p># make install</p>
<p># cp php.ini-recommended /etc/php.ini</p>
<p>在这里也顺便说一下将suhosin安装成为php的动态扩展的方法。毕竟网上根本不见它的中文安装教程。</p>
<p>虽然我个人不推荐这种方式。</p>
<p>wget <a href="http://www.hardened-php.net/suhosin/_media/suhosin-0.9.16.tgz" target="_blank"><span style="color: #0000ff;">http://www.hardened-php.net/suhosin/&#8230;sin-0.9.16.tgz</span></a><br />
tar zxvf suhosin-0.9.16.tgz<br />
cd suhosin-0.9.16<br />
./configure &#8211;with-php-config=/usr/local/php/bin/php-config<br />
make<br />
make install</p>
<p>会提示编译的模块存在的目录，记住它。<br />
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/</p>
<p>然后在php.ini中增加一行下列语句。<br />
extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/suhosin.so</p>
<h4>10 、整合apache 与php</h4>
<p># vi /usr/local/apache2/conf/httpd.conf<br />
在最后一行加上：<br />
AddType application/x-httpd-php .php</p>
<p>查找：(设置 WEB 默认文件)<br />
DirectoryIndex index.html<br />
替换为：<br />
DirectoryIndex index.php index.html index.htm //在 WEB 目录不到默认文件，httpd 就会执行 /var/www/error/noindex.html</p>
<p>找到这一段：<br />
# AllowOverride controls what directives may be placed in .htaccess files.<br />
# It can be &#8220;All&#8221;, &#8220;None&#8221;, or any combination of the keywords:<br />
# Options FileInfo AuthConfig Limit<br />
#<br />
AllowOverride none</p>
<p>更改为AllowOverride all<br />
允许apache rewrite</p>
<p># 监听443端口,支持https连接<br />
取消注释 httpd.conf 中的 Include conf/extra/httpd-ssl.conf</p>
<p>保存httpd.conf，退出。</p>
<p># /usr/local/apache2/bin/apachectl restart //重启 Apache</p>
<p>这时会出现错误：</p>
<p>/usr/local/apache2/bin/apachectl start<br />
httpd: Syntax error on line 107 of /usr/local/apache2/conf/httpd.conf: Cannot load /usr/local/apache2/modules/libphp5.so into server: /usr/local/apache2/modules/libphp5.so: cannot restore segment prot after reloc: Permission denied</p>
<p>不急，我们慢慢解决。</p>
<p>先重启下机器：<br />
reboot<br />
这个Permission denied问题，在centos 5下面一般是Selinux引起的，作为生产用服务器，我建议你千万别草率地关掉Selinux一了百了。就像家里的防盗网，阻碍了你的猫自由进出窗户，你不能为了猫方便，就把防盗网简单拆除是同样的道理。我看见网上许多人建议把Selinux简单关闭来解决这个问题，很不以为然。<br />
我们可以这样操作：</p>
<p># audit2allow -d<br />
allow initrc_t usr_t:file execmod;<br />
allow mount_t default_t:file execute;</p>
<p># cd /etc/selinux/targeted/modules/<br />
# audit2allow -M local -d</p>
<p>屏幕产生如下提示：</p>
<p>产生类型强制文件：local.te<br />
正在编译策略<br />
checkmodule -M -m -o local.mod local.te<br />
semodule_package -o local.pp -m local.mod</p>
<p>********************重要 ***********************</p>
<p>为了在内核中加载这个新创建的策略软件包，<br />
您需要执行</p>
<p>semodule -i local.pp</p>
<p>我们运行</p>
<p># semodule -i local.pp</p>
<p>这样就让Selinux加载了新的规则。</p>
<p>更详细的内容请看我在BLOG上的转贴：</p>
<p><a href="http://www.cnprint.org/bbs/blogs/1/blog48.html" target="_blank"><span style="color: #0000ff;">http://www.cnprint.org/bbs/blogs/1/blog48.html</span></a></p>
<p>reboot</p>
<p>哈哈，apache不会再报错了吧？<br />
这样我保留了selinux的功能，同时apache也能正常运行。</p>
<h4>11. 查看确认 L.A.M.P 环境信息</h4>
<p>vi /usr/local/apache2/htdocs/phpinfo.php</p>
<p>新增加下面一行，并保存。</p>
<p>&lt;?php phpinfo(); ?&gt;</p>
<p># chmod 755 /usr/local/apache2/htdocs/phpinfo.php</p>
<p>用浏览器打开 <a href="http://127.0.0.1/phpinfo.php" target="_blank"><span style="color: #0000ff;">http://127.0.0.1/phpinfo.php</span></a></p>
<p># echo &#8216; &#8216; &gt; /usr/local/apache2/htdocs/testdb.php<br />
# chmod 755 /usr/local/apache2/htdocs/testdb.php<br />
# service mysqld start<br />
用浏览器打开 <a href="http://127.0.0.1/testdb.php" target="_blank"><span style="color: #0000ff;">http://127.0.0.1/testdb.php</span></a><br />
检查 phpinfo 中的各项信息是否正确。</p>
<h4>12、设置SSL并创建自己的CA</h4>
<p># cd /usr/share/ssl/misc</p>
<p># ./CA -newca</p>
<p>屏幕上出现如下的提示:CA certificate filename (or enter to create)</p>
<p>这是要求输入要创建的CA的证书文件名, 可以直接回车或输入证书文件名。</p>
<p>Making CA certificate &#8230;<br />
Generating a 1024 bit RSA private key<br />
&#8230;&#8230;&#8230;++++++<br />
&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..++++++<br />
writing new private key to &#8216;./demoCA/private/./cakey.pem&#8217;<br />
Enter PEM pass phrase:</p>
<p>Verifying password &#8211; Enter PEM pass phrase:-</p>
<p>此时要求输入和验证CA的私钥口令、国家代码（中国是CN）、省份、城市或地区、组织或企业名称、部门名称、CA的名称或服务器的主机名称、管理员电子邮件地址。</p>
<p>至此,在当前目录下生成了demoCA的目录,CA的证书就在该目录下,文件名为cacert.pem</p>
<p>生成服务器的证书请求</p>
<p># ./CA -newreq</p>
<p>屏幕上出现如下的提示:</p>
<p>Generating a 1024 bit RSA private key<br />
&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..++++++<br />
&#8230;..++++++<br />
writing new private key to &#8216;newreq.pem&#8217;<br />
Enter PEM pass phrase:<br />
Verifying password &#8211; Enter PEM pass phrase:</p>
<p>此时要求输入和验证服务器的私钥口令、国家代码（中国是CN）、省份、城市或地区、组织或企业名称、部门名称、CA的名称或服务器的主机名称、管理员电子邮件地址。</p>
<p>Please enter the following &#8216;extra&#8217; attributes</p>
<p>to be sent with your certificaterequest</p>
<p>A challenge password []:</p>
<p>An optional company name []:</p>
<p>.Request (and private key) is in newreq.pem</p>
<p>这是要求输入服务器的相关信息。</p>
<p>此时,在当前目录下生成了一个名为newreq.pem的文件,包含了要生成服务器数字证书的请求。</p>
<p>签署证书</p>
<p># ./CA -sign</p>
<p>屏幕上出现如下的提示:</p>
<p>Using configuration from /usr/share/ssl/openssl.cnf</p>
<p>Enter PEM pass phrase:</p>
<p>此时一样需要输入CA的私钥口令、国家代码（中国是CN）、省份、城市或地区、组织或企业名称、部门名称、CA的名称或服务器的主机名称、管理员电子邮件地址。</p>
<p>Certificate is to be certified until Nov 19 13:46:19 2002 GMT (365 days)</p>
<p>Sign the certificate? [y/n]:y</p>
<p>这时显示证书请求文件中的各项信息,并询问是否要签署证书，回答y，进行签署。</p>
<p>1 out of 1 certificate requests certified, commit? [y/n]y</p>
<p>回答y,会显示已经签署的证书的信息,并在当前目录下生成服务器的证书文件newcert.pem。</p>
<p># mkdir /usr/local/apache2/conf/ssl.crt/<br />
# mkdir /usr/local/apache2/conf/ssl.key/<br />
# cp newcert.pem /usr/local/apache2/conf/ssl.crt/server.pem<br />
# cp newreq.pem /usr/local/apache2/conf/ssl.key/server.pem</p>
<p>更改服务器的证书文件的相关配置<br />
# vi /usr/local/apache2/conf/extra/httpd-ssl.conf</p>
<p>查找并修改</p>
<p># Server Certificate:<br />
# Point SSLCertificateFile at a PEM encoded certificate. If<br />
# the certificate is encrypted, then you will be prompted for a<br />
# pass phrase. Note that a kill -HUP will prompt again. Keep<br />
# in mind that if you have both an RSA and a DSA certificate you<br />
# can configure both in parallel (to also allow the use of DSA<br />
# ciphers, etc.)<br />
SSLCertificateFile /usr/local/apache2/conf/ssl.crt/server.pem<br />
#SSLCertificateFile /usr/local/apache2/conf/server-dsa.crt</p>
<p># Server Private Key:<br />
# If the key is not combined with the certificate, use this<br />
# directive to point at the key file. Keep in mind that if<br />
# you&#8217;ve both a RSA and a DSA private key you can configure<br />
# both in parallel (to also allow the use of DSA ciphers, etc.)<br />
SSLCertificateKeyFile /usr/local/apache2/conf/ssl.key/server.pem<br />
#SSLCertificateKeyFile /usr/local/apache2/conf/server-dsa.key</p>
<p>示例文件</p>
<p>在SSL的根目录中生成一个index.html,它是如下所示:</p>
<p>＜html＞</p>
<p>这是SSL示例!</p>
<p>＜/html＞</p>
<p>测试</p>
<p>假如Web服务器的DNS名称是<a href="http://www.cnprint.org/" target="_blank"><span style="color: #0000ff;">www.cnprint.org</span></a>.</p>
<p>在浏览器的URL地址栏里输入 <a href="http://www.cnprint.org/ï¼Œæµè§ˆå™¨ä¾¿ä¼šæ˜¾ç¤ºAPACHEå®‰è£…æ—¶ç¡®çœçš„Test" target="_blank"><span style="color: #0000ff;">http://www.cnprint.org/，浏览器便会显示APACHE安装时确省的Test</span></a> Page.</p>
<p>在浏览器的URL地址栏里输入 <a href="https://www.cnprint.org/ï¼Œæ³¨æ„:æ˜¯" target="_blank"><span style="color: #0000ff;">https://www.cnprint.org/，注意:是</span></a> https 而不是http !</p>
<p>浏览器会提示站点已经采用了SSL进行数据的加密传输.由于我们的CA证书不是浏览器缺省的信任的根证书,所以,浏览器会说无法确认服务器的证书可信。暂时不管,一直NEXT,最后,浏览器会显示:这是SSL示例!</p>
<p>可以把CA的证书放在非SSL的站点上,让浏览器下载并安装CA证书,并将其设置成可信任的根证书,便可解决上面的问题.8 解除HTTPD起动时的口令输入。</p>
<p>由于安全的原因,Web服务器的私钥是口令加密了的，每次重新起动HTTPD或Linux时,都会要求输入Web服务器的私钥的口令。</p>
<p>如果要解除HTTPD起动时的口令输入,可以这样:</p>
<p># cd /usr/local/apache2/conf/ssl.key/<br />
# cp server.pem server.pem.org<br />
# openssl rsa -in server.pem.org -out server.pem<br />
# chmod 400 server.pem</p>
<p>另外在网上看到一个方法，我没有试。有兴趣的可以试下。</p>
<p>创建SSL密码自动应答文件，否则每次Apache启动的时候，都会要求你输入SSL的密码.<br />
创建 /usr/local/apache2/conf/ssl.key/sendsslpwd ,内容如下.<br />
#!/bin/bash<br />
SSLpasswd=&#8221;YOUR PASSPHRASE&#8221;<br />
echo $SSLpasswd<br />
chmod 755 /usr/local/apache2/conf/ssl.key/sendsslpwd</p>
<p>此时，Web服务器的私钥已经没有口令加密,一定要确保server.pem文件除root外,任何用户均无权读取它。</p>
<h4>13、安装 Zend Optimizer</h4>
<p># cd /usr/local/src<br />
# wget <a href="http://downloads.zend.com/optimizer/3.3.0/ZendOptimizer-3.3.0-linux-glibc21-i386.tar.gz" target="_blank"><span style="color: #0000ff;">http://downloads.zend.com/optimizer/&#8230;21-i386.tar.gz</span></a><br />
# tar xzvf ZendOptimizer-3.3.0-linux-glibc21-i386.tar.gz<br />
# ./ZendOptimizer-3.3.0-linux-glibc21-i386/install.sh<br />
按照它的提示一步步进行就行了。<br />
总之一句话。如果你的服务器环境不需要ZendOptimizer，那么能不安就不安装这个。避免和eaccelerator冲突。</p>
<h4>14、安装eaccelerator // eaccelerator是php的加速软件，使用后php的执行效率会有较大幅度的提升。</h4>
<p>目前eaccelerator 0.9.5.2已经和ZendOptimizer-3.3.0能够基本上兼容啦。不过我个人觉得，ZendOptimizer-3.3.0没有加速的功能，反而使php运行变慢，只是起到了运行zend加密文件的作用而已。闲话不多说了，大家有兴趣的，可以去google下。</p>
<p># cd /usr/local/src<br />
# wget <a href="http://bart.eaccelerator.net/source/0.9.5.2/eaccelerator-0.9.5.2.tar.bz2" target="_blank"><span style="color: #0000ff;">http://bart.eaccelerator.net/source/&#8230;.9.5.2.tar.bz2</span></a><br />
# tar -jxvf eaccelerator-0.9.5.2.tar.bz2<br />
# cd eaccelerator-0.9.5.2</p>
<p>export PHP_PREFIX=&#8221;/usr/local/php&#8221;<br />
$PHP_PREFIX/bin/phpize //指定一下php的目录</p>
<p># ./configure &#8211;enable-eaccelerator=shared &#8211;with-php-config=$PHP_PREFIX/bin/php-config // 设置</p>
<p># make &amp; make install</p>
<p>编译安装后我们会看到屏幕提示的eaccelerator.so所在的目录，比如我得到的是/usr/local/php/lib/php/extensions/no-debug-zts-20060613/eaccelerator.so，记住这个路径，待会要用到。</p>
<p>修改php.ini（安装完zend之后，php.ini存放于/usr/local/Zend/etc）<br />
在文件最后，zend之前，注意，这部分内容务必放在zend之前，不然可能会出现不可预期的服务器问题。添加下列信息：</p>
<p>[eaccelerator]<br />
extension=&#8221;/usr/local/php/lib/php/extensions/no-debug-zts-20060613/eaccelerator.so&#8221;<br />
eaccelerator.shm_size=&#8221;32&#8243;<br />
eaccelerator.cache_dir=&#8221;/tmp/eaccelerator&#8221;<br />
eaccelerator.enable=&#8221;1&#8243;<br />
eaccelerator.optimizer=&#8221;1&#8243;<br />
eaccelerator.check_mtime=&#8221;1&#8243;<br />
eaccelerator.debug=&#8221;0&#8243;<br />
eaccelerator.filter=&#8221;"<br />
eaccelerator.shm_max=&#8221;0&#8243;<br />
eaccelerator.shm_ttl=&#8221;0&#8243;<br />
eaccelerator.shm_prune_period=&#8221;0&#8243;<br />
eaccelerator.shm_only=&#8221;0&#8243;<br />
eaccelerator.compress=&#8221;1&#8243;<br />
eaccelerator.compress_level=&#8221;9&#8243;</p>
<p>解释:<br />
zend_extension 是安装完程序自动指示给我们的<br />
eaccelerator.shm_size=&#8221;32&#8243; 缓存大小单位MB<br />
eaccelerator.cache_dir=&#8221;/tmp/eaccelerator&#8221; 缓存路径</p>
<p># mkdir /tmp/eaccelerator // 建立目录<br />
# chmod 0777 /tmp/eaccelerator // 修改目录属性</p>
<p>最后重新启动apachectl</p>
<p>重启apache，phpinfo显示：<br />
This program makes use of the Zend Scripting Language Engine:<br />
Zend Engine v2.2.0, Copyright (c) 1998-2006 Zend Technologies<br />
with eAccelerator v0.9.5.2, Copyright (c) 2004-2006 eAccelerator, by eAccelerator<br />
with Zend Extension Manager v1.0.11, Copyright (c) 2003-2006, by Zend Technologies<br />
with Zend Optimizer v3.3.0, Copyright (c) 1998-2006, by Zend Technologies</p>
<p>也会有eAccelerator的具体信息。</p>
<h4>15、安装phpmyadmin，管理mysql数据库</h4>
<p># cd /usr/local/apache2/htdocs/<br />
# wget <a href="http://nchc.dl.sourceforge.net/sourceforge/phpmyadmin/phpMyAdmin-2.11.1-all-languages-utf-8-only.tar.gz" target="_blank"><span style="color: #0000ff;">http://nchc.dl.sourceforge.net/sourc&#8230;-8-only.tar.gz</span></a></p>
<p># tar zxvf phpMyAdmin-2.11.1-all-languages-utf-8-only.tar.gz<br />
# mv phpMyAdmin-2.11.1-all-languages-utf-8-only phpmyadmin</p>
<p># cd phpmyadmin/libraries</p>
<p>修改配置文件<br />
# vi config.default.php</p>
<p>找到这几行进行修改：<br />
$cfg['Servers'][$i]['auth_type'] = &#8216;http&#8217;; // Authentication method (valid choices: config, http, HTTP, signon or cookie)<br />
$cfg['Servers'][$i]['user'] = &#8216;root&#8217;; // MySQL user<br />
$cfg['Servers'][$i]['password'] = &#8216;PASSWORD&#8217;; // MySQL password (only needed</p>
<p>经过这几个步骤，我们一个比较安全的LAMP服务器就环境基本建立成功啦。感觉上也不是很难，是吧？</p>
]]></content:encoded>
			<wfw:commentRss>http://www.onecho.com/2008-10-13/403.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Linux下，PHP5 的编译安装傻瓜步骤</title>
		<link>http://www.onecho.com/2008-09-11/247.html</link>
		<comments>http://www.onecho.com/2008-09-11/247.html#comments</comments>
		<pubDate>Thu, 11 Sep 2008 02:29:25 +0000</pubDate>
		<dc:creator>Kenami</dc:creator>
				<category><![CDATA[APACHE]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[php安装]]></category>
		<category><![CDATA[php编译]]></category>

		<guid isPermaLink="false">http://www.onecho.com/?p=247</guid>
		<description><![CDATA[很多人在安装php的时候都会遇到很多的问题，但是我想只要按照步骤一步一步的进行，仔细的查看输出结果，应该可以顺利的安装好PHP，也能体会到 linux命令行带来的乐趣，下面我们一起开始安装PHP5吧，后面我还会写一些linux简单的配置和apache的相关文章。]]></description>
			<content:encoded><![CDATA[<p>很多人在安装php的时候都会遇到很多的问题，但是我想只要按照步骤一步一步的进行，仔细的查看输出结果，应该可以顺利的安装好PHP，也能体会到linux命令行带来的乐趣，下面我们一起开始安装PHP5吧，后面我还会写一些linux简单的配置和apache的相关文章。</p>
<p>cd /usr/local/src</p>
<p>wget http://jp.php.net/get/php-5.2.5.tar.gz/from/this/mirror</p>
<p>rpm -qa | grep php<br />
rpm -e php-ldap-4.3.9-3.22.9 php-pear-4.3.9-3.22.9 php-4.3.9-3.22.9</p>
<p>#libcurl<br />
rpm -qa | grep curl<br />
rpm -e curl curl-devel</p>
<p>rpm -e curl-7.12.1-11.el4<br />
<span id="more-247"></span></p>
<p>cd /usr/local/src/<br />
wget http://curl.haxx.se/download/curl-7.16.4.tar.gz<br />
tar xvzf curl-7.16.4.tar.gz<br />
cd curl-7.16.4<br />
./configure<br />
make<br />
make test<br />
make install</p>
<p>yum install zlib-devel</p>
<p>#libpng<br />
#   &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
cd /usr/local/src/<br />
wget http://nchc.dl.sourceforge.net/sourceforge/libpng/libpng-1.2.19.tar.gz<br />
tar xvzf libpng-1.2.19.tar.gz<br />
cd libpng-1.2.19<br />
./configure<br />
cp scripts/makefile.linux ./makefile<br />
make<br />
make install<br />
#   &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>#libjpeg<br />
#   &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
cd /usr/local/src/<br />
wget http://www.ijg.org/files/jpegsrc.v6b.tar.gz<br />
tar xvzf jpegsrc.v6b.tar.gz<br />
cd jpeg-6b/<br />
./configure &#8211;enable-shared<br />
mkdir /usr/local/man/man1/<br />
make<br />
make install<br />
#   &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>#libgd<br />
#   &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
cd /usr/local/src/<br />
wget http://www.boutell.com/gd/http/gd-2.0.33.tar.gz<br />
tar xvzf gd-2.0.33.tar.gz<br />
cd gd-2.0.33<br />
./configure<br />
make<br />
make install<br />
#   &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>##</p>
<p># FreeType<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
#<br />
#   ・fontconfig-devel-2.2.3-7.i386.rpm<br />
#   ・freetype-devel-2.1.9-4.el4.i386.rpm<br />
#   xorg-x11-devel-6.8.2-1.EL.13.37.i386.rpm<br />
yum install xorg-x11-devel<br />
yum install xorg-x11</p>
<p>ln -s /usr/X11R6/lib/libX11.a /usr/lib</p>
<p>cd /usr/local/src/<br />
wget http://jaist.dl.sourceforge.net/sourceforge/freetype/freetype-1.3.1.tar.gz<br />
tar xvzf freetype-1.3.1.tar.gz<br />
cd freetype-1.3.1/test/</p>
<p>vi ftdump-newer-GCC.patch<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
&#8212; ftdump.c.original    2004-12-21 06:26:50.000000000 -0500<br />
+++ ftdump.c                    2004-12-21 06:57:27.000000000 -0500<br />
@@ -140,8 +140,14 @@<br />
old_memory += *var;<br />
}</p>
<p>-#define FOOTPRINT( field )  Save_Memory( &amp;memory_footprint.##field )<br />
-<br />
+#define FT_initial_overhead  memory_footprint.initial_overhead<br />
+#define FT_face_object       memory_footprint.face_object<br />
+#define FT_glyph_object      memory_footprint.glyph_object<br />
+#define FT_first_instance    memory_footprint.first_instance<br />
+#define FT_second_instance   memory_footprint.second_instance<br />
+<br />
+#define FOOTPRINT( field )  Save_Memory( &amp;FT_ ## field )<br />
+</p>
<p>static void<br />
Print_Mem( long  val, char*  string )<br />
@@ -152,10 +158,8 @@<br />
string );<br />
}</p>
<p>-#define PRINT_MEM( field, string ) \<br />
-          Print_Mem( memory_footprint.##field, string )<br />
-<br />
-<br />
+ #define PRINT_MEM( field, string )  Print_Mem( FT_ ## field, string )<br />
+<br />
/* Print the memory footprint */</p>
<p>void<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
patch &lt; ftdump-newer-GCC.patch<br />
#   http://www.linuxquestions.org/questions/showthread.php?t=174031</p>
<p>cd /usr/local/src/freetype-1.3.1<br />
./configure<br />
make<br />
make install</p>
<p>cd /usr/local/src/<br />
wget http://jaist.dl.sourceforge.net/sourceforge/freetype/freetype-2.3.5.tar.gz<br />
tar xvzf freetype-2.3.5.tar.gz<br />
cd freetype-2.3.5<br />
./configure<br />
make<br />
make install<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>## libxml2<br />
cd /usr/local/src/</p>
<p>wget http://ftp.gnome.org/pub/GNOME/sources/libxml2/2.6/libxml2-2.6.30.tar.gz</p>
<p>tar zxvf libxml2-2.6.30.tar.gz</p>
<p>cd libxml2-2.6.30<br />
./configure<br />
date<br />
#Tue Nov 27 10:25:03 JST 2007</p>
<p>make &amp;&amp; date<br />
#&#8230;<br />
#&#8230;<br />
#Tue Nov 27 10:25:03 JST 2007</p>
<p>make install<br />
ln -s /usr/local/include/libxml2/libxml /usr/local/include/libxml<br />
yum install mysql-devel</p>
<p>### php<br />
cd /usr/local/src/</p>
<p>tar zxvf php-5.2.5.tar.gz<br />
cd php-5.2.5</p>
<p># check path<br />
ls -l /usr/local/apache2/bin/apxs<br />
sleep 5<br />
$ rm configure<br />
$ ./buildconf &#8211;force</p>
<p>./configure &#8211;with-apxs2=/usr/local/apache2/bin/apxs \<br />
&#8211;includedir=/usr/local/include \<br />
&#8211;enable-force-cgi-redirect \<br />
&#8211;enable-mbstring \<br />
&#8211;enable-mbregex \<br />
&#8211;enable-shmop \<br />
&#8211;enable-exif \<br />
&#8211;with-gd=/usr/local/ \<br />
&#8211;with-jpeg-dir=/usr/local/lib/ \<br />
&#8211;with-png-dir=/usr/local/lib/ \<br />
&#8211;with-zlib-dir=/usr/ \<br />
&#8211;with-ttf \<br />
&#8211;with-freetype-dir=/usr/local/lib \<br />
&#8211;enable-gd-native-ttf \<br />
&#8211;enable-gd-jis-conv \<br />
&#8211;with-mysql=/usr/include/mysql/ \<br />
&#8211;enable-sockets \<br />
&#8211;enable-ftp \<br />
&#8211;with-curl=/usr/local/ \<br />
&#8211;with-xmlrpc \<br />
&#8211;enable-mailparse \<br />
&#8211;with-foobar<br />
make<br />
make test<br />
make install</p>
<p>vi httpd.conf<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
AddType application/x-httpd-php        .php<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>## php.ini-recommended<br />
vi /usr/local/lib/php.ini<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
short_open_tag = On</p>
<p>display_errors = On</p>
<p>post_max_size = 64M</p>
<p>upload_max_filesize = 50M</p>
<p>mbstring.language = Japanese<br />
mbstring.internal_encoding = UTF-8</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>pear channel-update pear.php.net</p>
<p>pear install Net_SMTP<br />
pear install Auth_SASL<br />
pear install Mail</p>
<p>pear install XML_Parser<br />
pear install XML_RPC</p>
<p>pear list<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
Package          Version State<br />
Archive_Tar      1.3.2   stable<br />
Auth_SASL        1.0.2   stable<br />
Console_Getopt   1.2.3   stable<br />
Mail             1.1.14  stable<br />
Net_SMTP         1.2.10  stable<br />
Net_Socket       1.0.8   stable<br />
PEAR             1.6.1   stable<br />
Structures_Graph 1.0.2   stable<br />
XML_Parser       1.2.8   stable<br />
XML_RPC          1.5.1   stable<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
]]></content:encoded>
			<wfw:commentRss>http://www.onecho.com/2008-09-11/247.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
