文章目录
- 背景信息
- 操作步骤
- 构建rpm包
- 升级httpd
- 启动httpd报错及处理
- 缺少mod_systemd
- 缺少mod_cgi
- 相关文件
背景信息
由于2.4.37版本httpd有安全漏洞,需要升级到2.4.57版本,2.4.57版本是当前最新的版本,只具备源码包,不具备rpm包,而原有的httpd是zabbix配套的,为rpm版本的包。最简单的方式就是进行rpm包的升级,这样也便于后期维护。
基于上述的需求,需要先构建出2.4.57的rpm包,然后使用rpm包升级httpd并解决httpd升级后的问题。
操作步骤
构建rpm包
官网 下载链接为 https://dlcdn.apache.org/httpd/httpd-2.4.57.tar.bz2
安装rpmbuild命令
# 安装rpmbuild命令
yum install rpmbuild
yum install rpmdevtools
# 安装基础依赖
yum -y install epel-release
yum -y install libuuid-devel apr-devel apr-util-devel openldap-devel lua-devel libxml2-devel
# 构建rpm包
rpmbuild -tb httpd-2.4.57.tar.bz2
# 生成的rpm包在如下目录
[root@hadoop01 ~]# ls /root/rpmbuild/RPMS/x86_64/
httpd-2.4.57-1.x86_64.rpm httpd-manual-2.4.57-1.x86_64.rpm mod_lua-2.4.57-1.x86_64.rpm
httpd-debuginfo-2.4.57-1.x86_64.rpm httpd-tools-2.4.57-1.x86_64.rpm mod_proxy_html-2.4.57-1.x86_64.rpm
httpd-devel-2.4.57-1.x86_64.rpm mod_authnz_ldap-2.4.57-1.x86_64.rpm mod_ssl-2.4.57-1.x86_64.rpm
构建rpm包的报错处理: 会报错说缺少/root/rpmbuild/BUILDROOT/httpd-2.4.57-1.x86_64/usr/lib64/httpd/modules/mod_mpm_event.so
解决办法: 打开两个终端 一个执行rpmbuild命令 另外一个准备好cp命令 把老的httpd的该模块复制过去 一直执行该命令 知道提示是否覆盖
cp /etc/httpd/modules/mod_mpm_event.so /root/rpmbuild/BUILDROOT/httpd-2.4.57-1.x86_64/usr/lib64/httpd/modules/
升级httpd
# 1 备份httpd配置文件
cd /etc
cp -r httpd httpd.old
# 2 升级httpd 切换到上述构建好的rpm包的目录里
cd /root/rpmbuild/RPMS/x86_64/
yum -y localupdate httpd-2.4.57-1.x86_64.rpm
# 3 问题解决
如果遇到说某个东西冲突的 可以使用rpm命令 卸载对应的低版本软件包 再执行上述的 localupdate命令
启动httpd报错及处理
将httpd配置文件还原
mv /etc/httpd /etc/httpd.new
mv /etc/httpd.old /etc/httpd
缺少mod_systemd
启动httpd服务 报错如下
Starting httpd: httpd: Syntax error on line 56 of /etc/httpd/conf/httpd.conf: Syntax error on line 12 of /etc/httpd/conf.modules.d/00-systemd.conf: Cannot load modules/mod_systemd.so
解决办法 : 下载2.4.57的源码包 编译安装一下 然后复制mod_systemd.so到现在的httpd的modules目录里
下载地址: https://dlcdn.apache.org/httpd/httpd-2.4.57.tar.gz
步骤如下
# 1 解压源码包
tar -xf httpd-2.4.57.tar.gz
cd httpd-2.4.57
# 2 安装基础依赖
yum -y install subversion autoconf libtool python expat-devel pcre-devel systemd-devel gcc-c++ make
# 3 configure 安装目录随意写
./configure --enable-systemd --prefix=/opt/httpd
# 4 安装
make && make install
# 5 复制mod_systemd.so
cp /opt/httpd/modules/mod_systemd.so /etc/httpd/modules/
此问题解决 出现了新的问题 报错: Starting httpd: httpd: Syntax error on line 56 of /etc/httpd/conf/httpd.conf: Syntax error on line 12 of /etc/httpd/conf.modules.d/01-cgi.conf: Cannot load modules/mod_cgi.so into server: libc.so.12: cannot open shared object file: No such file or directory
缺少mod_cgi
重新编译httpd 增加cgi
# 1 进入解压后的目录
cd httpd-2.4.57
# 2 安装基础依赖
yum -y install subversion autoconf libtool python expat-devel pcre-devel systemd-devel gcc-c++ make
# 3 configure 安装目录随意写
./configure --enable-systemd --prefix=/opt/httpd
# 4 安装
make && make install
# 5 复制mod_cgi.so
cp /data/app/httpd/modules/mod_cgi.so /etc/httpd/modules/
再次启动httpd 成功
zabbix也可以正常访问 如下图
相关文件
modules文件
[root@hadoop01 httpd-2.4.57]# ls /etc/httpd/modules/
lua_apr.o mod_authz_owner.so mod_ext_filter.so mod_mpm_prefork.so mod_session_dbd.so
lua_config.o mod_authz_user.so mod_file_cache.so mod_mpm_worker.so mod_session.so
lua_dbd.o mod_autoindex.so mod_filter.so mod_negotiation.so mod_setenvif.so
lua_passwd.o mod_bucketeer.so mod_headers.so mod_proxy_ajp.so mod_slotmem_plain.so
lua_request.o mod_buffer.so mod_heartbeat.so mod_proxy_balancer.so mod_slotmem_shm.so
lua_vmprep.o mod_cache_disk.so mod_heartmonitor.so mod_proxy_connect.so mod_socache_dbm.so
mod_access_compat.so mod_cache.so mod_include.so mod_proxy_express.so mod_socache_memcache.so
mod_actions.so mod_cache_socache.so mod_info.so mod_proxy_fcgi.so mod_socache_redis.so
mod_alias.so mod_case_filter_in.so mod_lbmethod_bybusyness.so mod_proxy_fdpass.so mod_socache_shmcb.so
mod_allowmethods.so mod_case_filter.so mod_lbmethod_byrequests.so mod_proxy_ftp.so mod_speling.so
mod_asis.so mod_cgid.so mod_lbmethod_bytraffic.so mod_proxy_hcheck.so mod_status.so
mod_auth_basic.so mod_cgi.so mod_lbmethod_heartbeat.so mod_proxy_http.so mod_substitute.so
mod_auth_digest.so mod_charset_lite.so mod_log_config.so mod_proxy_scgi.so mod_suexec.so
mod_auth_form.so mod_data.so mod_log_debug.so mod_proxy.so mod_systemd.so
mod_authn_anon.so mod_dav_fs.so mod_log_forensic.so mod_proxy_uwsgi.so mod_system.so
mod_authn_core.so mod_dav_lock.so mod_logio.so mod_proxy_wstunnel.so mod_unique_id.so
mod_authn_dbd.so mod_dav.so mod_lua.a mod_ratelimit.so mod_unixd.so
mod_authn_dbm.so mod_dbd.so mod_lua.la mod_reflector.so mod_userdir.so
mod_authn_file.so mod_deflate.so mod_lua.lai mod_remoteip.so mod_usertrack.so
mod_authn_socache.so mod_dialup.so mod_lua.o mod_reqtimeout.so mod_version.so
mod_authz_core.so mod_dir.so mod_lua.so mod_request.so mod_vhost_alias.so
mod_authz_dbd.so mod_dumpio.so mod_macro.so mod_rewrite.so mod_watchdog.so
mod_authz_dbm.so mod_echo.so mod_mime_magic.so mod_sed.so
mod_authz_groupfile.so mod_env.so mod_mime.so mod_session_cookie.so
mod_authz_host.so mod_expires.so mod_mpm_event.so mod_session_crypto.so
相关rpm包
[root@hadoop01 x86_64]# pwd
/root/rpmbuild/RPMS/x86_64
[root@hadoop01 x86_64]# ls
httpd-2.4.57-1.x86_64.rpm httpd-manual-2.4.57-1.x86_64.rpm mod_lua-2.4.57-1.x86_64.rpm
httpd-debuginfo-2.4.57-1.x86_64.rpm httpd-tools-2.4.57-1.x86_64.rpm mod_proxy_html-2.4.57-1.x86_64.rpm
httpd-devel-2.4.57-1.x86_64.rpm mod_authnz_ldap-2.4.57-1.x86_64.rpm mod_ssl-2.4.57-1.x86_64.rpm
文件链接
so文件
httpd 2.4.57 所有rpm包