离线升级 httpd 面临的挑战

离线升级 httpd 面临的挑战

大家早上好。我正在尝试弄清楚如何正确地将 Linux 服务器上的 httpd 从 2.2.14 升级到 2.2.34。以下是详细信息:

背景信息:我们的服务器都运行 RHEL 5.11,并且位于无法访问一般互联网的 DMZ 中。(我们不太可能打开防火墙进行在线升级,但这可能是一个没有实际意义的问题。)经过大量阅读,似乎在安装时,安装了社区版本的 httpd,而不是 Red Hat 随其发行版打包的版本。据我了解本文,这意味着我们无法使用“yum update httpd”。我们母公司为我们的 Linux 服务器聘请的支持供应商也不知道如何为我们升级,所以现在只能靠我了。

迄今为止尝试过的方法:由于没有其他好主意,支持供应商尝试在开发服务器上本地构建 2.2.34。这在 2.2.34 中是成功的似乎需要安装,但目前它无法为服务器上运行的应用程序提供服务——该应用程序仍然使用 2.2.14 进行交付。

可能有用的信息:目前,httpd 二进制文件安装在 /usr/sbin,配置和库位于 /etc/httpd。这是我运行 httpd -V 时看到的内容:

Server version: Apache/2.2.14 (Unix)
Server built:   Oct 14 2009 13:20:11
Server's Module Magic Number: 20051115:23
Server loaded:  APR 1.3.8, APR-Util 1.3.9
Compiled using: APR 1.3.8, APR-Util 1.3.9
Architecture:   64-bit
Server MPM:     Prefork
  threaded:     no
    forked:     yes (variable process count)
Server compiled with....
 -D APACHE_MPM_DIR="server/mpm/prefork"
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_SYSVSEM_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=128
 -D HTTPD_ROOT="/etc/httpd"
 -D SUEXEC_BIN="/usr/sbin/suexec"
 -D DEFAULT_PIDLOG="logs/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_LOCKFILE="logs/accept.lock"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="conf/mime.types"
 -D SERVER_CONFIG_FILE="conf/httpd.conf"

较新的版本构建于 /etc/httpd/httpd-2.2.34/。在该目录中运行时,httpd -V 如下所示:

Server version: Apache/2.2.34 (Unix)
Server built:   Nov 14 2017 09:46:53
Server's Module Magic Number: 20051115:43
Server loaded:  APR 1.5.2, APR-Util 1.5.4
Compiled using: APR 1.5.2, APR-Util 1.5.4
Architecture:   64-bit
Server MPM:     Prefork
  threaded:     no
    forked:     yes (variable process count)
Server compiled with....
 -D APACHE_MPM_DIR="server/mpm/prefork"
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_SYSVSEM_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=128
 -D HTTPD_ROOT="/usr/local/apache2"
 -D SUEXEC_BIN="/usr/local/apache2/bin/suexec"
 -D DEFAULT_PIDLOG="logs/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_LOCKFILE="logs/accept.lock"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="conf/mime.types"
 -D SERVER_CONFIG_FILE="conf/httpd.conf"

在我看来,它构建得正确,但我不知道如何查看它是否真的作品

我需要回答的问题:

1)如果新版本确实构建正确,并且可以如果要运行,我该如何强制系统使用较新的版本?(我可以找出配置更改以使其加载应用程序,但 ps aux | grep“httpd”显示它甚至没有运行。)

2)有没有更简单的方法可以做到这一点?我读过“升级”说明在 Apache 站点上,但是我在系统中的任何地方都找不到 config.nice 文件。

我很感激任何帮助。我可以根据需要提供更多信息。

答案1

您已正确构建了 httpd,但从源代码构建的版本的默认目录是/usr/local/apache2,如果您以 root 身份执行此操作,make && make install它将安装在那里。通常的方法是符号链接/usr/local/apache2/etc/httpd以保持一致性。查看初始安装,移动/etc/httpd并创建符号链接到/usr/local/apache2应该适用于您的 init 文件,但您也可以检查它是否与您的安装相匹配。

如果您需要再次执行此操作,您还可以考虑构建一个 RPM,apache 源附带一个可以执行此操作的构建文件,并且可以在运行 CentOS 5.11 的 VM 上运行它。

相关内容