Apache 2.4.x ручная сборка и установка на RHEL 6.4
ОС: Red Hat Enterprise Linux Server, выпуск 6.4 (Сантьяго)
Текущая установка Apache на этой ОС в настоящее время - 2.2.15. Мне нужна последняя ветка 2.4.x, поэтому я решил установить ее вручную. Я отметил полную процедуру, которую я предпринял, включая распаковку apr
а также apr-util
Исходники в исходники apache заранее, но я думаю, что следующее является наиболее важной частью процедуры:
GATHER LATEST APACHE AND APR
$ cd ~
$ mkdir apache-src
$ cd apache-src
$ wget http://apache.insync.za.net//httpd/httpd-2.4.6.tar.gz
$ tar xvf httpd-2.4.6.tar.gz
$ cd httpd-2.4.6
$ cd srclib
$ wget http://apache.insync.za.net//apr/apr-1.5.0.tar.gz
$ tar -xvzf apr-1.5.0.tar.gz
$ mv apr-1.5.0 apr
$ rm -f apr-1.5.0.tar.gz
$ wget http://apache.insync.za.net//apr/apr-util-1.5.3.tar.gz
$ tar -xvzf apr-util-1.5.3.tar.gz
$ mv apr-util-1.5.3 apr-util
INSTALL DEVEL PACKAGES
yum update --skip-broken (There is a dependency issue with the latest Chrome needing the latest libstdc++, which is not available for RHEL and CentOS)
yum install apr-devel
yum install apr-util-devel
yum install pcre-devel
INSTALL
$ cd ~/apache-src/httpd-2.4.6
$ ./configure --prefix=/etc/httpd --enable-mods-shared="all" --enable-rewrite --with-included-apr
$ make
$ make install
ПРИМЕЧАНИЕ: во время выполнения вышеуказанного,
/etc/http
пустой.
Кажется, что все прошло нормально, пока я не попытаюсь запустить службу httpd. Кажется, что каждый модуль включает в httpd.conf
не удается с сообщением, похожим на это для mod_rewrite
:
httpd: Syntax error on line 148 of /etc/httpd/conf/httpd.conf: Cannot load /etc/httpd/modules/mod_rewrite.so into server: /etc/httpd/modules/mod_rewrite.so: undefined symbol: ap_global_mutex_create
Я прошел через список включенных модулей в httpd.conf
и прокомментировал их по одному. Все вызывают ошибку, как указано выше, однако "неопределенный символ: значение" часто отличается (поэтому не всегда ap_global_mutex_create
).
Я пропускаю шаг? Хотя я нахожу некоторую часть этой ошибки в Google, большинство решений сосредоточено вокруг .so
файлы недоступны Это не проблема, и модули присутствуют в /etc/http/modules
,
ПРИМЕЧАНИЕ: во время выполнения вышеуказанного,
/etc/http
пустой.
2 ответа
У вас правильная процедура, но она неполная.
После установки вы должны включить SSL в httpd.conf. и создать файл server.crt и server.key. Ниже полная процедура:
1. Скачать Apache
cd /usr/src
wget http://www.apache.org/dist/httpd/httpd-2.4.23.tar.gz
tar xvf httpd-2.4.23.tar.gz
2. Скачать APR и APR-Util
cd /usr/src
wget -c http://mirror.cogentco.com/pub/apache/apr/apr-1.5.2.tar.gz
wget -c http://mirror.cogentco.com/pub/apache/apr/apr-util-1.5.4.tar.gz
tar xvf apr-1.5.2.tar.gz
tar xvf apr-util-1.5.4.tar.gz
Теперь поместите APR и APR-Util, которые вы скачали, в ваши исходные файлы apache.
mv apr-1.5.2 /usr/src/httpd-2.4.23/srclib/apr
mv apr-util-1.5.4 /usr/src/httpd-2.4.23/srclib/apr-util
3.Compile
cd /usr/src/httpd-2.4.23
./configure --enable-so --enable-ssl --with-mpm=prefork --with-included-apr --with-included-apr-util
make
make install
Как вы можете видеть в ./configure
В команде мы указываем параметры командной строки для включения apr и apr-utils.
4. Включите SSL в httpd.conf
Файл конфигурации Apache httpd.conf находится в каталоге / usr / local / apache2 / conf.
nano /usr/local/apache2/conf/httpd.conf
Раскомментируйте строку включения httpd-ssl.conf и LoadModule ssl_module
строка в файле /usr/local/apache2/conf/httpd.conf:
# LoadModule ssl_module modules/mod_ssl.so
# Include conf/extra/httpd-ssl.conf
Просмотрите httpd-ssl.conf, чтобы просмотреть все конфигурации SSL по умолчанию.
В большинстве случаев вам не нужно ничего менять в этом файле.
nano /usr/local/apache2/conf/extra/httpd-ssl.conf
Сертификат SSL и ключ требуются прежде, чем мы запустим Apache.
Файлы server.crt и server.key, упомянутые в httpd-ssl.conf, должны быть созданы, прежде чем мы двинемся вперед.
cd /usr/local/apache2/conf/extra
egrep 'server.crt|server.key' httpd-ssl.conf
SSLCertificateFile "/usr/local/apache2/conf/server.crt"
SSLCertificateKeyFile "/usr/local/apache2/conf/server.key"
5. Создайте файл server.crt и server.key
Сначала сгенерируйте server.key, используя openssl.
cd /usr/src
openssl genrsa -des3 -out server.key 1024
Приведенная выше команда запросит пароль. Обязательно запомните этот пароль. Это необходимо при запуске вашего Apache позже.
Затем создайте файл запроса сертификата (server.csr), используя указанный выше файл server.key.
openssl req -new -key server.key -out server.csr
Наконец, создайте самозаверяющий ssl-сертификат (server.crt), используя указанные выше файлы server.key и server.csr.
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
Скопируйте файл server.key и server.crt в соответствующий каталог конфигурации Apache.
cp server.key /usr/local/apache2/conf/
cp server.crt /usr/local/apache2/conf/
6. Запустите Apache
/usr/local/apache2/bin/apachectl start
Если вы получаете сообщение об ошибке ниже:
AH00526: Syntax error on line 51 of /usr/local/apache2/conf/extra/httpd-ssl.conf:
Invalid command 'SSLCipherSuite', perhaps misspelled or defined by a module not included in the server configuration
Не забудьте раскомментировать строку, показанную ниже в httpd.conf:
vi /usr/local/apache2/conf/httpd.conf
# LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
Наконец, вам будет предложено ввести пароль для вашего закрытого ключа перед запуском apache. Убедитесь, что процесс Apache httpd работает в фоновом режиме.
ps -ef | grep http
Вы должны увидеть что-то подобное:
root 29529 1 0 13:08 ? 00:00:00 /usr/local/apache2/bin/httpd -k start
antoine 29530 29529 0 13:08 ? 00:00:00 /usr/local/apache2/bin/httpd -k start
antoine 29531 29529 0 13:08 ? 00:00:00 /usr/local/apache2/bin/httpd -k start
antoine 29532 29529 0 13:08 ? 00:00:00 /usr/local/apache2/bin/httpd -k start
root 29616 18260 0 13:09 pts/0 00:00:00 grep http
По умолчанию Apache SSL работает на порту 443. Откройте веб-браузер и убедитесь, что вы можете получить доступ к вашему Apache, используя https://{ваш-ip-адрес}
Я надеюсь, что это поможет, иначе я советую вам пойти посмотреть: http://jasonpowell42.wordpress.com/2013/04/05/install-apache-2-4-4-on-centos-6-4/
baprutil-1.la /usr/src/httpd-2.4.27/srclib/apr/libapr-1.la -lrt -lcrypt -lpthread -ldl -lcrypt
/usr/src/httpd-2.4.27/srclib/apr-util/.libs/libaprutil-1.so: undefined reference to `XML_GetErrorCode'
/usr/src/httpd-2.4.27/srclib/apr-util/.libs/libaprutil-1.so: undefined reference to `XML_SetEntityDeclHandler'
/usr/src/httpd-2.4.27/srclib/apr-util/.libs/libaprutil-1.so: undefined reference to `XML_ParserCreate'
/usr/src/httpd-2.4.27/srclib/apr-util/.libs/libaprutil-1.so: undefined reference to `XML_SetCharacterDataHandler'
/usr/src/httpd-2.4.27/srclib/apr-util/.libs/libaprutil-1.so: undefined reference to `XML_ParserFree'
/usr/src/httpd-2.4.27/srclib/apr-util/.libs/libaprutil-1.so: undefined reference to `XML_SetUserData'
/usr/src/httpd-2.4.27/srclib/apr-util/.libs/libaprutil-1.so: undefined reference to `XML_StopParser'
/usr/src/httpd-2.4.27/srclib/apr-util/.libs/libaprutil-1.so: undefined reference to `XML_Parse'
/usr/src/httpd-2.4.27/srclib/apr-util/.libs/libaprutil-1.so: undefined reference to `XML_ErrorString'
/usr/src/httpd-2.4.27/srclib/apr-util/.libs/libaprutil-1.so: undefined reference to `XML_SetElementHandler'
collect2: error: ld returned 1 exit status
make[2]: *** [htpasswd] Error 1
make[2]: Leaving directory `/usr/src/httpd-2.4.27/support'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/usr/src/httpd-2.4.27/support'
make: *** [all-recursive] Error 1
Эта ошибка получена в make
шаг если --with-included-apr-util
не указано в ./configure