老版本的apache/IHS编译安装指定版本的组件如mod_ssl.so、mod_proxy等

已邀请:

背景:不同版本的IHS包括apache,如果版本号有差异,比如Apache 2.2 和 Apache 2.4.8 他们的依赖系统组件版本有差异,如果交叉使用非当前版本的组件,会导致启动时报错。类似

/uploads/files_user1/answer/5ee18422a0721499816.png


如何解决?答:基于当前IHS版本,编译指定的组件。以编译mod_ssl为例。


1、下载和IHS同版本的apache

#确认当前IHS版本
cd /home/IBM/HTTPServer/bin/
./httpd -V

/uploads/files_user1/answer/5ee1845be2d70257521.png

2、下载相应版本的apache(http://archive.apache.org/dist/httpd/),解压。

/data/software/httpd-2.2.8/

3、下载与当前版本兼容的openssl(https://www.openssl.org/source/openssl-0.9.8e.tar.gz),解压安装

/data/software/openssl-0.9.8e/

4、安装openssl-0.9.8e

cd /data/software/openssl-0.9.8e/
./config shared zlib
make
make install
mv /usr/bin/openssl /usr/bin/openssl.OFF
mv /usr/include/openssl /usr/include/openssl.OFF
rm -rf /usr/lib/libssl.so
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/ssl/include/openssl /usr/include/openssl
ln -sv /usr/local/ssl/lib/libssl.so.0.9.8  /usr/lib/libssl.so
echo "/usr/local/ssl/lib" >> /etc/ld.so.conf
ldconfig -v
openssl version

5、编译安装apache

cd /data/software/httpd-2.2.8/
./configure --enable-ssl --enable-so
make
make install

6、编译mod_ssl.so组件。将/data/software/httpd-2.2.8/modules下

cp -r /data/software/httpd-2.2.8/modules/ssl /usr/local/apache2/modules/
cp -r /data/software/httpd-2.2.8/modules/loggers /usr/local/apache2/modules/
cd /usr/local/apache2/modules/ssl/
/usr/local/apache2/bin/apxs -i -c -a -D HAVE_OPENSSL=1 -I /usr/include/openssl -lcrypto -lssl -ldl *.c

编译出的mod_ssl.so组件保存在/usr/local/apache2/modules/mod_ssl.so

7、将编译出的so文件放到进程引用的路径,或创建软连接

ln -s /usr/local/apache2/modules/mod_ssl.so /etc/httpd/modules/mod_ssl.so


编译组件流程:

1、找到编译源码,或当前版本的源码。

2、确保httpd的bin中有apxs,没有的话就要编译安装相应的apache

3、将源码apache中的modules下的模块源码,复制到原httpd的modules目录下,如编译了新的apache可以在新的apache下操作

4、通过执行xxxxx/apxs -i -c 参数 模块 ,完成模块的编译安装。一般编译后,生产的组件会在日志中输出其具体位置。


要回复问题请先登录注册