2023年12月8日 星期五

apache 2.4.52 to 2.4.57 another method

 


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.




沒有留言:

張貼留言