AWS Linux实例中httpd版本无法通过Yum升级的问题求助
AWS Linux实例中httpd版本无法通过Yum升级的问题求助
问题背景
最近公司安全团队要求我把AWS EC2实例上的Apache(httpd)从当前的2.4.48版本升级到2.4.56,但操作的时候遇到了麻烦:
先确认了当前版本:
[root@ip-172-X ec2-user]# httpd -v Server version: Apache/2.4.48 () Server built: Jun 25 2021 18:53:37
然后执行yum update httpd,结果Yum直接告诉我没有可更新的包:
[root@ip-172-X ec2-user]# sudo yum update httpd Loaded plugins: extras_suggestions, langpacks, update-motd No packages marked for update
更离谱的是,如果我尝试重新安装httpd,它居然会回退到2.3.34版本?有没有大佬能给个简单靠谱的升级方案呀?
可能的解决方案
这种情况基本是因为系统默认的Yum源里没有你需要的2.4.56版本,试试下面几个方法:
1. 优先检查Amazon Linux Extras仓库
AWS官方的amazon-linux-extras工具经常会提供一些比默认源更新的软件包,先看看有没有适配的httpd版本:
sudo amazon-linux-extras list | grep httpd
如果输出里有标注available的2.4.x新版本条目,先启用对应的仓库:
sudo amazon-linux-extras enable httpd<对应的版本标识>
然后清理缓存再升级:
sudo yum clean all && sudo yum update httpd
这个方法是最省心的,优先试试。
2. 手动添加Apache官方Yum源
如果Extras仓库里没有目标版本,可以手动加Apache的官方源(以Amazon Linux 2为例):
- 新建一个源配置文件:
sudo touch /etc/yum.repos.d/apache.repo sudo vi /etc/yum.repos.d/apache.repo
- 把下面的内容粘贴进去(注意根据你的系统架构调整baseurl,这里是x86_64的CentOS 7兼容源):
[apache] name=Official Apache Repository baseurl=https://downloads.apache.org/httpd/linux/httpd-2.4.56/centos/7/x86_64/ enabled=1 gpgcheck=0
- 清理缓存后升级:
sudo yum clean all && sudo yum update httpd
提示:如果是Amazon Linux 2023,需要找对应版本的官方源路径,确保和系统兼容。
3. 源码编译安装(适合需要自定义配置的场景)
如果上面的方法都不行,那就只能源码编译了,步骤大概是这样:
- 先装编译依赖:
sudo yum install -y gcc make apr apr-util pcre-devel openssl-devel
- 下载Apache 2.4.56的源码包(你可以从Apache官网下载对应的tar.gz包):
wget httpd-2.4.56.tar.gz
- 解压后编译安装:
tar -xzf httpd-2.4.56.tar.gz cd httpd-2.4.56 ./configure --prefix=/usr/local/apache2 --enable-ssl --enable-so make && sudo make install
- 替换系统默认的httpd程序:
sudo systemctl stop httpd sudo mv /usr/sbin/httpd /usr/sbin/httpd.old sudo ln -s /usr/local/apache2/bin/httpd /usr/sbin/httpd sudo systemctl start httpd
编译安装的好处是可以自定义功能,但要注意后续的维护和更新得自己来。
备注:内容来源于stack exchange,提问作者eezetee
相关产品推荐
相关产品推荐

