Недавно мне нужно было смоделировать нашу производственную среду развертывания на моем локальном компьютере. Наши производственные приложения работают на 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.bz2 wget http: //www.apache.org/dist/httpd/httpd-2.2.22.tar.bz2.md5 md5sum -c httpd- 2.2 . 22 .tar.bz2.md5 |
После выполнения вышеуказанной команды архив httpd-2.2.22.tar.bz2 будет загружен в вашу папку «Загрузки». Чтобы извлечь архивированный файл архива, выполните следующую команду из папки / Downloads.
1
2
|
cd /home/semika/Downloads tar -xjvf httpd- 2.2 . 22 .tar.bz2 |
Вышеприведенная команда распакует архивированный архив в папку httpd-2.2.22 в папке Downloads. Теперь вы должны решить, куда вы собираетесь установить HTTP-сервер Apache. Я собираюсь установить его в папку /home/semika/httpd-2.2.22. Вы должны создать папку там. Перейдите в папку пользователя и выполните следующую команду, чтобы создать новую папку.
1
2
|
cd /home/semika mkdir 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-dev sudo 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
|
make make install |
Теперь вы можете видеть, что HTTP-сервер Apache установлен в /home/semika/httpd-2.2.22. Ищите папку модулей, вы можете увидеть список установленных модулей. Убедитесь, что он установил mod_ssl.so . Теперь вы можете запустить HTTP-сервер Apache.
1
2
|
cd /home/semika/httpd- 2.2 . 22 /bin sudo ./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 /bin sudo ./apachectl stop |
Установка и настройка Apache Tomcat.
Установка и настройка Apache tomcat не так уж важны, если вы используете такую предварительную настройку. Для полноты урока я объясню это немного. Я использую Apache Tomcat 7.0.25. Вы можете скачать его с веб-сайта Apache и распаковать в какой-нибудь каталог вашего локального компьютера. После этого вы должны установить переменную окружения следующим образом.
1
2
|
export CATALINA_HOME=/home/semika/apache-tomcat- 7.0 . 25 export 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 ajp13 worker.list=ajp13 # Set properties for worker named ajp13 to use ajp13 protocol, # and run on port 8009 worker.ajp13.type=ajp13 worker.ajp13.host=localhost worker.ajp13.port= 8009 worker.ajp13.lbfactor= 50 worker.ajp13.cachesize= 10 worker.ajp13.cache_timeout= 600 worker.ajp13.socket_keepalive= 1 worker.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 location LoadModule jk_module modules/mod_jk.so # Where to find workers.properties # Update this path to match your conf directory location JkWorkersFile /home/semika/apache-tomcat- 7.0 . 25 /conf/workers.properties # Where to put jk logs # Update this path to match your logs directory location JkLogFile /home/semika/apache-tomcat- 7.0 . 25 /logs/mod_jk.log # Set the jk log level [debug/error/info] JkLogLevel info # Select the log format JkLogStampFormat "[%a %b %d %H:%M:%S %Y]" # JkOptions indicate to send SSL KEY SIZE, JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories # JkRequestLogFormat set the request format JkRequestLogFormat "%w %V %T" # Send everything for context /rainyDay to worker ajp13 JkMount /rainyDay ajp13 JkMount /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 builtin SSLEngine on SSLCertificateFile "/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/Downloads openssl genrsa -des3 -out server.key 1024 openssl req - new -key server.key -out server.csr openssl 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/Downloads cp server.crt /home/semika/httpd- 2.2 . 22 /conf/server.crt cp 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 .