RHEL8本來只有支援apache 2.4.37,本來透過codeit.repo升到2.4.52,最近要升到2.4.57
(2.4.58要使用openssl 3.0以後的版本,是超大工程,因此就升到2.4.57)
以下講一下流程。
這一次自己編RPM檔來升版,本來以為會跟上次一次順利完成,但其實問題也不少,因此記錄一下。
cd /root/rpmbuild/SOURCES
rpmbuild -tb httpd-2.4.57.tar.bz2
記得先把相關設定檔備份好 (理論上yum會幫你備,但我的case他沒有備對,可能是我做過太多升版降版的測試的關係)
dnf localinstall httpd-2.4.57-1.x86_64.rpm httpd-manual-2.4.57-1.x86_64.rpm httpd-tools-2.4.57-1.x86_64.rpm mod_ssl-2.4.57-1.x86_64.rpm
其它同時編譯出來的RPM檔就看你的需求。
倒回設定檔 (/etc/httpd/conf/httpd.conf)及其它的設定檔。這邊有一個問題。
我原先的2.4.52在讀取modules 是這樣讀的
Include conf.modules.d/*.conf
但升版後這個conf.moduels.d的目錄不見了。
所以我改回自己讀。
例如:
LoadModule mpm_prefork_module /usr/lib64/httpd/modules/mod_mpm_prefork.so
這邊預設是讀mod_mpm_event.so,會有MPM的錯誤訊息,所以我改讀mpm_prefork
我這邊用絕對目錄。如果要用相對目錄的話,
要調整以下的參數:
ServerRoot "/etc/httpd"
復原後發現PHP不能跑(因為httpd相依的php rpm被移掉了),回頭下載php-7.2.24-1.el8.x86_64.rpm
rpm2cpio php-7.2.24-1.el8.x86_64.rpm | cpio -idmv
取出libphp7.so搬到/usr/lib64/httpd/modules/
SSL的部份也一樣在升版時mod_ssl被刪除了,下載mod_ssl-2.4.58-1.el8.x86_64.rpm,取出mod_ssl.so
wget https://pkgs.dyn.su/el8/modular/x86_64/httpd/mod_ssl-2.4.58-1.el8.x86_64.rpm
rpm2cpio mod_ssl-2.4.58-1.el8.x86_64.rpm | cpio -idmv
放到/usr/lib64/httpd/modules/
再修改httpd.conf
LoadModule ssl_module /usr/lib64/httpd/modules/mod_ssl.so
這樣就差不多了。有開放使用者個人網頁的話,記得修改httpd.conf,新增:
LoadModule dir_module /usr/lib64/httpd/modules/mod_dir.so
LoadModule userdir_module /usr/lib64/httpd/modules/mod_userdir.so
有要跑cgi-bin的perl的話,記得修改httpd.conf,新增:
LoadModule cgid_module /usr/lib64/httpd/modules/mod_cgid.so
另外我的webgit也壞了,後來修改/etc/httpd/conf.d/gitweb.conf才跑出來。
有加#號的是原先的設定。
猜想是因為mod_fcgid.x86_64 : FastCGI interface module for Apache 2 這個模組也被刪掉的原因
Alias /git /var/www/git
<Directory /var/www/git>
#Options +ExecCGI
#AddHandler cgi-script .cgi
#DirectoryIndex gitweb.cgi
Options +ExecCGI +FollowSymLinks +SymLinksIfOwnerMatch
AllowOverride All
order allow,deny
Allow from all
AddHandler cgi-script cgi
DirectoryIndex gitweb.cgi
</Directory>
另外在升版apache時,其實php-pear也被移掉了,但我好像只有之前測試multithread時有用到,因此就不裝回了。需要時再說吧。
本來由於設定檔沒有備到,打算降回2.4.52,但只能降到2.4.37(AppStream),而且設定檔也不會回來了。只好硬著頭往上升,
還好順利完成了。
後來才發現可以透過codeit升到apache 2.4.57,但同樣要解決php等幾個軟體的相容性問題。
但也記錄一下,可以看到有2.4.57及2.4.58的版本供選擇。
dnf module enable httpd:codeit
dnf module list httpd:codeit
dnf module info httpd:codeit
接著再用dnf或yum來處理。看的出來CodeIT確實有提供apache 2.4.57了
# yum --enablerepo=CodeIT info httpd
Updating Subscription Management repositories.
Unable to read consumer identity
Last metadata expiration check: 3:39:17 ago on Sun 10 Dec 2023 11:54:01 AM CST.
Installed Packages
Name : httpd
Version : 2.4.57
Release : 1
Architecture : x86_64
Size : 4.6 M
Source : httpd-2.4.57-1.src.rpm
Repository : @System
From repo : @commandline
Summary : Apache HTTP Server
URL : http://httpd.apache.org/
License : Apache License, Version 2.0
Description : Apache is a powerful, full-featured, efficient, and freely-available
: Web server. Apache is also the most popular Web server on the
: Internet.