Всем доброе утро. Я пытаюсь понять, как правильно обновить httpd на наших серверах Linux с 2.2.14 до 2.2.34. Вот подробности:
ИСТОРИЯ ВОПРОСА: Все наши серверы работают под управлением RHEL 5.11 и расположены в демилитаризованной зоне, не имеющей доступа к общему Интернету. (Маловероятно, что мы сможем открыть брандмауэр для онлайн-обновления, но это может быть спорным вопросом.) После большого чтения выясняется, что во время установки была установлена версия 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
должен работать с вашим файлом инициализации, но вы также можете проверить, соответствует ли он вашей установке.
Если вам нужно сделать это снова, вы также можете подумать о создании RPM, источник apache поставляется с файлом сборки, который это сделает, и его можно запустить на виртуальной машине под управлением CentOS 5.11.