Библиотека сайта rus-linux.net
Серверы Linux. Часть I. Серверы Apache и Squid
Оригинал: Apache web serverАвтор: Paul Cobbaut
Дата публикации: 24 мая 2015 г.
Перевод: А.Панин
Дата перевода: 10 июля 2015 г.
Глава 1. Веб-сервер Apache
1.5. Виртуальные серверы для заданных номеров портов в дистрибутиве CentOS
1.5.1. Параметры конфигурации основного веб-сайта
В отличие от дистрибутива Debian, в дистрибутиве CentOS файл конфигурации виртуального сервера не используется для хранения параметров конфигурации основного веб-сайта. Вместо этого по умолчанию веб-сервер передает стандартную страницу с сообщением об ошибке в случае отсутствия файла индексной страницы в соответствующей директории (/var/www/html).
1.5.2. Три дополнительных виртуальных сервера
В данном примере также будут создаваться три дополнительных веб-сайта для потенциальных клиентов, которые желают воспользоваться вашими услугами для создания веб-сайтов своих клубов. Как и прежде, этим клубами являются клуб моделистов поездов под названием "Choo Choo"
, шахматный клуб под названием "Chess Club 42"
и хакспейс под названием "hunter2"
.
Один из способов размещения трех веб-сайтов на одном физическом веб-сервере заключается в размещении каждого из веб-сайтов на отдельном порту. В данном примере показаны файлы конфигурации для трех созданных виртуальных серверов
, по одному для каждого клиента.
[root@CentOS65 ~]# vi /etc/httpd/conf.d/choochoo.conf [root@CentOS65 ~]# cat /etc/httpd/conf.d/choochoo.conf <VirtualHost *:7000> ServerAdmin webmaster@localhost DocumentRoot /var/www/html/choochoo </VirtualHost> [root@CentOS65 ~]# vi /etc/httpd/conf.d/chessclub42.conf [root@CentOS65 ~]# cat /etc/httpd/conf.d/chessclub42.conf <VirtualHost *:8000> ServerAdmin webmaster@localhost DocumentRoot /var/www/html/chessclub42 </VirtualHost> [root@CentOS65 ~]# vi /etc/httpd/conf.d/hunter2.conf [root@CentOS65 ~]# cat /etc/httpd/conf.d/hunter2.conf <VirtualHost *:9000> ServerAdmin webmaster@localhost DocumentRoot /var/www/html/hunter2 </VirtualHost>
Обратите внимание на отличные номера портов 7000, 8000 и 9000. Также обратите внимание на то, что мы использовали уникальные пути к директориям данных веб-сайтов в рамках директив DocumentRoot
.
1.5.3. Три дополнительных порта
Нам придется активировать три указанных порта в рамках файла конфигурации веб-сервера Apache с именем httpd.conf
.
[root@CentOS65 ~]# vi /etc/httpd/conf/httpd.conf [root@CentOS65 ~]# grep ^Listen /etc/httpd/conf/httpd.conf Listen 80 Listen 7000 Listen 8000 Listen 9000
1.5.4. Система контроля доступа SELinux защищает наши порты
Если мы попробуем перезапустить наш веб-сервер, то обнаружим следующее сообщение об ошибке:
[root@CentOS65 ~]# service httpd restart Stopping httpd: [ OK ] Starting httpd: (13)Permission denied: make_sock: could not bind to address 0.0.0.0:7000 no listening sockets available, shutting down
Оно выводится из-за того, что в рамках системы контроля доступа SELinux порты 7000 и 8000 зарезервированы для других целей. Нам придется сообщить системе SELinux о том, что мы хотим использовать эти порты для передачи трафика HTTP.
[root@CentOS65 ~]# semanage port -m -t http_port_t -p tcp 7000 [root@CentOS65 ~]# semanage port -m -t http_port_t -p tcp 8000 [root@CentOS65 ~]# service httpd restart Stopping httpd: [ OK ] Starting httpd:
1.5.5. Три дополнительных веб-сайта
После этого мы должны будем создать три директории, пути к которым были указаны в рамках директив DocumentRoot
.
[root@CentOS65 ~]# mkdir /var/www/html/choochoo [root@CentOS65 ~]# mkdir /var/www/html/chessclub42 [root@CentOS65 ~]# mkdir /var/www/html/hunter2
А также нам придется разместить простейшие индексные страницы веб-сайтов в данных директориях.
[root@CentOS65 ~]# echo 'Choo Choo клуб моделистов поездов Choo Choo' > /var/www/html/choochoo/index.html [root@CentOS65 ~]# echo 'Добро пожаловать в шахматный клуб Chess club 42' > /var/www/html/chessclub42/index.html [root@CentOS65 ~]# echo 'ВсЕ о ХакИнгЕ в ХаКсПеЙсЕ HuNtEr2' > /var/www/html/hunter2/index.html
1.5.6. Активация дополнительных веб-сайтов
Единственный способ активации или деактивации веб-сайтов в дистрибутиве RHEL/CentOS заключается в переименовании или перемещении соответствующих файлов конфигурации. Любой файл с расширением .conf
в директории /etc/httpd/conf.d
будет загружаться веб-сервером Apache. Для деактивации веб-сайта мы можем либо переименовать соответствующий файл конфигурации, либо переместить его в другую директорию.
Файлы конфигурации созданы, поэтому мы можем сообщить веб-серверу Apache о необходимости повторной загрузки данных конфигурации.
[root@CentOS65 ~]# ls /etc/httpd/conf.d/ chessclub42.conf choochoo.conf hunter2.conf README welcome.conf [root@CentOS65 ~]# service httpd reload Reloading httpd:
1.5.7. Тестирование трех веб-сайтов
Протестируем работоспособность веб-сайта клуба моделистов поездов "Choo Choo"
, использующего порт 7000 сервера.
[root@CentOS65 ~]# wget 127.0.0.1:7000 --2014-05-11 11:59:36-- http://127.0.0.1:7000/ Подключение к 127.0.0.1:7000... соединение установлено. HTTP-запрос отправлен. Ожидание ответа... 200 OK Длина: 65 [text/html] Сохранение в: `index.html' 100%[===========================================>] 65 --.-K/s за 0s 2014-05-11 11:59:36 (4.47 MB/s) - `index.html' saved [65/65] [root@CentOS65 ~]# cat index.html Choo Choo клуб моделистов поездов Choo Choo
А также работоспособность сайта шахматного клуба "Chess Club 42"
, использующего порт 8000 сервера.
[root@CentOS65 ~]# wget 127.0.0.1:8000 --2014-05-11 12:01:30-- http://127.0.0.1:8000/ Подключение к 127.0.0.1:8000... соединение установлено. HTTP-запрос отправлен. Ожидание ответа... 200 OK Длина: 77 [text/html] Сохранение в: `index.html.1' 100%[===========================================>] 77 --.-K/s за 0s 2014-05-11 12:01:30 (4.25 MB/s) - `index.html.1' saved [75/75] [root@CentOS65 ~]# cat index.html.1 Добро пожаловать в шахматный клуб Chess club 42
И работоспособность сайта хакспейса "hunter2"
, использующего порт 9000 сервера.
[root@CentOS65 ~]# wget 127.0.0.1:9000 --2014-05-11 12:02:37-- http://127.0.0.1:9000/ Подключение к 127.0.0.1:9000... соединение установлено. HTTP-запрос отправлен. Ожидание ответа... 200 OK Длина: 55 [text/html] Сохранение в: `index.html.2' 100%[===========================================>] 55 --.-K/s за 0s 2014-05-11 12:02:37 (4.49 MB/s) - `index.html.2' saved [55/55] [root@CentOS65 ~]# cat index.html.2 ВсЕ о ХакИнгЕ в ХаКсПеЙсЕ HuNtEr2
После завершения тестирования работоспособности виртуальных серверов следует удалить временные файлы.
[root@CentOS65 ~]# rm index.html index.html.1 index.html.2
1.5.8. Правила межсетевого экрана
После выполнения всех описанных действий попытка доступа к веб-сайту с другой машины не увенчается успехом. Межсетевой экран будет блокировать входящие соединения с веб-сервером. Нам придется разрешить входящие соединения с используемыми виртуальными серверами портами физического сервера.
[root@CentOS65 ~]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT [root@CentOS65 ~]# iptables -I INPUT -p tcp --dport 7000 -j ACCEPT [root@CentOS65 ~]# iptables -I INPUT -p tcp --dport 8000 -j ACCEPT [root@CentOS65 ~]# iptables -I INPUT -p tcp --dport 9000 -j ACCEPT
А если необходимо, чтобы эти правила межсетевого экрана были активны и после перезагрузки системы, нам придется сохранить их.
[root@CentOS65 ~]# service iptables save iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
1.6. Именованные виртуальные серверы в дистрибутиве CentOS
1.6.1. Именованные виртуальные серверы
Участники шахматного клуба и клуба моделистов поездов столкнулись со сложностями, связанными с необходимостью запоминания номеров портов. Они предпочли бы, чтобы доступ к веб-сайтам их клубов осуществлялся по именам.
Мы продолжим работу с тем же сервером, который уже обслуживает три веб-сайта на трех портах. Но в данном случае нам придется сделать так, чтобы эти веб-сайты были доступны по именам choochoo.local
, chessclub42.local
и hunter2.local
.
В первую очередь нам придется активировать механизм именованных виртуальных серверов в рамках файла конфигурации веб-сервера.
[root@CentOS65 ~]# vi /etc/httpd/conf/httpd.conf [root@CentOS65 ~]# grep ^NameVirtualHost /etc/httpd/conf/httpd.conf NameVirtualHost *:80 [root@CentOS65 ~]#
После этого мы должны будем создать файлы конфигурации для новых виртуальных серверов.
[root@CentOS65 ~]# vi /etc/httpd/conf.d/choochoo.local.conf [root@CentOS65 ~]# vi /etc/httpd/conf.d/chessclub42.local.conf [root@CentOS65 ~]# vi /etc/httpd/conf.d/hunter2.local.conf [root@CentOS65 ~]# cat /etc/httpd/conf.d/choochoo.local.conf <VirtualHost *:80> ServerAdmin webmaster@localhost ServerName choochoo.local DocumentRoot /var/www/html/choochoo </VirtualHost> [root@CentOS65 ~]# cat /etc/httpd/conf.d/chessclub42.local.conf <VirtualHost *:80> ServerAdmin webmaster@localhost ServerName chessclub42.local DocumentRoot /var/www/html/chessclub42 </VirtualHost> [root@CentOS65 ~]# cat /etc/httpd/conf.d/hunter2.local.conf <VirtualHost *:80> ServerAdmin webmaster@localhost ServerName hunter2.local DocumentRoot /var/www/html/hunter2 </VirtualHost> [root@CentOS65 ~]#
Обратите внимание на то, что все виртуальные серверы принимают соединения на порту 80
, а их имена заданы с помощью директив ServerName
.
1.6.2. Разрешение доменных имен
Мы должны каким-либо образом осуществлять разрешение установленных доменных имен. Данная операция может осуществляться средствами сервера DNS, который будет обсуждаться в другой главе. В данном же случае мы рассмотрим способ быстрого добавления трех доменных имен в файл /etc/hosts
.
[root@CentOS65 ~]# grep ^192 /etc/hosts 192.168.1.225 choochoo.local 192.168.1.225 chessclub42.local 192.168.1.225 hunter2.local
Учтите, что в вашем случае может использоваться отличный IP-адрес.
1.6.3. Перезапуск и проверка работоспособности веб-сервера
После выполнения команды service httpd reload
веб-сайты должны быть доступны по соответствующим доменным именам.
[root@CentOS65 ~]# service httpd reload Reloading httpd: [root@CentOS65 ~]# wget chessclub42.local --2014-05-25 16:59:14-- http://chessclub42.local/ Распознаётся chessclub42.local... 192.168.1.225 Подключение к chessclub42.local|192.168.1.225|:80... соединение установлено. HTTP-запрос отправлен. Ожидание ответа... 200 OK Длина: 77 [text/html] Сохранение в: index.html 100%[=============================================>] 77 --.-K/s за 0s 2014-05-25 16:59:15 (1014 KB/s) - `index.html' сохранён [77/77] [root@CentOS65 ~]# cat index.html Добро пожаловать в шахматный клуб Chess club 42
1.7. Защита веб-сайта с помощью пароля в дистрибутиве CentOS
Вы можете защитить файлы и директории своего веб-сайта с помощью файла .htaccess
, в котором находится ссылка на файл .htpasswd
. Утилита htpasswd
позволяет создать файл .htpasswd
, который предназначен для хранения идентификатора пользователя и его пароля (в зашифрованном виде).
В примере ниже благодаря флагу -c
создается новый файл .htpasswd
с паролем для пользователя cliff
.
[root@CentOS65 ~]# htpasswd -c /var/www/.htpasswd cliff New password: Re-type new password: Adding password for user cliff [root@CentOS65 ~]# cat /var/www/.htpasswd cliff:QNwTrymMLBctU
Ввиду того, что пользователь с именем rob также хочет получить доступ к файлам веб-сайта, в примере ниже показана методика добавления пароля второго пользователя в существующий файл .htpasswd
.
[root@CentOS65 ~]# htpasswd /var/www/.htpasswd rob New password: Re-type new password: Adding password for user rob [root@CentOS65 ~]# cat /var/www/.htpasswd cliff:QNwTrymMLBctU rob:EC2vOCcrMXDoM [root@CentOS65 ~]#
Пользователи Cliff и Rob используют один и тот же пароль (hunter2), но это не заметно при рассмотрении содержимого файла .htpasswd
из-за отличающихся значений salt.
После этого нам придется создать файл .htaccess
в объявленной в рамках директивы DocumentRoot
корневой директории защищаемого с помощью пароля веб-сайта. В данном примере показана методика создания упомянутого файла.
[root@CentOS65 ~]# cat /var/www/html/hunter2/.htaccess AuthUserFile /var/www/.htpasswd AuthName "Вход исключительно для участников!" AuthType Basic require valid-user
Учтите, что мы защищаем с помощью пароля веб-сайт, который был создан ранее для работы на порту 9000
сервера.
Ввиду того, что мы разместили рассматриваемый веб-сайт хакспейса "hunter2" в поддиректории основного вебсайта сервера, нам придется установить соответствующее значение параметра AllowOverride
в файле конфигурации основного веб-сайта сервера, расположенном по пути /etc/apache2/sites-available/default
, таким образом, как показано ниже.
[root@CentOS65 ~]# vi /etc/httpd/conf/httpd.conf <Directory "/var/www/html"> # # Возможными значениями директивы Options являются значения "None", "All", # или любая комбинация следующих значений: # Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews # # Обратите внимание на то, что значение "MultiViews" должно быть указано *явно* --- # значение "Options All" не подразумевает его автоматическое использование. # # Директива Options является как сложной в использовании, так и важной. Пожалуйста, # обратитесь к документации по адресу http://httpd.apache.org/docs/2.2/mod/core.html#options # для получения дополнительной информации. # Options Indexes FollowSymLinks # # Директива AllowOverride управляет директивами, которые могут использоваться в файлах # контроля доступа .htaccess. Допустимыми значениями являются "All", "None" или любые # комбинации ключевых слов: Options FileInfo AuthConfig Limit # AllowOverride Authconfig # # Перечисление клиентов, которые могут получать данные от этого веб-сервера. # Order allow,deny Allow from all </Directory>
Теперь перезапустите службу веб-сервера Apache с именем httpd
и протестируйте его работоспособность!
Предыдущий раздел: | Оглавление | Следующий раздел: |
Именованные виртуальные серверы в дистрибутиве Debian | Диагностика веб-сервера Apache |