Лабораторная работа №1. Конфигурирование и администрирование web-сервера (на примере web-сервера Apache)

advertisement
Лабораторная работа №1. Конфигурирование и администрирование web-сервера (на
примере web-сервера Apache)
Порядок выполнения лабораторной работы:
1. Создать каталог [диск с меткой User]:\infocom.
2. Установить web-сервер Apache в каталог [диск с меткой User]:\infocom\Apache2.2
как консольное приложение, а не как сервис.
3. Запустить web-сервер (Пуск/Все программы/Apache HTTP Server 2.2/Control
Apache Server/Start Apache in Console). Проверить правильность настройки
установленного web-сервера, набрав в строке адреса браузера http://localhost:8080.
4. Если web-сервер не запускается, посмотреть причину незапуска в файле [диск с
меткой User]:\infocom\Apache2.2\logs\error.log
5. Для остановки web-сервера использовать комбинацию клавиш Ctrl+C.
6. Ознакомиться с документацией по Apache. Для этого в файле httpd.conf убрать
комментарий в строке с директивой Include conf/extra/httpd-manual.conf.
Документация будет доступна по адресу http://localhost:8080/manual
7. Создать два виртуальных хоста, основанные на имени (несколько хостов на одном
IP-адресе 127.0.0.1), настроив их на разные порты, например, 8081 и 8082.
Расположить корневые каталоги документов хостов соответственно в [диск с
меткой User]:\infocom\vh1 и [диск с меткой User]:\infocom\vht2.
8. Файлы для регистрации доступа и ошибок расположить в [диск с меткой
User]:\infocom\vhlogs\access.log и [диск с меткой User]:\infocom\vhlogs\error.log.
9. Создать файлы с описанием групп пользователей и отдельных пользователей, и
расположить их в [диск с меткой User]:\infocom\vhsecurity\groups и [диск с меткой
User]:\infocom\vhsecurity\users соответственно.
При настройке виртуальных хостов изменить, при необходимости, настройки
для корневого каталога web-сервера.
10. В корневом каталоге для документов виртуального хоста vh1 создать несколько
каталогов и файлов. Определить различные права доступа к различным каталогам
и файлам:
– доступ разрешен всем;
– доступ разрешен отдельным пользователям;
– доступ разрешен одной группе пользователей;
– доступ разрешен всем зарегистрированным пользователям;
– доступ запрещен всем.
11. Перенести определение прав доступа к одному из каталогов и одному из файлов в
файл .htaccess (именовать файл можно с помощью любого файлового менеджера
или с помощью командной строки Windows), расположенный непосредственно в
каталоге, для которого определяются права доступа.
12. В корневом каталоге для документов виртуального хоста vh2 организовать
расширенную индексацию на основе файла [диск с меткой
User]:\infocom\Apache2.2\conf\extra\httpd-autoindex.conf.
13. Удалить Apache (Пуск/Панель управления/Установка и удаление программ).
14. Удалить каталог [диск с меткой User]:\infocom.
Содержание отчета (отчет в электронном виде,
имя файла с отчетом – АМ-000 Иванов И.И.):
 титульный лист (один для всех лабораторных работ,);






задание на лабораторную работу №1;
дерево созданных каталогов;
файл конфигурации [диск с меткой User]:\infocom\Apache2.2\conf\extra\httpd-vhosts.conf;
файлы с именами и группами пользователей;
файл .htaccess;
файл конфигурации [диск с меткой User]:\infocom\Apache2.2\conf\extra\httpdautoindex.conf
 выводы по работе.
Методические указания:
Web-сервер Apache
Apache – один из широко используемых в Internet web-серверов. В настоящее время
программное обеспечение Apache установлено более чем на половине серверов мира.
Для управления web-сервером Apache используется основной файл конфигурации
httpd.conf. В нем с помощью директив определяется, как web-сервер должен работать с
локальными ресурсами, отвечая на запрос, указывается, с какими файлами пользователи
могут выполнять определенные операции. Настройка конфигурационного файла web-сервера
– самый ответственный шаг при его установке. Web-сервер перечитывает
конфигурационный файл при запуске. Если web-сервер работает, то при изменении файла
конфигурации следует перезапустить Apache.
В файле httpd.conf содержатся директивы, которые управляют работой Apache в
целом, влияют на общее функционирование Apache, определяют параметры основного webсервера, отвечающего на запросы, почти все эти директивы могут быть использованы для
настройки виртуальных хостов.
В конце файла httpd.conf перечислены директивы Include, позволяющие подключить
дополнительные конфигурационные файлы.
Виртуальные хосты
Виртуальные хосты – несколько web-сайтов с различными именами, использующие
один и тот же IP-адрес, работающие под управлением одного экземпляра web-сервера
Apache.
Сферы применения виртуальных хостов:
 создание отдельных web-сайтов со своими адресами для различных компаний,
