日期:2014-05-17  浏览次数:20919 次

apache2.0 升级到 2.2笔记

1.问题一 LoadModule vhost_alias_module /usr/alibaba/apache2/modules/mod_vhost_alias.so?

需要module目录下的各种so,但是在编译的apache下却没有。解决办法 在编译的参数中中添加 ?

--enable-mods-shared=all 会将所有的模块编译出来到 /module目录下?

--enable-mods-shared=most 会编译部分数据 ?到 /module目录下?

--enable-mods-shared='ssl vhost_alias' 会变异 出来 mod_ssl.so mod_vhost_alias.so?

前提: 必须加 --enable-so 而且这参数必须在 --enable-mods-shared 参数前面

?

还有种 加 --enable-headers 但是这种方式试了下,但是没有将相应的 so生成!?

?

2.问题二 在64位机子下会报:

/usr/bin/ld: /usr/local/lib/libz.a(crc32.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC

/usr/local/lib/libz.a: could not read symbols: Bad value

?

解决方法如下:

下载 zlib-1.2.3

cd zlib-1.2.3 //进入zlib目录
CFLAGS="-O3 -fPIC" ./configure   //使用64位元的方法进行编译
make clean
make
make install
?

?

3.问题三 加载了mod-jk 后在?

mod-jk.conf中定义日志路径用的是 : JkLogFile ${intl_bopsassembly_loggingRoot}/%w/mod_jk.log

这个%w在创建文件时候一直报错!

去掉这个%W

?

4.从2.0升级到2.2过程中某些模块的名字变化了

mod_imap -- > mod_imagemap
mod_auth -- > mod_auth_basic mod_authn_file mod_authz_user mod_authz_groupfile
mod_access -- >  mod_authz_host
mod_auth_ldap -- > mod_authnz_ldap
?

?

一个比较完整的编译apache的参数:

./configure --prefix=/home/inter12/installs/dev/httpd-new -enable-lib64 -libdir=/usr/lib64 --enable-rewrite=static --with-mpm=worker --enable-so --enable-proxy --enable-proxy-http --enable-deflate --enable-headers --enable-expires --enable-mods-shared='ssl actions unique_id autoindex setenvif headers auth_anon auth_dbm speling alias env include wl_20 usertrack mime_magic status log_config auth_digest proxy authz_host info dir asis proxy_http proxy_connect proxy_ftp vhost_alias imagemap dav userdir expires deflate log_forensic negotiation ext_filter cgid dav_fs auth_basic authn_file authz_user authz_groupfile mime cern_meta rewrite negotiation headers_module' --with-ssl=/usr/alibaba/openssl/ --with-included-apr --enable-module=most
?

选的mod-jk是 tomcat-connectors-1.2.30-src.tar.gz

?

?

升级思路:

第一个方案:全盘修改

接受这个任务时较为激动,就采用了比较激进的方式,全部修改启动脚本,包括所有的配置项,但是这个项目更大,坑很多,走的很辛苦,去填一个个坑。后来放弃。采用了方案二

?

第二个方案:局部推进

只修改了跟环境相关的一些配置项,例如JAVA_HOME,APACHE,JBOSS及应用的部署目录等。这步走的还算顺利,但是具体在apache从2.0升级到2.2过程中出现了很多的问题。

一个是2.0的httpd.conf跟2.2比较有很多的不同点,而且原来的应用添加了很多个性化的配置,但是在2.2中已经不推荐,或者不存在了。

这个时候不直接修改原来久的配置项,改为取2.2中默认的httpd.conf,然后对比这修改配置项。结果很顺利,一步步走下来。apache能启动了,但是被一个问题困扰很久。就是上文中的问题三。

这个%w是公司默认模版中的配置,可能是自己某些配置项没添加,但是在建立日志文件的时候报错。但是apache告诉你启动错误,但是不给具体错误,这个真的很操蛋!

?

?