Недавно мне нужно было смоделировать нашу производственную среду развертывания на моем локальном компьютере. Наши производственные приложения работают на HTTP-сервере Apache. Мы разворачиваем приложение на нескольких экземплярах Tomcat, а также на разных Tomcats для разных пространств имен URL. HTTP-сервер Apache отвечает за все это. HTTP-сервер Apache подключается к коту с помощью mod_jk через mod_ssl. Когда HTTP-сервер Apache получает запрос, он проверяет запросы и пересылает их коту соответственно. Эта конфигурация важна для безопасности и кластеризации.
Этот учебник содержит следующие разделы.
- Установка и настройка HTTP-сервера Apache.
- Установка и настройка Apache Tomcat.
- Установка и настройка mod_jk.
- Конфигурирование mod_ssl.
- Тестирование среды.
Установка и настройка HTTP-сервера Apache.
Выполните следующую команду, чтобы загрузить Apache HTTP-сервер 2.2.22
|
1
2
3
|
wget http://mirrors.gigenet.com/apache//httpd/httpd-2.2.22.tar.bz2wget http://www.apache.org/dist/httpd/httpd-2.2.22.tar.bz2.md5md5sum -c httpd-2.2.22.tar.bz2.md5 |
После выполнения вышеуказанной команды архив httpd-2.2.22.tar.bz2 будет загружен в вашу папку «Загрузки». Чтобы извлечь архивированный файл архива, выполните следующую команду из папки / Downloads.
|
1
2
|
cd /home/semika/Downloadstar -xjvf httpd-2.2.22.tar.bz2 |
Вышеприведенная команда распакует архивированный архив в папку httpd-2.2.22 в папке Downloads. Теперь вы должны решить, куда вы собираетесь установить HTTP-сервер Apache. Я собираюсь установить его в папку /home/semika/httpd-2.2.22. Вы должны создать папку там. Перейдите в папку пользователя и выполните следующую команду, чтобы создать новую папку.
|
1
2
|
cd /home/semikamkdir httpd-2.2.22 |
Чтобы установить Apache для вашей конкретной платформы, нам нужно скомпилировать дистрибутив исходного кода, который мы уже скачали. Если вы внимательно посмотрите в извлеченную папку в Downloads / httpd-2.2.22, вы увидите, что есть скрипт configure . Мы можем скомпилировать исходный дистрибутив с помощью этого скрипта, и он создаст необходимые компоненты для установки HTTP-сервера Apache.
При компиляции Apache можно указать различные параметры, подходящие для нашей локальной среды. Для полного справочника предоставленных опций, смотрите здесь.
Поскольку нам нужно сконфигурировать mod_ssl для компиляции Apache, нам нужно установить пакет разработки OpenSSL. В противном случае компиляция вызовет исключение. Чтобы установить библиотеки разработки OpenSSL, выполните следующую команду.
|
1
|
sudo apt-get install openssl libssl-dev |
Иногда вам также может понадобиться выполнить следующую команду, если вы столкнулись с ошибкой во время компиляции Apache.
|
1
2
|
sudo apt-get install zlib1g-devsudo apt-get install libxml2-dev |
Чтобы скомпилировать исходный дистрибутив Apache, выполните следующие команды.
|
1
2
3
|
cd /home/semika/Downloads/httpd-2.2.22./configure --prefix=/home/semika/httpd-2.2.22 --enable-mods-shared=all --enable-log_config=static --enable-access=static --enable-mime=static --enable-setenvif=static --enable-dir=static -enable-ssl=yes |
–Prefix : вы можете указать каталог установки
–Enable-mods-shared : установка этого параметра на «all» позволит установить все общие модули.
–Enable-ssl : так как мы собираемся настроить HTTP-сервер Apache с mod_ssl, было установлено «да» для компиляции Apache с mod_ssl. По умолчанию эта опция отключена.
Другие параметры, указанные в команде конфигурации, см. В справочной документации по полным параметрам. После успешного выполнения вышеуказанной команды выполните следующие команды. Прежде чем выполнить следующую команду, просто посмотрите на указанный вами каталог установки, то есть: /home/semika/httpd-2.2.22 , вы можете увидеть, что он все еще пуст.
|
1
2
|
makemake install |
Теперь вы можете видеть, что HTTP-сервер Apache установлен в /home/semika/httpd-2.2.22. Ищите папку модулей, вы можете увидеть список установленных модулей. Убедитесь, что он установил mod_ssl.so . Теперь вы можете запустить HTTP-сервер Apache.
|
1
2
|
cd /home/semika/httpd-2.2.22/binsudo ./apachectl start |
Если вы видите ниже линию при выполнении вышеупомянутой команды,
« Httpd: не удалось надежно определить полное доменное имя сервера, используя 127.0.1.1 для ServerName »
отредактируйте ваш файл /httpd-2.2.22/conf/httpd.conf следующим образом. Найдите свойство « ServerName » в файле httpd.conf . Вы увидите следующую строку там.
|
1
|
#ServerName www.example.com:80 |
Раскомментируйте эту строку и измените ее следующим образом.
|
1
|
ServerName localhost |
Снова запустите сервер Apache HTTP. Если вы не изменили порт по умолчанию, на котором работает сервер Apache, проверьте следующий URL-адрес, чтобы проверить, запущен сервер или нет. Порт HTTP-сервера Apache по умолчанию — 80.
HTTP: // локальный /
По указанному выше URL-адресу, если вы видите страницу с надписью «Это работает», вы работаете с HTTP-сервером Apache.
Кроме того, если вы хотите изменить порт по умолчанию, вы можете отредактировать файл httpd.conf следующим образом. Ищите свойство «Listen» и меняйте его по своему желанию.
Я установил его на 7000. Поэтому мой HTTP-сервер Apache работает на 7000. Мне нужно получить доступ к следующему URL-адресу, чтобы получить страницу «Это работает».
HTTP: // локальный: 7000 /
Чтобы остановить HTTP-сервер Apache, выполните следующую команду.
|
1
2
|
cd /home/semika/httpd-2.2.22/binsudo ./apachectl stop |
Установка и настройка Apache Tomcat.
Установка и настройка Apache tomcat не так уж важны, если вы используете такую предварительную настройку. Для полноты урока я объясню это немного. Я использую Apache Tomcat 7.0.25. Вы можете скачать его с веб-сайта Apache и распаковать в какой-нибудь каталог вашего локального компьютера. После этого вы должны установить переменную окружения следующим образом.
|
1
2
|
export CATALINA_HOME=/home/semika/apache-tomcat-7.0.25export PATH=$CATALINA_HOME/bin:$PATH |
Вы можете запустить кота с помощью следующей команды.
|
1
2
|
cd home/semika/apache-tomcat-7.0.25/bin./startup.sh |
Если вы хотите, чтобы консоль Tomcat была запущена, выполните следующие команды перед запуском Tomcat.
|
1
2
|
cd home/semika/apache-tomcat-7.0.25/logs/tail -f catalina.out |
После успешного запуска кота попробуйте следующий URL
HTTP: // локальный: 8080 /
По умолчанию tomcat будет работать на порту 8080. Теперь наш HTTP-сервер Apache работает на порту 7000, а tomcat на 8080.
Кроме того, для настройки Tomcat с сервером Apache HTTP нам нужно создать файл worker.properties в каталоге home / semika / apache-tomcat-7.0.25 / conf /.
w orkers.properties
|
01
02
03
04
05
06
07
08
09
10
11
12
13
|
# Define 1 real worker named ajp13worker.list=ajp13# Set properties for worker named ajp13 to use ajp13 protocol,# and run on port 8009worker.ajp13.type=ajp13worker.ajp13.host=localhostworker.ajp13.port=8009worker.ajp13.lbfactor=50worker.ajp13.cachesize=10worker.ajp13.cache_timeout=600worker.ajp13.socket_keepalive=1worker.ajp13.socket_timeout=300 |
HTTP-сервер Apache подключится к Tomcat через порт 8009. Если вы видите файл server.xml в папке conf Tomcat, вы можете увидеть там следующее объявление коннектора.
|
1
|
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> |
Установка и настройка mod_jk
Если вы загляните в папку httpd-2.2.22 / modules , вы увидите, что mod_jk.so установлен. Mod_jk — это соединитель для HTTP-сервера Apache для подключения к Apache Tomcat. Для настройки необходимо загрузить модуль mod_jk.so на HTTP-сервер Apache.
Отредактируйте файл /httpd-2.2.22/conf/httpd.conf следующим образом. Вам необходимо добавить эти свойства.
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
# Load mod_jk module# Update this path to match your modules locationLoadModule jk_module modules/mod_jk.so# Where to find workers.properties# Update this path to match your conf directory locationJkWorkersFile /home/semika/apache-tomcat-7.0.25/conf/workers.properties# Where to put jk logs# Update this path to match your logs directory locationJkLogFile /home/semika/apache-tomcat-7.0.25/logs/mod_jk.log# Set the jk log level [debug/error/info]JkLogLevel info# Select the log formatJkLogStampFormat "[%a %b %d %H:%M:%S %Y]"# JkOptions indicate to send SSL KEY SIZE,JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories# JkRequestLogFormat set the request formatJkRequestLogFormat "%w %V %T"# Send everything for context /rainyDay to worker ajp13JkMount /rainyDay ajp13JkMount /rainyDay/* ajp13 |
Я думаю, что большинство свойств, определенных выше, для вас понятны. Что такое «JkMount» и «/ rainyDay». «RainyDay» — одно из моих приложений, развернутых на Apache Tomcat. В нем говорится: « Направьте все запросы к Apache Tomcat, которые идут с пространством имен / rainyDay» .
На этом мы закончили настройку mod_jk.
Теперь мы будем тестировать окружающую среду. Попробуйте следующие URL.
HTTP: // локальный: 8080 / rainyDay
Ничего особенного в приведенном выше URL. Поскольку я развернул свое приложение rainyDay на Apache Tomcat, мы можем получить доступ к приложению, даже не конфигурируя его с HTTP-сервером Apache, используя mod_jk.
Теперь попробуйте следующий URL.
HTTP: // локальный: 7000 / rainyDay
Если вы можете получить доступ к приложению с указанным выше URL, наша конфигурация прошла успешно. Мы знаем, что мы не развернули приложение ‘rainyDay’ на сервере Apache HTTP, но на Apache Tomcat, а также на сервере HTTP Apache, работающем на порту 7000. Мы по-прежнему можем получить доступ к приложению ‘rainyDay’, развернутому на Apache Tomcat, через сервер Apache HTTP ,
Теперь просто попробуйте следующий URL.
https: // локальный: 7000 / rainyDay
С помощью вышеуказанного URL вы не сможете получить доступ к приложению, так как URL имеет протокол https . Чтобы получить доступ к приложению с помощью https: // , нам нужно настроить SSL с HTTP-сервером Apache.
Конфигурирование mod_ssl.
Чтобы включить SSL на HTTP-сервере Apache, снова необходимо отредактировать файл httpd.conf . Откройте этот файл и найдите следующую строку.
|
1
2
3
|
# Secure (SSL/TLS) connections#Include conf/extra/httpd-ssl.conf |
Раскомментируйте вышеуказанную строку и откройте ее. Это находится в /httpd-2.2.22/conf/extra/httpd-ssl.conf . Ищите следующие свойства.
|
1
2
3
4
|
SSLPassPhraseDialog builtinSSLEngine onSSLCertificateFile "/home/semika/httpd-2.2.22/conf/server.crt"SSLCertificateKeyFile "/home/semika/httpd-2.2.22/conf/server.key" |
Раскомментируйте, если некоторые из них уже закомментированы. Затем мы должны сгенерировать файлы сертификатов SSL, server.crt и server.key. Чтобы сгенерировать этот файл, выполните следующие команды.
|
1
2
3
4
|
cd /home/sermika/Downloadsopenssl genrsa -des3 -out server.key 1024openssl req -new -key server.key -out server.csropenssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt |
При выполнении вышеперечисленных команд, он запросит некоторые детали, а также пароль, и вы должны предоставить их. Кроме того, вы должны помнить этот пароль, потому что его необходимо будет предоставить при запуске HTTP-сервера Apache.
Чтобы узнать больше о настройке SSL с HTTP-сервером Apache , обратитесь к этой документации. Теперь внимательно изучите папку / home / semika / Downloads. Вы можете увидеть сгенерированные server.key и server.crt . Вы должны скопировать эти два файла в каталог установки HTTP-сервера Apache.
|
1
2
3
|
cd /home/semika/Downloadscp server.crt /home/semika/httpd-2.2.22/conf/server.crtcp server.key /home/semika/httpd-2.2.22/conf/server.key |
Снова откройте файл httpd-ssl.conf в /httpd-2.2.22/conf/extra . Вы можете видеть элемент </ VirtualHost>, и некоторые свойства определены в этом элементе. Как и в конфигурации mod_jk, здесь мы также должны объявить необходимые URL-адреса контекста приложения или любые другие URL-адреса, которые необходимо защитить с помощью SSL. Вы должны добавить объявление JkMount следующим образом.
|
1
2
3
4
5
6
|
</VirtualHost> ........... ........... JkMount /rainyDay ajp13 JkMount /rainyDay/* ajp13</VirtualHost> |
Теперь попробуйте следующие URL
https: // локальный: 7000 /
Это должно загрузить страницу « Это работает ». Я использовал порт 7000, потому что я изменил порт HTTP-сервера Apache по умолчанию. Вы успешно настроили mod_ssl.
Теперь попробуйте следующий URL, а также.
https: // локальный: 7000 / rainyDay
Вы должны быть в состоянии загрузить приложение.
Тестирование среды.
Нет никакого порядка запуска Apache Tomcat и HTTP-сервера Apache. После запуска серверов вы можете протестировать свою конфигурацию с помощью следующих URL.
HTTP: // локальный: 8080 /
Если вы видите домашнюю страницу Tomcat, настройка Tomcat прошла успешно.
HTTP: // локальный: 8080 / rainyDay
Если вы можете получить доступ к приложению, ваше приложение успешно развернуто на Apache Tomcat.
HTTP: // локальный: 7000 /
Если вы видите страницу «Это работает», сервер Apache HTTP успешно настроен.
HTTP: // локальный: 7000 / rainyDay
Если он загружает ваше приложение, конфигурация mod_jk с HTTP-сервером Apache прошла успешно.
https: // локальный: 7000 /
Опять же, если вы видите страницу «Это работает», конфигурация mod_ssl с сервером Apache HTTP будет успешной.
https: // локальный: 7000 / rainyDay
Опять же, если вы можете получить доступ к приложению, конфигурация mod_ssl с HTTP-сервером Apache будет успешной, а HTTP-сервер Apache правильно обработает все безопасные запросы к приложению rainyDay.
Справка: Как настроить HTTP-сервер Apache с Tomcat по SSL? от нашего партнера JCG Семика локу калуге в блоге Code Box .