организаций и индивидуальных пользователей;
 организация общедоступного и внутреннего web-сайтов в виде двух виртуальных хостов;
 использование виртуального хоста для проверки или разработки web-сайта.
Директива NameVirtualHost
NameVirtualHost *:80
Позволяет создавать виртуальные хосты, основанные на имени (несколько web-сайтов
на одном IP-адресе.)
Директива VirtualHost
Блочная директива, позволяющая сгруппировать директивы, определяющие режимы
работы виртуального хоста.
<VirtualHost *:80>
…
</VirtualHost>
Пример: создать виртуальный хост test.
<VirtualHost *:80>
ServerName test
ServerAdmin admin@test
DocumentRoot e:/infocom/test/www
CustomLog e:/infocom/access.log common
ErrorLog e:/infocom/error.log
</VirtualHost>
Для каждого виртуального хоста используется своя директива DocumentRoot, так как
именно по этой причине и создаются виртуальные хосты. Файлы регистрации доступа и
ошибок могут быть одними и теми же.
Директивы AuthType, AuthName, AuthGroupFile, AuthUserFile
Для организации доступа к каталогам и файлам используются следующие директивы.
AuthType type
Задает тип контроля полномочий. Возможное значение – Basic.
AuthName realm
Задает область (realm), в которой действительны имена и пароли пользователей.
Каждая пара имя/пароль действует в определенной области. Возможное значение – Test.
AuthGroupFile file_name
Задает имя файла, в котором содержится информация об именах групп и именах
пользователей, входящих в эти группы. Этот файл текстовый и имеет следующий формат:
name_group1: name_user11 name_user12 …
name_group2: name_user21 name_user22 …
…
AuthUserFile file_name
Задает имя файла, в котором содержится информация об именах пользователей и их
паролях. Пароли хранятся в зашифрованном виде. Этот файл текстовый и имеет следующий
формат:
name_user1: password1
name_user2: password2
…
Пример: создать файлы groups и users с информацией о группах и пользователях.
Имена файлов выбираются произвольно, как и их расположение, единственное соображение
безопасности заключается в том, что каталог с файлами лучше хранить выше каталога,
указанного в директиве DocumentRoot.
Файл groups
adm: admin
group1: anna alex
group2: user1 user2 user3
Файл groups может быть создан с помощью простейшего текстового редактора
Файл users
admin:$apr1$yd5.....$Bkv.cPIQk/L7EOF2d2DNO.
anna:$apr1$Ze5.....$k/uC6j.ysELGdCK66BD6v0
alex:$apr1$Gf5.....$TZUpPFixB0h4pwvpfRkxl0
user1:$apr1$Sj5.....$HBg8Io5hbm/9quebHF3O01
user2:$apr1$Og5.....$WKYIDjTsbk.J.PDIhXu5x1
user3:$apr1$Xi5.....$AfQzJlIxyjiFh6KX23cE30
Для создания и изменения файла users используется Apache-утилита
..\apache\bin\htpasswd.exe. Для получения справочной информации ее можно запустить с
ключом -?. Предварительно создается пустой файл. Для добавления в файл имен
пользователей и их паролей используется команда …\htpasswd.exe file_name user_name.
После создания файлов groups и users в блочную директиву <VirtualHost> можно
добавить следующие директивы:
<Directory …>
AuthType Basic
AuthName Test
AuthGroupFile e:/infocom/groups
AuthUserFile e:/infocom/users
</Directory>
Директива Require
После создания файлов groups и users можно установить права доступа к каталогам и
файлам для всех пользователей, для групп пользователей, для отдельных пользователей или
запретить доступ всем пользователям.
Require [user name_user1 name_user2 …]
доступ разрешен всем перечисленным пользователям
Require [group name_group1 name_ group2 …]
доступ разрешен всем пользователям из групп, перечисленных в файле groups
Require [valid-user]
доступ разрешен всем пользователям, перечисленным в файле users
Пример:
Require valid-user
#Require user anna user1
#Require group adm
Если последовательно убирать комментарии, то будет разрешен доступ или всем
зарегистрированным пользователям, или пользователям anna и user1, или пользователям,
принадлежащим группе adm
Директива Require разрешает доступ пользователям на персональной основе. Для
разрешения/запрещения доступа всем пользователям или из конкретных ip-адресов, хостов,
доменов используются директивы Allow from и Deny from. Эти директивы могут иметь
следующие параметры: all – доступ разрешен/запрещен всем, имя хоста – доступ
разрешен/запрещен только данному хосту, имя домена – доступ разрешен/запрещен только
хостам из данного домена.
Порядок, в котором применяются директивы Allow from и Deny from, определяется не
порядком их следования в конфигурационном файле, а директивой Order.
По умолчанию сначала выполняется директива Deny from, а затем Allow from. Если
клиент упомянут в директиве Deny from, ему запрещается доступ при условии, что он не
упомянут в Allow from. Если клиент не назван ни в одной из этих директив, ему доступ
разрешается.
Порядок можно изменить, использовав директиву Order allow,deny. Это значит, что
доступ клиенту, который указан в директиве Allow from разрешен, если только он не
упомянут в Deny from. Если ни в одной из этих директив этот клиент не указан, доступ ему
запрещается.
Директива Files
<Files name_file>
…
</Files>
Эта директива используется для организации доступа к файлу.
Пример: каталог www содержит файл secret.html
<Directory …/www>
AuthType Basic
Auth Test
AuthGroupFile …/groups
AuthUserFile …/users
Require valid-user
<Files secret.html>
Require user anna user1
</Files>
</Directory>
Директива AccessFileName
При изменении прав доступа в файле httpd.conf каждый раз требуется перезапускать
Apache. Для того чтобы избежать перезапуска, можно поместить директивы, определяющие
права доступа к каталогам и файлам непосредственно в каталог. Для определения имени
файла с директивами используется директива AccessFileName.
AccessFileName file_name
Пример: AccessFileName htaccess
Если будут изменяться директивы в файле htaccess, то это не потребует перезапуска
Apache.
Пример: использование файла htaccess
Файл htaccess
<Files secret.html>
Require user anna user1
</Files>
В файл htaccess также можно помещать и директивы из блочной директивы
<Directory>, но только без ее указания.
Директива IndexOptions
В том случае, если каталог не содержит файла index.html, Apache создает файл Index
of/, который в общем случае выглядит не очень хорошо. Для изменения внешнего вида
можно использовать улучшенную индексацию.
IndexOptions FancyIndexing
Данная директива позволяет применять расширенную индексацию.
Директива IndexIgnore
IndexIgnore file1 file2 …
Директива позволяет исключить файлы из списка. Несколько директив IndexIgnore
дополняют друг друга.
Пример: исключение из списка всех файлов с расширением jpg и родительского
каталога (например, из соображений безопасности).
<Directory …>
IndexOptions FancyIndexing
IndexIgnore *.jpg ..
</Directory>
Директива AddIcon
Первый аргумент этой директивы – имя файла со значком, второй – тип файла, к
которым значок следует добавить. Если в качестве второго аргумента использовать значение
^^DIRECTORY^^, то новый значок получит подкаталог.
Пример:
Alias “/icons” “/apache/icons”
AddIcon icons/first.gif *.html
AddIcon icons/second.gif ^^DIRECTORY^^
Директива AddDescription
Позволяет добавить описание для определенных файлов.
Пример:
AddDescription “Это файлы с HTML-документами” *.html
Директивы HeaderName и ReadmeName
Позволяют формировать верхний и нижний колонтитулы индекса. Эти директивы
имеют только один аргумент – имя файла. Для того чтобы имена файлов, указанные в
директивах HeaderName и ReadmeName, не отображались в перечне, для них используется
директива IndexIgnore.
Download