<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://jackxiang.com/post//</link>
<title><![CDATA[Apache用动态编译效率较高，MySQL则相反用静态编译效率。apache动态编译/静态编译区别 ]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Thu, 17 Feb 2011 02:10:04 +0000</pubDate> 
<guid>http://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	至于性能方面我没怎么关注， 官方说静态的比动态的在性能方面多5%左右。From:http://www.ha97.com/2612.html<br/><br/>我今天就以apache+mysql+php说一下静态编译和DSO动态编译的区别，我会分别拿apache1.3.27和apache2.0.46 <br/>说明，因为两个版本的编译命令是有所区别的。 <br/>系统和所需软件： <br/>Redhat9.0&nbsp;&nbsp;<br/>apache:1.3.27 和 2.0.46 <br/>php: 4.3.2 <br/>mysql：4.0.13 <br/>1。首先来安装mysql，这不是我们的重点，所以关于mysql的安装配置我就很快过去了 <br/>tar zvxf mysql-4.0.13.tar.gz <br/>cd mysql-4.0.13 <br/>./configure --prefix=/usr/local/mysql --sysconfdir=/etc --localstatedir=/var/lib/mysql &amp;&amp; <br/>make &amp;&amp; <br/>make install <br/>安装完成！ <br/>然后初始化数据库 <br/>/usr/local/mysql/bin/mysql_install_db <br/>设置权限： <br/>chown -R root /usr/local/mysql <br/>复制配置文件; <br/>cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf <br/>启动mysql： <br/>/use/local/mysql/bin/mysqld_safe --user=root &amp; <br/>修改密码：初始的root密码是空的 <br/>/usr/local/mysql/bin/mysqladmin -u root -p password 1234 <br/>enter password: <br/>把密码修改为1234，由于初始密码为空，所以enter password直接回车就行 <br/>测试一下新的密码： <br/>mysql -u root -p mysql <br/>enter password:1234 <br/>如果顺利的话就能进入mysql。 <br/>好了mysql就讲这么多，有什么问题也不要问我，我对mysql不是很熟悉。 <br/>好了下面是我们的重头戏，我将分别通过静态和动态DSO编译apache+php <br/>至于什么是静态，什么是DSO动态我这里就不多讲了，本人个人倾向大家用DSO动态编译。 <br/>首先是apache1.3.27+php4.3.2+mysql4.0.13的静态编译 <br/>apache第一次编译,并不要安装，因为php的编译需要apache至少已经编译过一次 <br/>tar zvxf apache_1.3.27.tar.gz <br/>cd apache_1.3.27 <br/>./configure --prefix=/usr/local/apache <br/>编译php <br/>tar zvxf php4.3.2.tar.gz <br/>cd php4.3.2 <br/>./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql &#92; <br/>--with-apache=../apache_1.3.27 &amp;&amp; <br/>make &amp;&amp; <br/>make install <br/>第二次编译安装apache: <br/>cd ../apache_1.3.27 <br/>./configure --prefi=/usr/local/apache &#92; <br/>--activate-module=src/modules/php4/libphp4.a &amp;&amp; <br/>make &amp;&amp; <br/>make install <br/>cp ../php4.3.2/php.ini.dist /usr/local/php/lib/php.ini <br/>修改/usr/local/apache/conf/httpd.conf <br/>查找&lt;IfModule mod_mime.c&gt;; <br/>在此范围添加 <br/>AddType application/x-httpd-php .php <br/>AddType application/x-httpd-php-source .phps <br/>注意：apache和php的源码包在同一个目录，--with-apache=../apache_1.3.27是指向源码解压的目录 <br/>ok!静态编译完成，大家只要启动一下服务器 <br/>/usr/local/apache/bin/apachectl start <br/>然后些个php测试页info.php:内容如下 <br/>&lt;?php <br/>phpinfo(); <br/>?&gt;; <br/>正常的话，应该能看到php的信息了，恭喜你静态编译成功！！！ <br/>我们再来讲讲DSO动态编译的方法： <br/>首先编译安装apache <br/>tar zvxf apache_1.3.27 <br/>cd apache_1.3.27 <br/>./configure --prefix=/usr/local/apache --enable-module=so &#92; <br/>--enable-module=rewrite --enable-shared=max &amp;&amp; <br/>make &amp;&amp; <br/>make install <br/>so模块用来提供DSO支持的apachehe核心模块，rewrite是地址重写的模块，如果不需要可以不编译 <br/>enable－shared＝max是指除了so以外的所有标准模块都编译成DSO模块。 <br/>然后编译php <br/>tar zvxf php4.3.2.tar.gz <br/>cd php4.3.2 <br/>./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql &#92; <br/>--with-apxs=/usr/local/apache/bin/apxs &amp;&amp; <br/>make &amp;&amp; <br/>make install <br/>然后修改httpd.conf，方法同静态编译的方法 <br/>OK，DSO动态编译就完成了，大家应该看出明堂来了吧，中间有什么区别应该看的很清楚了吧！！！ <br/>接下来我们讲apache2.0.46+php4.3.2的编译方法，我这里只讲DSO动态编译，静态编译实在没有时间测试了， <br/>留给大家自己去试了。 <br/>一样现编译安装apache <br/>tar zvxf httpd-2.0.46.tar.gz <br/>cd httpd-2.0.46 <br/>./configure --prefix=/usr/local/apache2 --enable-so &#92; <br/>--enable-mods-shared=most &amp;&amp; <br/>make &amp;&amp; <br/>make install <br/>大家注意了--enable-so相当与1.3.27的--enable-module=so，而--enable-mods-shared=most又等同与以前的 <br/>--enable-shared=max 这些区别大家要注意了，否则编译错了不要找我 <br/>然后还是编译PHP <br/>tar zvxf php4.3.2.tar.gz <br/>./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql &#92; <br/>--with-apxs2=/usr/local/apache2/bin/apxs &amp;&amp; <br/>make &amp;&amp; <br/>make install <br/>注意这里是apxs2！！！ <br/>修改httpd.conf与1.3.27也有所不同，大家寻找Add Type application/x-tar .tgz 在下面添加 <br/>AddType application/x-httpd-php .php <br/>AddType application/x-httpd-php-source .phps <br/>另外要显示中文的话， <br/>修改: <br/>AddDefaultCharset gb2312 <br/>启动一下apache <br/>/usr/local/apache2/bin/apachectl start <br/>用那个info.php测试一下，应该不会有多大问题哦！！！ <br/>好了写了这么多，希望对大家有所帮助！！！<br/><br/>来源：http://www.chinaunix.net/jh/13/118899.html<br/><br/><br/><br/><br/><br/>这个哥们的动静态编译的文章还不错，转了，URL：<br/>http://huagelinux.blog.163.com/blog/static/87337083201022535916208/<br/><br/>以前编译apache的时候<br/>都是google搜索到的直接拿来用<br/><br/>这次自己编译mod_rewrite和ssl遇到了问题<br/>又不知道问题出在哪里<br/>一个是mod_rewrite模块没有起作用<br/>一个是以ssl启动apache的时候报告如下错误：<br/>apachectl startssl<br/>Syntax error on line 246 of /usr/local/apache2/conf/httpd.conf:<br/>Cannot load /usr/local/apache2/modules/mod_ssl.so into server: /usr/local/apache2/modules/mod_ssl.so: undefined symbol: X509_free<br/><br/>后来经过查找<br/>明白了问题出在哪里<br/><br/>当时我是这么编译apache的<br/><br/>./configure<br/>--prefix=/usr/local/apache2<br/>--enable-so<br/>--enable-mods-shared=most<br/>--enable-rewrite<br/>--enable-speling<br/>--enable-forward<br/>--enable-ssl<br/>--with-ssl=/usr/local/openssl<br/><br/><br/>而问题就出在–enable-so<br/>现在知道了–enable-so的意思是说<br/>让apache 核心装载DSO，但是不实际编译任何动态模块<br/>–enable-ModuleName的意思是说 编译并包含模块ModuleName<br/>而 –enable-ModuleName=shared 的意思是说将这个模块编译成动态的.<br/><br/>明白了这几个选项的意思,感觉就水落石出了<br/>根据上面的总结<br/>我应该去掉–enable-so这行<br/>如何希望动态编译模块<br/>比如:–enable-rewrite应该替换为: –enable-rewrite=shared<br/><br/>最后,我将要编译的应该为:<br/><br/>./configure<br/>--prefix=/usr/local/apache2<br/>--enable-mods-shared=most<br/>--enable-rewrite<br/>--enable-speling<br/>--enable-forward<br/>--enable-ssl<br/>--with-ssl=/usr/local/openssl<br/><br/><br/>上面中 –enable-mods-shared=most的意思是说 动态的编译进来大多数的模块<br/>而 –enable-mods-shared=all是指动态的编译所有的模块<br/>如果把-shared去掉,就是静态的编译了…<br/><br/>综上所述<br/>总结出了我个人对apache的动态与静态编译的理解<br/>好比有两个人a和m<br/>a代表apache,m代表module<br/>要想让a使用m的东西<br/>一个方法是把m的东西都放到a那里去，a使用的时候就是现成的了<br/>就是所谓的静态编译<br/><br/>还有一个方法，<br/>就是告诉a， m的住址，当a要使用m的东西的时候,a去找m,然后使用<br/>不过，这种方法要注意的一个问题就是：m必须要有实际的住址，<br/>否则a会找不到m而产生错误的,我此文开始提到的 apachectl startssl产生<br/>的错误就是这个原因，应该再编译好ssl才可以的.<br/>这种方法也就是apache 的动态(DSO)编译了<br/><br/> <br/><br/>apache的动态和静态编译区别<br/><br/>一、含义:<br/><br/>动态意味着不用此模块的时候就不需要Load进来，使用的时候需要显示的Load进来;<br/><br/>静态意味着先把模块Load进来,想用的时候直接使用.<br/><br/>二、编译:<br/><br/>1、静态编译:<br/><br/>当只需要静态编译module的时候,语法应写成–enable-ssl或–enable-ssl=static。<br/><br/>例如:<br/><br/>#./configure --prefix=/usr/local/apache2 --enable-ssl[=static]<br/><br/>查看哪些modules被静态编译进apache里:<br/><br/>#/usr/local/apache2/bin/httpd -lCompiled in modules: core.c mod_ssl.c<br/><br/>2、动态编译:<br/><br/>当只需要动态编译module的时候,语法写成–enable-ssl=shared即可。<br/><br/>#./configure --prefix=/usr/local/apache2 --enable-ssl=shared<br/><br/>查看哪些modules被动态编译进apache里:<br/><br/>#ls -l /usr/local/apache2/modules/-rw-r--r-- 1 root root 8504 Aug 25 14:49 httpd.exp-rwxr-xr-x 1 root root 806898 Aug 7 13:57 mod_ssl.so<br/><br/>3、静动混合:<br/><br/>当既需要动态又需要动态的时候,语法写成–enable-ssl=static[动态编译] –enable-rewrite=shared[静态编译]<br/><br/>以下为示例:<br/><br/>#./configure --prefix=/usr/local/apache2 --enable-ssl=static --enable-rewite=shared<br/><br/>三、使用:<br/><br/>1、动态编译使用:<br/><br/>会生成相关的so文件,例如:<br/><br/>1)、动态加载module,在配置文件里需要加上如下语句:<br/><br/>LoadModule access_module /usr/local/apache2/modules/mod_ssl.so
]]>
</description>
</item><item>
<link>http://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] Apache用动态编译效率较高，MySQL则相反用静态编译效率。apache动态编译/静态编译区别 ]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>