離線升級 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 文件。
我感謝提供的任何幫助。我可以根據需要提供更多資訊。
您已經正確建構了 httpd,但是從原始碼建構的版本的預設目錄是
/usr/local/apache2
,如果您make && make install
以 root 身份完成,它將安裝在那裡。通常的方法是符號連結/usr/local/apache2
以/etc/httpd
保持一致性。查看初始安裝,移動/etc/httpd
和創建符號連結/usr/local/apache2
應該可以與您的 init 文件一起使用,但您也可以檢查它是否與您的安裝相匹配。如果您需要再次執行此操作,您還可以考慮建構一個 RPM,apache 源附帶一個建構文件,它可以在執行 CentOS 5.11 的 VM 上執行。