32046

Организация Web-доступа в среде zLinux на сервере z9 BC

Дипломная

Информатика, кибернетика и программирование

Целью работы является обеспечить webдоступ на сервер z9 BC используя программное обеспечение установленное на IBM z9 BC а именно HTTP сервер pche. Webсервер pche будет предоставлять доступ к ресурсам сервера пользователям подключенным к внутренней сети. Webсервер pche [7.1 Описание webсервера pche [7.

Русский

2013-09-01

657 KB

2 чел.

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

Федеральное государственное бюджетное образовательное

учреждение высшего профессионального образования

«Национальный исследовательский ядерный университет  «МИФИ»

ОБНИНСКИЙ ИНСТИТУТ АТОМНОЙ ЭНЕРГЕТИКИ – филиал НИЯУ МИФИ

Факультет “Кибернетики”

Кафедра “Компьютерные системы, сети и технологии”

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА К ДИПЛОМНОМУ ПРОЕКТУ

на тему:

     

«Организация Web-доступа в среде zLinux на сервере z9 BC»

Выполнил       студент V курса

       группы ВТ-3-C06

       специальности 230101

       очного отделения

       Лазутин А.В.

         /_______/

Руководитель        доцент кафедры КССТ

       Сапунов В.Д.

         /_______/

Рецензент       заведующий отдела развития

информационных технологий

к.т.н. ГУ «ВНИИГМИ-МЦД»

       Шаймарданов В.М.

         /_______/

-  Обнинск 2011 г. -


Аннотация

Дипломная работа посвящена организации web-доступа в среде zLinux на сервере z9 BC. В качестве среды zLinux использовалась операционная система SUSE Linux Enterprise Server 11 для System z.

Целью работы является обеспечить web-доступ на сервер z9 BC, используя программное  обеспечение, установленное на IBM z9 BC, а именно HTTP сервер Apache.

Web-сервер Apache будет предоставлять доступ к ресурсам сервера пользователям, подключенным к внутренней сети.


Содержание

[1]
Аннотация

[2]
Содержание

[3]
Обозначения и сокращения

[4]
Введение

[5]
Постановка задачи

[6]
1. SUSE Linux Enterprise Server для System z

[6.1] 1.1 Обзор возможностей

[6.1.1] 1.1.1 Объединение серверов

[6.1.2] 1.1.2 Поддержка встроенных средств для Linux (IFL)

[6.1.3] 1.1.3 Более простые и эффективные системы управления

[6.1.4] 1.1.4 Расширенный менеджер безопасности

[6.1.5] 1.1.5 Высокая доступность и кластеризация

[6.1.6]
1.1.6 Улучшенная производительность

[6.2]
1.2 Техническая информация

[6.2.1] 1.2.1 Системные требования

[6.2.1.1] Минимальные системные требования для установки Linux сервера

[6.2.1.2] Минимальные системные требования для работы Linux сервера

[6.2.1.3] Общие рекомендации

[6.2.2] 1.2.2 Ограничения ядра

[6.2.3] 1.2.3 Поддержка файловых систем

[7]
2. Web-сервер Apache

[7.1] 2.1 Описание web-сервера Apache

[7.2]
2.2 Инсталляция web-сервера Apache

[7.2.1] 2.2.1 Сборка web-сервера Apache

[7.2.2] 2.2.2 Установка web-сервера Apache

[7.2.3] 2.2.3 Запуск web-сервера Apache

[7.2.4]
2.2.4 Остановка и перезапуск web-сервера Apache

[7.2.5]
2.2.5 Обновление web-сервера Apache

[7.3]
2.3 Конфигурирование web-сервера Apache

[7.3.1] 2.3.1 Основные настройки web-сервера Apache

[7.3.2]
2.3.2 Настройка виртуальных хостов

[7.3.3] 2.3.3 Настройки авторизации и аутентификации

[8]
3. Безопасность жизнедеятельности

[8.1] 3.1 Основные негативные воздействия и борьба с ними

[8.2] 3.2 Выбор помещения

[8.3] 3.3 Выбор стола и его ориентации

[8.4] 3.4 Выбор и установка кресла

[8.5] 3.5 Условия эксплуатации компьютера

[8.6] 3.6 Требования к электропитанию компьютера

[8.7] 3.7 Меры безопасности при работе на компьютере

[9]
Заключение

[10]
Список используемых источников

[11]
Приложение 1

[12]
Приложение 2

[13]
Приложение 3


Обозначения и сокращения

zLinux  − операционная система Linux для линейки серверов с Z архитектурой

z9 BC   − сервер IBM System z9 Business Class

z/VM    – диалоговая, многопользовательская операционная система

System Z   – бренд компании IBM для обозначения линейки мейнфреймов с Z архитектурой

YaST    – программный пакет в ОС SuSE Linux, являющийся  утилитой конфигурации операционной системы и установки/обновления пакетов с ПО.

Web  – распределенная система, предоставляющая доступ к связанным между собой документам, расположенным на различных компьютерах, подключенных к Интернету.

HTTP    – протокол прикладного уровня передачи данных (HyperText Transfer Protocol)

СУБД    – система управления базами данных

SSL    – криптографический протокол, который обеспечивает установление безопасного соединения между клиентом и сервером

CGI    – стандарт интерфейса, используемого для связи внешней программы с web-сервером

SSI   – язык для динамической «сборки» веб-страниц на сервере из отдельных составных частей и выдачи клиенту полученного HTML-документа

NAT    – механизм в сетях TCP/IP, позволяющий преобразовывать IP-адреса транзитных пакетов

MPM    – мультипроцессный модуль обработки запросов

.NET    – программная платформа, разработанная корпорацией Microsoft

MD5   – 128-битный алгоритм хеширования

Mono  – проект по созданию полноценного воплощения системы .NET Framework на базе свободного программного обеспечения

SLES SUSE Linux Enterprise Server


Введение

В настоящее время находит широкое применение так называемая трехуровневая модель создания приложений типа клиент-сервер. Трехуровневая архитектура приложения типа клиент-сервер требует реструктуризации обычного приложения на три части, а иногда и более. При этом выделяют следующие уровни:

  •  клиентский уровень – обеспечивает отображение результатов обработки и может включать в себя логические функции обработки информации,
  •  уровень сервера приложений – выполняет основную часть обработки информации,
  •  уровень сервера баз данных – обеспечивает управление данными и доступ к ним.

Все три уровня могут быть реализованы как на одном, таки и на нескольких физических компьютерах.

Учитывая интенсивное развитие работ, связанных с представлением данных в сети Интернет, когда создаются различного рода сайты, позволяющие ученым оперативно обмениваться информацией, трехуровневая модель требует введения еще одного сервера, а именно web-сервера. В этом случае в качестве клиентского программного обеспечения  выступает стандартный браузер, рассматриваемый как тонкий клиент, а web-сервер осуществляет взаимодействие с сервером приложений и сервером баз данных.

Данная схема позволяет реализовывать целые тематические web-порталы. Такой портал будет представлять собой основанное на браузере приложение, позволяющее пользователям получить доступ к самой разнообразной  информации, вносить в нее свой вклад и принимать на ее основе решения независимо от своего структурного подразделения и фактического местоположения. Такой портал в разы увеличивает скорость поиска информации и упрощает доступ к ней.

Основной целью данного диплома будет рассмотрение web-сервера и последующая его настройка.

Данный web-сервер будет использоваться для нужд внутренней локальной сети, состоящей из трех подсетей.  Пользователи этой сети будут иметь возможность использовать ресурсы, расположенные на сервере, получая к ним доступ по средствам одного лишь браузера.


Постановка задачи

В соответствии с формулировкой задания была поставлена следующая задача:

в среде SUSE Linux Enterprise Server 11 для System Z установить и настроить HTTP сервер Apache, оптимизированный под нужды внутренней сети.

В ходе решения поставленной задачи должны быть выполнены следующие шаги:

  1.  Поиск и изучение литературы по установке и настройке HTTP-сервера Apache
  2.  Сборка и установка HTTP-сервера Apache
  3.  Конфигурирование HTTP-сервера Apache
    •  настройка виртуальных хостов
      •  настройка доступа к виртуальным хостам

4. Тестирование работы HTTP-сервера Apache


1. SUSE Linux Enterprise Server для System z

1.1 Обзор возможностей

1.1.1 Объединение серверов

Объединение серверов с помощью z/VM

Novell и IBM разработали Linux для мэйнфреймов с возможностью использовать преимущества виртуализации. При запуске SUSE Linux Enterprise Server на мэйнфрейме IBM System Z можно создавать несколько виртуальных машин, которые работают на одном процессоре, и работать с несколькими виртуальными серверами параллельно. Данная возможность освобождает от необходимости приобретения дополнительного аппаратного обеспечения. Кроме того, виртуальные сервера позволяют объединять несколько физических систем.

Запуск .NET приложений на System Z

Расширение Mono на SUSE Linux Enterprise и инструменты для Visual Studio позволяют корпоративным разработчикам и независимым разработчикам разрабатывать и запускать Windows .NET приложения на SUSE Linux Enterprise Server. Mono позволяет использовать существующие .NET-приложения и разрабатывать новые, запуская их на Linux, тем самым снижая затраты и повышая производительность сервера.

1.1.2 Поддержка встроенных средств для Linux (IFL)

IFL является специализированным процессором от IBM, который обрабатывает несколько рабочих нагрузок Linux. IFLs позволяет купить одну лицензию программного обеспечения и использовать ее на многих виртуальных машинах Linux, что делает Linux на мэйнфреймах еще более доступным. IFLs позволяет избежать покупки дополнительных, более дорогих центральных процессоров для System z.

1.1.3 Более простые и эффективные системы управления

Управления пакетами с ZYPP

SUSE Linux Enterprise Server включает ZYPP - систему быстрого обновления на любом дистрибутиве Enterprise Linux. Novell имеет оптимизированный ZYPP для повышения производительности и точности, который более многофункционален, чем такие инструменты, как YUM и Smart.

YaST / AutoYaST, WebYaST

YaST предлагает удобные средства для установки, настройки и управления всеми аспектами операционной системы, как во время установки, так и после нее. AutoYaST позволяет автоматические и удаленные системы конфигурации для крупных организаций, а WebYaST предлагает все функциональные возможности YaST для пользователей, используя веб-браузер.

Starter система

SUSE Linux Enterprise Starter – это система для System Z, позволяющая предварительно настроить установку сервера, что делает развертывание системы более легким, устраняя необходимость в отдельной системе для размещения установочных файлов. Кроме того, этот инструмент не требует подключение к сети вне мэйнфреймов для установки Linux серверов.

1.1.4 Расширенный менеджер безопасности

Приложение AppArmor® входит в состав SUSE Linux Enterprise и является эффективным, простым в использовании приложением, обеспечивающим основы безопасности для Linux. Оно активно защищает операционную систему и приложения от внешних и внутренних угроз и атак. AppArmor включает политики по умолчанию, которые обеспечивают безопасность даже самых сложных приложений с минимальными затратами времени и ресурсов.

1.1.5 Высокая доступность и кластеризация

Novell включает расширение SUSE Linux Enterprise High Availability в каждой подписки на SUSE Linux Enterprise Server для System Z. Это расширение позволяет поддерживать непрерывность бизнеса, защиты целостности данных и снижения времени незапланированных простоев для критически важных рабочих нагрузок. Оно обеспечивает все необходимые службы мониторинга, обмена сообщениями и управления ресурсами кластера. Имеет ту же функциональность что и решения сторонних производителей, но по более доступной цене.


1.1.6 Улучшенная производительность

SUSE Linux Enterprise Server для System Z является выбором № 1 для запуска Linux на мэйнфреймах IBM, так как данная операционная система оптимизирована для мейнфреймов, как никакая друга ОС Linux.

Динамическое добавление / удаление

Динамическое добавление/удаление центральных процессоров (CPUs) и памяти позволяет настроить ресурсы для гостей Linux под z/VM во время работы мейнфрейма. Таким образом, процессоры могут быть выделены динамически гостям Linux и могут использоваться по мере необходимости. В результате, время работы для гостей Linux и приложений увеличивается.

Управление вертикальными процессорами

С помощью этой функции вы можете переключаться между горизонтальной и вертикальной поляризацией процессора через атрибут Sysfs. Как результат, можно достичь максимальной производительности системы Z серверов путем поддержания неоднородного доступа к памяти каждого сервера (NUMA).

Поддержка больших страниц памяти

Теперь система может выделять память для процесса в блоки по 2 Мб вместо 4 Кб. По мере увеличения объема памяти, необходимые таблицы страниц потребляют огромное количество физической памяти. Меньшее число больших по объему страниц может решить эту проблему, и тем самым увеличить производительность путем улучшения пропускной способности.

Следующее поколение криптографического HW драйвера

SUSE Linux Enterprise Server для System Z включает аппаратное ускорение шифрования, что увеличивает число защищенных транзакций в секунду. Такие функции, как разгрузка центрального процессора и повышение безопасности помогают снизить риск и расходы на техническое обслуживание.


1.2 Техническая информация

1.2.1 Системные требования

Минимальные системные требования для установки Linux сервера

  •  Локальная установка: 512 Мб оперативной памяти
  •  Используя Secure Shell (SSH): 512 Мб оперативной памяти
  •  Через Virtual Network Computing (VNC) с использованием File Transfer Protocol (FTP): 512 Мб оперативной памяти

Минимальные системные требования для работы Linux сервера

  •  512 Мб оперативной памяти
  •  750 Мб на жестком диске для программного обеспечения
  •  750 Мб на жестком диске для хранения пользовательских данных

Общие рекомендации

  •  От 512 Мб до 4 Гб оперативной памяти, минимум по 256 Мб на каждый процессор
  •  4 Гб на жестком диске
  •  Сетевой интерфейс (Ethernet, беспроводной или модем)
  •  Для Xen виртуального хост-сервера минимум по 512 МБ оперативной памяти для каждого виртуального хоста сервера
  •  Для веб-серверов требуется дополнительная оперативная память для улучшения кэширования, а также дополнительные процессоры для улучшения производительности веб-приложений
  •  Для серверов баз данных требуется дополнительная оперативная память для улучшения кэширования и использования нескольких дисков для параллельного ввода / вывода
  •  Для файловых серверов требуется дополнительная память и диски, или избыточный массив недорогих дисков (RAID) для ускорения системы ввода/вывода

1.2.2 Ограничения ядра

В следующей таблице приведены ограничения для ядра, используемого в SUSE Linux Enterprise 11 с пакетом обновления SP1. Эти ограничения распространяются на все продукты SUSE Linux Enterprise Server и SUSE Linux Enterprise Desktop, основанные на версии 11 SP1 с версией ядра 2.6.32.

Таблица 1. Ограничения ядра версии 2.6.32

SLE 11 SP1 (2.6.32)

x86

ia64

x86_64

s390x

ppc64

разрядность CPU,бит

32

64

64

64

64

Макс. число логических процессоров

32

до 4096

до 4096

64

до 1024

Макс. RAM
(теоретическое / сертифицированое)

64 GiB / 16 GiB

1 PiB/8+ TiB

64 TiB/16 TiB

4 TiB/256 GiB

1 PiB/512 GiB

Макс. подкачки

до 31 * 64 ГБ

Макс. Процессов

1048576

Макс. размер
в блочных устройств

до 16 TiB

до 8 EiB

Макс. пользовательское пространстве / пространство для ядра

3/1 GiB

2 EiB/ нет данных

128 TiB/ 128 TiB

нет данных

2 TiB/2 EiB

1.2.3 Поддержка файловых систем

SUSE Linux Enterprise Server поддерживает ext3, ReiserFS, XFS, и OCFS2. Текущей файловой системой по умолчанию для установки новых SUSE Linux Enterprise 11 является ext3. OCFS2 является кластерной файловой системой. XFS используется для крупномасштабных систем с большой нагрузкой и несколькими параллельными операциями чтения и записи (например, для баз данных и файловых серверов с Samba, NFS и т.д.).

Так же может потребоваться использовать две файловые системы одновременно ext3 и XFS.

На Рис. 1 представлена сравнительная характеристика возможностей файловых систем поддерживаемых SUSE Linux Enterprise Server.

Рис. 1 Возможности файловых систем


2. Web-сервер Apache

2.1 Описание web-сервера Apache

Apache HTTP-сервер являете свободно распространяемым web-сервером. Apache так же является кроссплатформенным ПО, и поддерживает операционные системы Linux, BSD, Mac OS, Microsoft Windows, Novell NetWare, BeOS.

Основными достоинствами Apache являются надёжность и гибкость конфигурации. Он позволяет подключать внешние модули для предоставления данных, использовать СУБД для аутентификации пользователей, модифицировать сообщения об ошибках и т. д.

Сервер Apache состоит из ядра и подключаемых модулей. Ядро Apache включает в себя основные функциональные возможности, такие как обработка конфигурационных файлов, протокол HTTP и система загрузки модулей. Ядро (в отличие от модулей) полностью разрабатывается Apache Software Foundation, без участия сторонних программистов. Теоретически, ядро Apache может функционировать в чистом виде, без использования модулей, но функциональность такого решения крайне ограничена. Модули могут быть включены в состав сервера, как в момент компиляции, так и загружены динамически, через директивы конфигурационного файла.

В модулях реализуются такие вещи, как:

  •  Поддержка языков программирования.
  •  Добавление функционала.
  •  Исправление ошибок или модификация основных функций.
  •  Усиление безопасности.

Ниже представлены базовые модули, входящие в состав сервера при сборке по умолчанию:

  •  access  авторизация доступа
  •  actions   позволяет привязать CGI скрипт к обработчику, MIME типу или методу запроса
  •  alias   отображение URL в файловую систему и перенаправление
  •  asis   обработчик send-as-is позволяет обрабатывать файлы, которые содержат часть заголовков ответа в себе
  •  auth    аутентификация Basic, построенная на текстовых файлах
  •  autoindex   в отсутствии сделанного вручную индексного файла каталога (задаётся модулем dir) создаёт его "на ходу" из списка находящихся в каталоге файлов
  •  cgi   обработчик CGI; устанавливается по умолчанию для prefork MPM
  •  cgid   обработчик CGI; устанавливается по умолчанию для гибридных MPM
  •  dir   отображение имени каталога, указанного в URL
  •  env   устанавливает и изменяет переменные окружения
  •  imap   обработка графических карт сервером
  •  include   реализует фильтр SSI
  •  log_config   журнал доступа
  •  mime   ассоциация файла по суффиксу имени с его обработкой (обработчики и фильтры) и типом содержимого (MIME тип, язык, набор символов и кодировка)
  •  negotiation   позволяет серверу выбрать один из возможных документов для обслуживания клиента на основе характеристик каждого клиента
  •  setenvif   позволяет устанавливать переменные окружения в зависимости от характеристик запроса
  •  status   выдача информации о текущем состоянии сервера
  •  userdir   директива UserDir позволяет определить каталог в домашнем каталоге пользователя, который надо использовать при обработке URL вида http://www.company.ru/~username/

Модули расширения, которые необходимо добавить явно при сборке Apache:

  •  auth_anon   доступ анонимных клиентов к закрытым каталогам по ftp
  •  auth_dbm   аутентификация Basic, построенная на DBM
  •  cern_meta   позволяет добавлять заголовки в ответ;

для каждого файла создаётся отдельный файл с дополнительными заголовками; MetaDir, MetaFiles, MetaSuffix)

  •  dav и dav_fs   реализация протокола WebDAV
  •  deflate   реализует фильтр DEFLATE
  •  expires   управление содержимым заголовков Expires и Cache-Control
  •  ext_filter   позволяет использовать внешнюю программу в качестве фильтра
  •  headers   удаление и замена заголовков запросов и ответов
  •  info   выдача информации о конфигурации сервера
  •  log_forensic   записывает в отдельный журнал полные заголовки каждого запроса для отладки тяжёлых случаев
  •  logio   считает входящие и исходящие байты для каждого запроса, что позволяет использовать форматы %I и %O в модуле log_config)
  •  mime_magic   определяет MIME тип по содержимому файла
  •  proxy   позволяет Apache работать как прокси-сервер;

для обслуживания протокола FTP требуется модуль proxy_ftp, HTTP - proxy_http, CONNECT/SSL - proxy_connect и ssl; для кэширования может использоваться модуль cache; может работать в режиме прямого (ProxyRequests) и обратного (ProxyPass, RewriteRule) прокси (балансировка загрузки, кэширование, обход экрана или слияние адресных пространств нескольких серверов)

  •  proxy_connect   вспомогательный модуль для модуля proxy
  •  proxy_ftp   вспомогательный модуль для модуля proxy
  •  proxy_http   вспомогательный модуль для модуля proxy
  •  rewrite   более мощное средство преобразования URL, чем alias
  •  so   загрузка дополнительных модулей при запуске и перезапуске сервера вместо пересборки сервера; директивы LoadModule, LoadFile
  •  speling   пытается скорректировать опечатки в URL
  •  ssl   поддержка криптографического протокола, который обеспечивает установление безопасного соединения между клиентом и сервером
  •  suexec   позволяет запускать CGI программы под указанным именем пользователя и группы
  •  unique_id   уникальный идентификатор для каждого запроса
  •  usertrack   отслеживание клиентов с помощью куки
  •  vhost_alias   организация массового виртуального хостинга, имя из заголовка запроса "Host:" используется для определения каталога, из которого брать файлы

В отличие от первой версии Apache 2 может использовать различные MPM модули. Сервер может быть собран только с одним MPM. MPM осуществляет запуск процессов, потоков и привязку запросов клиентов к процессу или потоку. Область действия всех директив, кроме AssignUserID - сервер.

Типы MPM:

  •  prefork - MPM с ветвлением; никаких потоков, каждому запросу выделяется отдельный процесс, процессы порождаются заранее и используются при обработке последовательных запросов; директивы:
    •  MinSpareServers число (минимальное число запасных процессов; недостающие процессы создаются с темпом 1 штука в секунду)
    •  MaxSpareServers число (максимальное число запасных процессов; лишние процессы завершаются)
  •  worker - гибридный MPM: запускается множество процессов, каждый из которых имеет множество обслуживающих потоков; директивы:
    •  ThreadsPerChild число (число потоков на каждый обслуживающий процесс; создаются при запуске процесса, число потоков никогда не меняется)
  •  leader - экспериментальный вариант MPM worker (--with-mpm=leader и --enable-nonportable-atomics=yes)
  •  threadpool - экспериментальный вариант MPM worker
  •  perchild - MPM с фиксированным количеством процессов, процессы запускаются с различными полномочиями и могут обслуживать указанное количество потоков; используются директивы:
    •  NumServers число-процессов
    •  ChildPerUserID uid gid число-процессов
    •  AssignUserID uid gid (используется при описании виртуального сервера)
    •  StartThreads число (5 штук на процесс для perchild, сколько обслуживающих потоков запускать в начале работы)
    •  MaxThreadsPerChild число (64)

Система конфигурации Apache

Система конфигурации Apache основана на текстовых конфигурационных файлах. Имеет три условных уровня конфигурации:

  •  Конфигурация сервера (httpd.conf).
  •  Конфигурация виртуального хоста (httpd.conf c версии 2.2 extra/httpd-vhosts.conf).
  •  Конфигурация уровня директории (.htaccess).

Имеет собственный язык конфигурационных файлов, основанный на блоках директив. Практически все параметры ядра могут быть изменены через конфигурационные файлы, вплоть до управления MPM. Большая часть модулей имеет собственные параметры.

Apache имеет встроенный механизм виртуальных хостов. Он позволяет полноценно обслуживать на одном IP-адресе множество сайтов (доменных имён), отображая для каждого из них собственное содержимое. Для каждого виртуального хоста можно указать собственные настройки ядра и модулей, ограничить доступ ко всему сайту или отдельным файлам.

Apache имеет различные механизмы обеспечения безопасности и разграничения доступа к данным. Основными являются:

  •  Ограничение доступа к определённым директориям или файлам.
  •  Механизм авторизации пользователей для доступа к директории по методу HTTP-Авторизации (mod_auth_basic) и digest-авторизации (mod_auth_digest).
  •  Ограничение доступа к определённым директориям или всему серверу, основанное на IP-адресах пользователей.
  •  Запрет доступа к определённым типам файлов для всех или части пользователей, например, запрет доступа к конфигурационным файлам и файлам баз данных.
  •  Существуют модули, реализующие авторизацию через СУБД.

В некоторых MPM-модулях присутствует возможность запуска каждого процесса Apache используя различные uid и gid с соответствующими этим пользователям и группам пользователей. Также, существует механизм suexec, используемый для запуска скриптов и CGI-приложений с правами и идентификационными данными пользователя. Для реализации шифрования данных, передающихся между клиентом и сервером, используется механизм SSL, реализованный через библиотеку OpenSSL.

Переменные окружения

Сервер позволяет обмениваться информацией с внешними программами (CGI) и между модулями с помощью переменных окружения. Имя переменной должно начинаться с буквы и может содержать буквы, цифры и символ нижнего подчёркивания. Перед вызовом CGI сервер устанавливает переменные запроса в соответствии со стандартом (некоторые модуля добавляют свои переменные):

  •  DOCUMENT_ROOT="абсолютное-имя-директории-документов-сервера"
  •  GATEWAY_INTERFACE="CGI/1.1"
  •  HTTP_ACCEPT="image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png"
  •  HTTP_ACCEPT_CHARSET="iso-8859-1,*,utf-8"
  •  HTTP_ACCEPT_LANGUAGE="ru, en"
  •  HTTP_CACHE_CONTROL="max-age=259200"
  •  HTTP_CONNECTION="keep-alive"
  •  HTTP_HOST="www.printhouse.ru" - если клиент посылает поле HOST в запросе
  •  HTTP_IF_MODIFIED_SINCE="Wednesday, 26-Jul-00 15:20:17 GMT; length=1437"
  •  HTTP_USER_AGENT="Mozilla/4.05 [en] (X11; I; SunOS 5.5 sun4m)"
  •  HTTP_VIA="1.0 acache.deol.ru:3129 (Squid/2.3.STABLE1)" - proxy
  •  HTTP_X_FORWARDED_FOR="195.161.72.28" - proxy
  •  PATH="директории, в которых ищутся исполняемые программы"
  •  QUERY_STRING=""
  •  REMOTE_ADDR="клиент или прокси"
  •  REMOTE_PORT="39885"
  •  REQUEST_METHOD="GET"
  •  REQUEST_URI="/cgi-bin/printenv"
  •  SCRIPT_FILENAME=абсолютное имя файла"
  •  SCRIPT_NAME="логическое имя объекта"
  •  SERVER_ADDR="IP адрес"
  •  SERVER_ADMIN="почтовый адрес администратора сервера"
  •  SERVER_NAME="имя-определенное-по-IP"
  •  SERVER_PORT="80"
  •  SERVER_PROTOCOL="HTTP/1.0"
  •  SERVER_SIGNATURE="

Apache/1.3.12 Server at dual.deol.ru Port 80\n"

  •  SERVER_SOFTWARE="Apache/1.3.12 (Unix) rus/PL29.4"

Директивы модуля env:

  •  SVDFLA PassEnv имя-переменной ... (передаёт значение системной - установливается в момент запуска сервера - переменной окружения)
  •  SVDFLA SetEnv имя-переменной значение
  •  SVDFLA UnsetEnv имя-переменной ...

Модуль setenvif позволяет устанавливать переменные в зависимости от характеристик запроса (директивы выполняются последовательно):

  •  SVDFLA BrowserMatch регулярное-выражение [!]имя-переменной[=значение] ... (установить переменную (в 1) или присвоить значение или удалить переменную в зависимости от заголовка запроса "User-Agent:")
  •  BrowserMatchNoCase - сравнение без учёта регистра символов
  •  SVDFLA SetEnvIf имя-атрибута регулярное-выражение [!]имя-переменной[=значение] ... (установить переменную (в 1) или присвоить значение (может содержать $1-$9 как значения подвыражения, см. PCRE) или удалить переменную в зависимости от значения атрибута:
    •  имя поля заголовка запроса (например: Host, User-Agent, Referer, Accept-Language и др.), вместо имени поля можно указывать регулярное выражение
    •  Remote_Host
    •  Remote_Addr
    •  Server_Addr
    •  Request_Method (GET, POST и т.д.)
    •  Request_Protocol ("HTTP/0.9", "HTTP/1.1" и т.д.)
    •  Request_URI
    •  имя переменной окружения, установленной предыдущими директивами SetEnvIf[NoCase]
  •  SetEnvIfNoCase - сравнение без учёта регистра символов

Директива RewriteRule модуля rewrite имеет опцию установки переменной окружения.

Модуль unique_id уставливает "уникальное" для каждого запроса значение в переменную UNIQUE_ID.

Использование переменных в модулях:

  •  модуль include (SSI) позволяет выводить значения переменных командой echo и использовать их для условного исполнения
  •  модуль access позволяет управлять доступом, основываясь на значениях переменных
  •  модуль log_config позволяет заносить значения переменных в журнал и принимать решения о записи вообще
  •  модуль header позволяет добавлять поля в заголовок ответа, основываясь на значениях переменных
  •  модуль mod_ext_filter может активировать внешний фильтр, основываясь на значениях переменных
  •  модуль rewrite может использовать различные варианты, основываясь на значениях переменных

Специальные переменные окружения, меняющие обработку запроса сервером:

  •  downgrade-1.0 (обрабатывать запрос в соответствии с протоколом HTTP/1.0)
  •  force-no-vary (не вставлять поле Vary в заголовок ответа)
  •  force-response-1.0 (выдавать ответ в формате HTTP/1.0)
  •  gzip-only-text/html (запретить использование модуля deflate для всех типов содержимого, кроме text/html)
  •  no-gzip (запретить использование модуля deflate для всех типов)
  •  nokeepalive
  •  prefer-language (модуль negotiation выбирает вариант, основываясь на этикетке языка, указанной в запросе)
  •  redirect-carefully (для доступа DAV Microsoft WebFolders)
  •  suppress-error-charset (сопроводительный текст перенаправления не помечается как ISO-8859-1)


2.2 Инсталляция web-сервера Apache

2.2.1 Сборка web-сервера Apache

Требования, необходимые для успешной сборки сервера:

  1.  Дисковое пространство

На диске должно быть как минимум 50 Mб свободного места для временных файлов. После установки Apache занимает приблизительно 10 Mб. Точный размер занимаемого места будет зависеть в основном от выбранной конфигурации и дополнительно устанавливаемых модулей, не входящих в дистрибутив Apache.

  1.  ANSI-C компилятор и необходимая среда сборки

В вашей системе должен присутствовать ANSI-C компилятор. Рекомендуется использовать GNU C компилятор (GCC) от Free Software Foundation (FSF) (версии 2.7.2 вполне достаточно). Также стоит убедиться в том, чтобы в переменной окружения PATH был указан каталог, содержащий основные утилиты, необходимые для сборки (make и другие).

  1.  Синхронизация времени

В некоторых заголовках HTTP протокола указывается время. Поэтому необходимо, чтобы в системе присутствовало средство синхронизации времени. Обычно для этих целей используются программы ntpdate или xntpd, основанные на сетевом протоколе синхронизации времени (Network Time Protocol - NTP).

Загрузка дистрибутива

Apache можно загрузить со страницы загрузки Apache HTTP Software Foundation, на которой также приводится список некоторых зеркальных серверов. Пользователям, работающим на unix-подобных системах, рекомендуется собирать Apache из исходных кодов. Процесс сборки достаточно прост и позволяет настроить сервер под любые нужды.

Конфигурирование сборки

Скачав и распаковав дистрибутив сервера Apache 2.0, необходимо сконфигурировать свою версию сборки перед последующей установкой.

В предыдущих версиях Apache были две различные модели конфигурации сервера, каждая из которых развивалась отдельно. Первый метод - это использование текстового файла, контролирующего состав сборки сервера. А вторым стал autoconf-подобный механизм, который преобразовывал файл скрипта сборки под текущую платформу. Разработчики решили, что для Apache 2.0 больше подойдет второй метод настройки. Поэтому Apache 2.0 для определения компонентов сборки использует утилиты autoconf и libtool.

Дистрибутивы, скачанные с сайта Apache, уже имеют конфигурационный скрипт configure, расположенный в корне распакованного дистрибутива. Данный скрипт имеет множество параметров, которые позволяют пользователю контролировать каждый аспект сборки Apache. Полный список этих параметров можно получить командой

./configure –help.

Наиболее интересными из них являются следующие:

  •  --prefix=/путь_к_директории  − задает путь инсталляции сервера Apache.
  •  --enable-имя_модуля − включение модуля не входящего в состав сборки по умолчанию
  •  --disable-имя_модуля − исключение модуля входящего в состав сборки по умолчанию
  •  --with-module=тип-модуля:имя-файла − добавление внешнего модуля, не входящего в комплект поставки, ищется в каталоге modules/тип-модуля

Ключи для скрипта ./configure, влияющие на его выполнение:

-C

--config-cache

псевдоним для --cache-file=config.cache

--cache-file=FILE

результаты тестирования скрипта будут сохраняться в файл FILE

эта опция отключена по умолчанию

-h

--help [short|recursive]

вывод справки и выход

с аргументом short будет отображаться справка только выбранного пакета

с аргументом recursive будет показана краткая справка для всех пакетов, включенных в дистрибутив

-n

--no-create

скрипт запускается в обычном режиме, но не создает выходные файлы, что полезно для проверки результатов тестов перед генерацией Makefiles для компиляции.

-q

--quiet

не выводит checking ... сообщения в процессе настройки

--srcdir=DIR

Определяет каталог DIR как источник файлов установки

по умолчанию это каталог, где производиться настройка, или родительский

--silent

тоже что и  --quiet

-V

--version

показывает информацию об версии, авторских правах а затем завершается

Для того чтобы скомпилировать модули как динамически подключаемые объекты (DSO), т.е. они могут быть загружены и выгружены из сервера во время его работы, требуется  использовать параметр shared для опции --enable-имя_модуля следующим образом:

--enable-[module]=shared (требуется наличие модуля so).

Использовать данные опции следует с осторожностью, так как конфигурационный скрипт не предупреждает в том случае, если модуля, который указан, нет; он просто проигнорирует соответствующую опцию. Поэтому наличие модулей следует проверить заранее в папке modules.

Опция --enable-layout=LAYOUT производит настройку дерева каталогов для установки сервера в соответсвии с шаблоном LAYOUT, что позволяет отдельно указать места для каждого типа файла в пределах директории установки сервера Apache.

Файл config.layout содержит несколько шаблонов конфигураций. Также можно создавать свои собственные конфигурации следуя примерам. Различные схемы в этом файле сгруппированы в блоки по именам <Layout FOO>...</Layout>, где вместо FOO подставляется имя. По умолчанию используется макет Apache .

Ниже представлены параметры конфигурационного скрипта для моей сборки сервера:

./configure --prefix=/opt/apache2 \

--with-mpm=prefork \

--disable-imagemap \

--disable-userdir \

--enable-proxy \

--enable-proxy-http \

--enable-proxy-ftp \

--enable-auth-digest=shared \

--enable-charset-lite \

--enable-expires \

--enable-info \

--enable-rewrite=shared \

--enable-usertrack \

--enable-so

Мною был выбран тип MPM-модуля prefork, как наиболее простой и стабильный в работе. Впоследствии во время эксплуатации сервера настройки MPM можно будет изменять, подбирая наиболее эффективные при текущей нагрузке на сервере.

Также в сборку были включены дополнительные модули для обеспечения прокси: mod_proxy_http, mod_proxy_ftp, модуль обеспечения динамического подключения модулей: mod_so, модуль выдающий информацию о сервере: mob_info, модуль для отслеживания клиентов с помощью куки: mod_usertrack, модуль управляющий содержимым заголовков: mod_expires управляющий содержимым заголовками и модуль mod_charset_lite для перекодировки документов из кодировки хранения в кодировку клиента. В целях повышения безопасности от внешнего вмешательства из сборки были исключены модуль mod_userdir, позволяющий создавать отдельные каталоги для каждого пользователя, и модуль mod_imagemap, отвечающий за поддержку карт изображений.

2.2.2 Установка web-сервера Apache

После того, как выполнится конфигурационный скрипт, необходимо скомпилировать сервер, используя команду

make,

затем произвести установку нового сервера командой

make install.

Эта команда скопирует все необходимые файлы в директорию, определенную опцией -prefix. Если данная опция не была указана, то по умолчанию будет использоваться путь /usr/local/apache/.

2.2.3 Запуск web-сервера Apache

httpd - собственно сам сервер. В Unix программа httpd представляет собой демон, выполняющийся в фоновом режиме и обслуживающий поступающие запросы.

Демон httpd может быть запущен со следующими ключами:

  •  -d значение-ServerRoot
  •  -f имя-конфигурационного-файла (относительно ServerRoot)
  •  -k start | restart | graceful | stop | graceful-stop
  •  -C директива (выполнить директиву до чтения файла конфигурации)
  •  -c директива (выполнить директиву после чтения файла конфигурации)
  •  -D параметр (определение параметра для условной конфигурации)
  •  -e значение-LogLevel
  •  -E имя-файла (выводить сообщения об ошибке в указанный файл)
  •  -l (выдать список модулей, динамически подключённые модули не указываются)
  •  -L (выдать список директив для каждого модуля)
  •  -M (выдать список модулей, динамически подключённые модули указываются)
  •  -S (разбор конфигурации виртуальных хостов)
  •  -t (проверить конфигурацию)
  •  -X (отладочный режим)
  •  -v (выдача краткой информации о версии сервера)
  •  -V (выдача полной информации о версии сервера)
  •  -h (выдать синтаксис командной строки)

Для запуска демона httpd лучше всего использовать скрипт apachectl. Этот скрипт устанавливает ряд переменных окружения, необходимых для правильной работы сервера под некоторыми операционными системами, а затем запускает исполняемый файл httpd. Скрипт apachectl передаст серверу любую командную строку, так что при вызове можно указывать в его командной строке все необходимые для сервера опции. Также можно вручную внести некоторые изменения в скрипт apachectl, в частности, изменив значение переменной HTTPD для запуска Apache из другого каталога, и указав опции, которые будут передаваться серверу каждый раз при его запуске командой

./bin/apachectl start

Скрипт apachectl принимает следующие команды:

  •  start
  •  stop
  •  restart (предварительно проверяется синтаксис файла настройки)
  •  fullstatus (нужен mod_status и lynx)
  •  status
  •  configtest
  •  graceful (перезапуск без обрывания текущих соединений, статистика не сбрасывается; журналы закрываются не сразу, рекомендуемая пауза - 15 минут)
  •  help

Содержимое скрипта apachectl представлено ниже:

#!/bin/sh

#

# Licensed to the Apache Software Foundation (ASF) under one or more

# contributor license agreements.  See the NOTICE file distributed with

# this work for additional information regarding copyright ownership.

# The ASF licenses this file to You under the Apache License, Version 2.0

# (the "License"); you may not use this file except in compliance with

# the License.  You may obtain a copy of the License at

#

#     http://www.apache.org/licenses/LICENSE-2.0

#

# Unless required by applicable law or agreed to in writing, software

# distributed under the License is distributed on an "AS IS" BASIS,

# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

# See the License for the specific language governing permissions and

# limitations under the License.

#

#

# Apache control script designed to allow an easy command line interface

# to controlling Apache.  Written by Marc Slemko, 1997/08/23

#

# The exit codes returned are:

#   XXX this doc is no longer correct now that the interesting

#   XXX functions are handled by httpd

# 0 - operation completed successfully

# 1 -

# 2 - usage error

# 3 - httpd could not be started

# 4 - httpd could not be stopped

# 5 - httpd could not be started during a restart

# 6 - httpd could not be restarted during a restart

# 7 - httpd could not be restarted during a graceful restart

# 8 - configuration syntax error

#

# When multiple arguments are given, only the error from the _last_

# one is reported.  Run "apachectl help" for usage info

#

ARGV="$@"

#

# |||||||||||||||||||| START CONFIGURATION SECTION  ||||||||||||||||||||

# --------------------                              --------------------

#

# the path to your httpd binary, including options if necessary

HTTPD='/opt/apache2/bin/httpd'

#

# pick up any necessary environment variables

if test -f /opt/apache2/bin/envvars; then

 . /opt/apache2/bin/envvars

fi

#

# a command that outputs a formatted text version of the HTML at the

# url given on the command line.  Designed for lynx, however other

# programs may work.  

LYNX="lynx -dump"

#

# the URL to your server's mod_status status page.  If you do not

# have one, then status and fullstatus will not work.

STATUSURL="http://localhost:80/server-status"

#

# Set this variable to a command that increases the maximum

# number of file descriptors allowed per child process. This is

# critical for configurations that use many file descriptors,

# such as mass vhosting, or a multithreaded server.

ULIMIT_MAX_FILES="ulimit -S -n `ulimit -H -n`"

# --------------------                              --------------------

# ||||||||||||||||||||   END CONFIGURATION SECTION  ||||||||||||||||||||

# Set the maximum number of file descriptors allowed per child process.

if [ "x$ULIMIT_MAX_FILES" != "x" ] ; then

   $ULIMIT_MAX_FILES

fi

ERROR=0

if [ "x$ARGV" = "x" ] ; then

   ARGV="-h"

fi

case $ARGV in

start|stop|restart|graceful|graceful-stop)

   $HTTPD -k $ARGV

   ERROR=$?

   ;;

startssl|sslstart|start-SSL)

   echo The startssl option is no longer supported.

   echo Please edit httpd.conf to include the SSL configuration settings

   echo and then use "apachectl start".

   ERROR=2

   ;;

configtest)

   $HTTPD -t

   ERROR=$?

   ;;

status)

   $LYNX $STATUSURL | awk ' /process$/ { print; exit } { print } '

   ;;

fullstatus)

   $LYNX $STATUSURL

   ;;

*)

   $HTTPD $ARGV

   ERROR=$?

esac

exit $ERROR

Первым делом httpd находит и считывает конфигурационный файл httpd.conf. Путь к этому файлу задается еще во время сборки сервера, но его можно изменить и после этого, запустив сервер с опцией -f, как это показано в следующем примере

/usr/local/apache2/bin/apachectl -f /usr/local/apache2/conf/httpd.conf

Если во время запуска не возникло никаких проблем, то сервер отсоединится от консоли и приглашение на ввод командной строки вернется к пользователю практически мгновенно. Это указывает на то, что сервер запустился и теперь выполняет свою работу. Теперь можно, используя браузер, подключиться к нему и увидеть тестовую страницу, находящуюся в каталоге DocumentRoot, а также локальную копию документации.

Если во время запуска Apache произойдет какая-либо фатальная ошибка, то перед тем, как завершить свою работу, сервер пошлет на консоль или в ErrorLog сообщение, описывающее данную ошибку.

Скрипт apachectl разработан таким образом, что он может действовать как стандартный init-скрипт системы SysV. Он может принимать аргументы start, restart, и stop и переводить их в соответствующие сигналы процессу httpd. Поэтому для запуска сервер автоматически после перезагрузки системы, достаточно добавить вызов скрипта apachectl в системные файлы, отвечающие за загрузку операционной среды, расположенные в каталоге /etc/init.d/. Для этого возьмем стандартный init-скрипт httpd.init для Apache из директории /bin/rpm/ нашего дистрибутива и отредактируем его под свои нужды. Содержимое измененного скрипта представлено ниже:

#!/bin/bash

#

# Startup script for the Apache Web Server

#

# chkconfig: - 85 15

# description: Apache is a World Wide Web server.  It is used to serve \

#              HTML files and CGI.

# processname: httpd

# pidfile: /usr/local/apache2/logs/httpd.pid

# config: /usr/local/apache2/conf/httpd.conf

# Source function library.

. /etc/rc.d/init.d/functions

if [ -f /etc/sysconfig/httpd ]; then

       . /etc/sysconfig/httpd

fi

# Path to the apachectl script, server binary, and short-form for messages.

apachectl=/opt/apache2/bin/apachectl

httpd=/opt/apache2/bin/httpd

pid=$httpd/logs/httpd.pid

prog=httpd

RETVAL=0

# The semantics of these two functions differ from the way apachectl does

# things -- attempting to start while running is a failure, and shutdown

# when not running is also a failure.  So we just do it the way init scripts

# are expected to behave here.

start() {

       echo -n $"Starting $prog: "

       daemon $httpd $OPTIONS

       RETVAL=$?

       echo

       [ $RETVAL = 0 ] && touch /var/lock/subsys/httpd

       return $RETVAL

}

stop() {

       echo -n $"Stopping $prog: "

       killproc $httpd

       RETVAL=$?

       echo

       [ $RETVAL = 0 ] && rm -f /var/lock/subsys/httpd $pid

}

reload() {

       echo -n $"Reloading $prog: "

       killproc $httpd -HUP

       RETVAL=$?

       echo

}

# See how we were called.

case "$1" in

 start)

       start

       ;;

 stop)

       stop

       ;;

 status)

       status $httpd

       RETVAL=$?

       ;;

 restart)

       stop

       start

       ;;

 condrestart)

       if [ -f $pid ] ; then

               stop

               start

       fi

       ;;

 reload)

       reload

       ;;

 graceful|help|configtest|fullstatus)

       $apachectl $@

       RETVAL=$?

       ;;

 *)

       echo $"Usage: $prog {start|stop|restart|condrestart|reload|status"

 echo $"|fullstatus|graceful|help|configtest}"

       exit 1

esac

exit $RETVAL

Затем скопируем этот скрипт в директорию /etc/init.d/ и дадим ему права на выполнение. После выполним команды, обеспечивающие запуск сервера вместе с системой:

chkconfig --add httpd

chkconfig --level 2345 httpd on

Таким образом, сервер будет загружаться вместе с загрузкой системы с правами привилегированного пользователя.


2.2.4 Остановка и перезапуск web-сервера Apache

Для того чтобы остановить или перезапустить Apache, необходимо послать сигнал запущенным процессам httpd. Существует два способа отправить подобные сигналы. Во-первых, можно послать сигналы непосредственно процессам, используя команду kill. Стоит помнить, что процессов httpd в системе выполняется несколько, однако не следует отсылать сигналы ни одному из них, кроме родительского - его pid (идентификатор процесса) записывается в файл, путь к которому задается директивой PidFile.

Существуют три сигнала, которые можно отправить родительскому процессу: TERM, HUP, и USR1 - их значение будет объяснено ниже.

Чтобы отправить сигнал родительскому процессу, следует набрать следующую команду:

kill -TERM `cat /opt/apache2/logs/httpd.pid`

Второй способ передать сигналы процессам httpd - это использование опции -k в командной строке с аргументами: stop, restart и graceful, как будет описано ниже. Это параметры командной строки для исполняемого файла httpd, однако рекомендуется передавать их, используя скрипт apachectl, который более корректно передаст эти параметры программе httpd.

После того, как будут отправлены сигналы процессу httpd, можно узнать состояние сервера, набрав:

tail -f /usr/local/apache2/logs/error_log

Немедленная остановка

Сигнал: TERM

apachectl -k stop

После получения сигнала TERM или stop, родительский процесс пытается немедленно уничтожить все дочерние процессы. Это может занять несколько секунд. Затем родительский процесс сам завершает работу, при этом все текущие запросы прекращают обрабатываться, а новые запросы игнорируются.

Немедленный перезапуск

Сигнал: HUP

apachectl -k restart

Отправленный родительскому процессу сигнал HUP или restart вызывает немедленное уничтожение всех дочерних процессов, также как и при обработке сигнала TERM, однако родительский процесс не завершает работу. Он перечитывает конфигурационные файлы и открывает заново log-файлы. Затем он порождает новых потомков и продолжает обработку запросов. Статистика сервера при получении сигнала HUP полностью обнуляется. Если Ваш конфигурационный файл содержит ошибки, то попытка перезапустить сервер вызовет немедленное прекращение его работы с сообщением об ошибке.

Мягкий перезапуск

Сигнал: USR1

apachectl -k graceful

При получении сигнала USR1 или graceful, родительский процесс призывает дочерние процессы к завершению работы сразу же после обработки своего текущего запроса (или к незамедлительной остановке, если дочерний процесс ничего не обрабатывает). Родительский процесс перечитывает конфигурационные файлы, открывает заново log-файлы. После того, как какой-то из дочерних процессов завершает работу, родительский процесс заменяет его дочерним процессом нового поколения, т.е. с новой конфигурацией, который начинает обрабатывать новые запросы незамедлительно.

На некоторых платформах, не поддерживающих передачу сигнала USR1 как сигнала для инициации мягкого перезапуска, могут использоваться другие сигналы (такие как WINCH). Команда apachectl graceful отправит корректный сигнал на любой платформе.

Программа разработана таким образом, что количество процессов и потоков, определённое директивами MPM-модуля, оставалось неизменным на протяжении всего процесса перезапуска. Кроме того, для поддержания числа запущенных процессов, определённого директивой StartServers, используется следующий способ:

если спустя одну секунду не было создано по крайней мере такое количество дочерних процессов, какое определено директивой StartServers, тогда создаётся такое количество дочерних процессов, которое полностью восполнило бы недостаток.

Таким образом, сервер пытается одновременно и сохранить количество уже существующих дочерних процессов неизменным, и учесть требования, указанные в директиве StartServers.

Статистика сервера при получении сигнала USR1 не обнуляется. Так было сделано для того, чтобы уменьшить промежуток времени, в течение которого сервер не может обрабатывать новые запросы (которые операционная система будет ставить в очередь, т.е. они не пропадут в любом случае), а также для того, чтобы учитывать измененные  настройки. Для этого сервер хранит таблицу статистики, в которую записываются результаты работы всех дочерних процессов, вне зависимости от их поколения. Модуль mod_status также использует символ G, чтобы обозначить те дочерние процессы, которые всё ещё обрабатывают запросы и которые были созданы до сигнала к мягкому перезапуску.

В настоящее время нет способа определить, что все дочерние процессы закончили запись в старый log-файл (т.е. log-файл, в который производилась запись до перезапуска). Рекомендуется подождать некоторое время, после того как будет послан сигнал USR1, прежде чем делать что-либо со старым log-файлом. Например, если на выполнение запросов пользователей, подключённых через очень медленный канал, уходит не более 10 минут, тогда логично будет подождать 15 минут, прежде чем делать что-либо со старым log-файлом.

Если конфигурационный файл содержит ошибки, то попытка перезапустить сервер вызовет немедленное прекращение работы родительского процесса с сообщением об ошибке. В случае мягкого перезапуска дочерние процессы продолжают обрабатывать свои запросы, после чего они завершат свою работу. Это может вызвать проблемы, так как сервер не будет в состоянии установить соединение с необходимыми портами. Перед выполнением перезапуска, следует проверить синтаксис конфигурационных файлов с помощью параметра -t командной строки. Однако это всё ещё не гарантирует, что сервер перезапустится корректно. Чтобы проверить семантику конфигурационных файлов, равно как и их синтаксис, можно попробовать запустить httpd, будучи непривилегированным пользователем. Если ошибки отсутствуют, то httpd попытается открыть сокеты и log-файлы, но не сможет этого сделать, потому что у него отсутствуют необходимые для этого права (или потому что в текущее время работающий httpd уже установил соединение с нужными портами, заняв их). Если сбой происходит по любой другой причине - значит, скорее всего, существует ошибка в конфигурационном файле, которая должна быть исправлена перед началом мягкого перезапуска.


2.2.5 Обновление web-сервера Apache

Первым шагом при обновлении является чтение информации о релизе и файла CHANGES, находящегося в дереве исходных кодов - это поможет понять, каким образом обновление повлияет на ваш текущий web-сервер. При переходе между разными ветками сервера (например, с 1.3 на 2.0, или с 2.0 на 2.2), появляются существенные нововведения в конфигурировании процесса сборки или работы сервера, которые потребуют анализа и ручной настройки. Все модули также необходимо будет обновить, для того чтобы они могли соответствовать изменениям.

Обновление, осуществляемое внутри одной ветки сервера (например, с 2.0.55 на 2.0.57) существенно проще. Выполнение команды make install не перезапишет никакие существующие документы, файлы логов или конфигурационные файлы. В дополнение к этому, разработчики сервера сделали всё возможное, чтобы избежать несовместимости в опциях скрипта configure, рабочей конфигурации сервера и API модулей для разных младших релизов внутри одной ветки. В большинстве случаев можно использовать идентичную строку запуска скрипта configure, тот же самый конфигурационный файл и быть уверенным, что все модули продолжат работать. (Это верно только для версий сервера, начиная с 2.0.41; предыдущие версии имеют несовместимые изменения.)

Для обновления с одного младшего релиза на другой, следует найти файл config.nice, который должен находиться либо в каталоге build сервера, либо в корне дерева исходных кодов рабочего сервера. Этот файл содержит в себе точную копию строки запуска скрипта configure, которая использовалась при конфигурировании дерева исходных кодов установленной версии сервера. Затем, чтобы осуществить обновление, нужно скопировать файл config.nice в дерево исходных кодов новой версии сервера, внесите в него все необходимые изменения, а затем выполнить следующие команды:

./config.nice
make
make install

После обновления следует протестировать сервер, сделав пробный его запуск и остановку.


2.3 Конфигурирование web-сервера Apache

2.3.1 Основные настройки web-сервера Apache

Настройка сервера осуществляется с помощью текстового файла httpd.conf, состоящего из директив. Имя файла можно изменить при запуске сервера ключом "-f". Директива Include позволяет вставлять содержимое дополнительных файлов (можно указывать шаблон имени или имя каталога). Для вступления в действие изменений файла настройки необходимо перезапустить сервер. Некоторые директивы могут ссылаться на дополнительные файлы с другим синтаксисом. Каждая директива располагается на отдельной строке. Продолжение на следующую строку делается с помощью символа '\' в конце строки. Комментарии начинаются с символа '#'. Пробелы в начале строки игнорируются.

Сервер состоит из множества модулей, которые могут выбираться при сборке или загружаться динамически. Модуль Core отключить нельзя. Каждая директива определяет поведение одного из модулей и имеет смысл только, если этот модуль включен при сборке или с помощью динамической загрузки. Директивы могут выполняться в зависимости от наличия модуля (секция IfModule) или установки параметра при запуске сервера (секция IfDefine).

Секция IfDefine включает директивы, применяемые только если при запуске сервера была установлена (не установлена) соответствующая переменная (ключ -D):

<IfDefine [!]имя-переменной>

...

</IfDefine>

Секция IfModule включает директивы, применяемые только при наличии (отсутствии) указанного модуля:

<IfModule [!]имя-модуля>

...

</IfModule>

Директивы могут иметь следующие области действия (секции могут быть вложенными, каждая директива имеет набор допустимых контекстов - буквы SVDFLA указываются при описании директив):

  •  весь сервер (S)
  •  секция VirtualHost (V)
  •  секции Directory и DirectoryMatch (D)
  •  секции Files и FilesMatch (F)
  •  секции Location и LocationMatch (L)
  •  дополнительный файл настройки размещается в составляющем содержимое сайта каталоге, директивы из него действуют на этот каталог и его подкаталоги (A)

Дополнительные файлы настройки читаются при каждом запросе из каталога и его надкаталогов (сверху вниз, следующий имеет больший приоритет). Обычно имеют имя файла ".htaccess". Директива AccessFileName (SV) позволяет задать другое имя файла или имена (через пробел).

Директива AllowOverride (D, кроме DirectoryMatch) позволяет определить типы директив, допустимых в дополнительном файле настройки (директива также должна быть вообще допустима в контексте A):

  •  All (по умолчанию)
  •  None (дополнительные файлы даже не читаются, что сильно ускоряет работу сервера)
  •  тип [ тип ... ]
    •  AuthConfig (директивы авторизации)
    •  FileInfo (директивы, управляющие типом обработки)
    •  Indexes (директивы автоматического построения индексов каталогов)
    •  Limit (Allow, Deny и Order)
    •  Options (Options и XBitHack)

Секция VirtualHost (S) включает директивы, применяемые для запросов к указанному хосту ("*" означает любой адрес или любой порт; "_default_" - адреса, не указанные в других секциях):

<VirtualHost имя-или-адрес[:порт] [ имя-или-адрес[:порт] ...]>

...

</VirtualHost>

Секция Directory (SV) включает директивы, применяемые только к запросам файлов из указанного в заголовке секции каталога и его подкаталогов (вместо полного имени каталога можно указывать шаблон в стиле Unix или регулярное выражение в кавычках, перед которым необходимо указать "~ "), нельзя вкладывать в секции Directory и Limit:

<Directory имя-каталога>

...

</Directory>

Секция DirectoryMatch (SV) включает директивы, применяемые только к запросам файлов из указанного в заголовке секции каталога и его подкаталогов, нельзя вкладывать в секции Directory и Limit:

<DirectoryMatch регулярное-выражение>

...

</Directory>

Секция Files (SVDA) включает директивы, применяемые только к запросам файлов с указанным в заголовке секции простым именем (вместо простого имени можно указывать шаблон в стиле Unix или регулярное выражение в кавычках, перед которым необходимо указать "~ "):

<Files простое-имя-файла>

...

</Files>

Секция FilesMatch (SVDA) включает директивы, применяемые только к запросам указанного в заголовке секции файла:

<FilesMatch регулярное-выражение>

...

</FilesMatch>

Секция Location (SV) включает директивы, применяемые только к запросам URL, указанным в заголовке секции (для локальных - не прокси - запросов нельзя указывать схему, имя хоста, номер порта и строку запроса; можно указывать шаблон в стиле Unix)

<Location начальная-часть-URL>

...

</Location>

Секция LocationMatch (SV) включает директивы, применяемые только к запросам URL, указанным в заголовке секции:

<LocationMatch регулярное-выражение>

...

</LocationMatch>

Секция Limit (SVDFLA) включает директивы управления доступом, применяемые только к запросам указанного в заголовке секции HTTP методам доступа (GET (действует также на HEAD), POST, PUT, DELETE, CONNECT, OPTIONS, PATCH, PROPFIND, PROPPATCH, MKCOL, COPY, MOVE, LOCK, UNLOCK; TRACE указывать нельзя):

<Limit метод [ метод ...]>

...

</Limit>

Секция LimitExcept (SVDFLA) включает директивы управления доступом, применяемые к запросам не указанных в заголовке секции HTTP методов доступа:

<LimitExcept метод [ метод ...]>

...

</LimitExcept>

Порядок применения директив определения свойств и прав доступа к объекту (все секции одного типа, кроме Directory и .htaccess, применются по порядку; Directory и .htaccess применяются от кратчайшего пути к самому длинному; секции внутри VirtualHost применяются после соответствующих общих секций):

  1.  секция Directory (кроме регулярных выражений) и .htaccess (.htaccess перебивает Directory, если разрешено директивой AllowOverride)
  2.  секция DirectoryMatch и Directory с регулярными выражениями
  3.  секции Files и FilesMatch
  4.  секции Location и LocationMatch

Журнал ошибок управляется директивами ErrorLog и LogLevel модуля Core. Кроме сообщений сервера сюда направляется вывод на stderr скриптов CGI, вывод модуля dumpio.

Журнал доступа управляется модулем log_config, который позволяет задать имя файла и формат вывода. Данный журнал содержит записи о всех (если не отфильтровано директивой CustomLog) запросах к серверу. Каждый виртуальный сервер может вести произвольное число журналов в различных форматах.

Каждый запрос к серверу порождает строку в журнале, состоящую из элементов (token), разделенных пробелами. Пустой элемент записывается как символ '-'. Если элемент содержит пробелы, то он должен заключаться в кавычки (это надо самому предусмотреть при описании формата). При описании формата используются литеральные символы, которые копируются в журнал (можно использовать '\n' и т.п.; кавычки и обратная косая должны быть прикрыты символом '\') и директивы, которые начинаются с символа '%' и завершаются однобуквенным именем директивы. Между ними может стоять условие в виде списка кодов завершения HTTP через запятую (м.б. предваренных восклицательным знаком для операции отрицания) - если условие не выполняется, то вместо элемента записывается минус. Модификаторы перед буквой директивы позволяют определить (в случае внутреннего перенаправления) атрибут исходного ('<') или результирующего ('>') запроса будет использоваться при создании строки журнала.

Директива в описании формата замещается соответствующим значением:

  •  %% - '%'
  •  %a - адрес удаленного хоста
  •  %A - локальный адрес
  •  %B - количество посланных байт, кроме HTTP-заголовка
  •  %b - количество посланных байт, кроме HTTP-заголовка (вместо 0 пишется '-')
  •  %{имя-куки}C - значение куки
  •  %D - микросекунд потрачено на обработку запроса
  •  %{имя}e - значение переменной окружения
  •  %f - имя файла
  •  %h - имя удаленного хоста
  •  %H - протокол (HTTP)
  •  %{имя-заголовка}i - значение заголовка запроса; наиболее часто используются
    •  Referer - откуда была ссылка на документ
    •  User-agent - что сказал о себе броузер
  •  %I - количество полученных байт, включая заголовки (требуется logio)
  •  %l - имя удаленного пользователя (если задействован ident)
  •  %m - метод (GET, PUT и т.д.)
  •  %{имя-заметки}n - содержимое заметки с указанным именем, созданной другим модулем (например, %{forensic-id}n или %{cookie}n)
  •  %{имя-заголовка}o - значение заголовка ответа
  •  %O - количество посланных байт, включая заголовки (требуется logio)
  •  %p - канонический номер порта сервера
  •  %P - pid процесса, обслуживающего запрос
  •  %{tid}P - идентификатор потока, обслуживающего запрос
  •  %q - поисковая часть URL (после '?')
  •  %r - первая строка запроса
  •  %s - статус запроса (код возврата HTTP)
  •  %t - время в CLF-формате ([day2d/month3l/year4d:hour2l:minute2l:second2l zone], где zone в формате [+|-]hour2dmin2d)
  •  %{формат}t - время, формат описан в strftime(3)
  •  %T - секунд, прошедших до окончания обслуживания запроса
  •  %u - имя авторизованного пользователя (если статус не равен 401)
  •  %U - запрошенный URL без поисковой части
  •  %v - канонический ServerName
  •  %V - имя сервера в соответствии с значением UseCanonicalName
  •  %X - состояние соединения к моменту завершения ответа ('X' - преждевременный обрыв, '+' - можно использовать повторно, '-' - необходимо закрыть после завершения обработки запроса)

Директивы модуля log_config рекомендуется использовать только LogFormat для определения формата и CustomLog для создания журнала:

  •  SV CookieLog имя-файла (только для совместимости со старым модулем mod_cookie; рекомендуется использовать mod_usertrack и CustomLog)
  •  SV CustomLog имя-файла-или-канала формат-или-имя-формата[env=[!]имя-переменной] (вести журнал определенного формата в указанном файле или подать на вход программе; канал записывается как символ "|", за которым идет имя запускаемой программы; журнал подается на стандартный ввод программы, которая запускается с теми же правами, что и httpd (root); формат определяется директивой LogFormat; env= позволяет заносить в журнал записи только о тех запросах, которые удовлетворяют условию)
  •  SV LogFormat формат-или-имя-формата [имя-формата] (определить формат с указанным именем; по умолчанию - "%h %l %u %t \"%r\" %>s %b" - так называемый Common Log Format (CLF))
  •  SV TransferLog имя-файла-или-канала (аналогично CustomLog, но формат определяется в предыдущей LogFormat без имени)

Содержимое файла настроек моего сервера (/conf/httpd.conf) представлено в Приложении 1.


2.3.2 Настройка виртуальных хостов

Один сервер Apache может обслуживать запросы к нескольким сайтам (на одном компьютере можно запустить несколько серверов Apache, если это необходимо по требованиям безопасности - в этом случае можно задать отдельные User/Group). Описание каждого сайта заключается в секцию VirtualHost. Запросы, которые сервер не может соотнести ни с одной секцией VirtualHost, обслуживаются исходя из настроек главного сайта. Привязка сайта к виртуальному хосту может быть на основе IP адреса (возможно определение виртуального хоста со специальным именем "_default_", которое будет "перехватывать" на себя все неприкаянные запросы) или имени (работает только для клиентов, умеющих выдавать заголовок "Host:" в запросе). При использовании TLS/SSL нельзя использовать привязку по имени. Внутри секции может быть использована почти любая директива (буква V в описании) или секции DFL. Самая необходимая директива - DocumentRoot, которая задаёт привязку корневого локального URL к каталогу файловой системы. Обычно также используются директивы ServerAdmin, ServerName и задание отдельных журналов.

При виртуальном хостинге на основе IP адреса для определения нужного сайта (секции VirtualHost) используется IP адрес сервера (или порт), соответственно, каждый сайт должен иметь отдельный IP адрес. В заголовке секции рекомендуется указывать IP адрес (в любом случае, при разборе конфигурации доменное имя преобразуется в IP адрес).

При виртуальном хостинге на основе имени директива NameVirtualHost (в основной секции) привязывает виртуальный хост к указанному адресу/порту: запросы на этот адрес будут распределяться только между соответствующими виртуальными хостами; если NAT или proxy перебрасывает запросы снаружи на другой IP адрес, то в директиве необходимо указать новый адрес. В качестве адреса можно использовать шаблон ("*" или "*:80"). Для приёма запросов необходимо дополнительно использовать директиву Listen. Аргумент секции VirtualHost должен соответствовать аргументу NameVirtualHost. В секции VirtualHost необходимо обязательно указать ServerName и DocumentRoot. Директива ServerAlias позволяет задать дополнительные имена сайта для виртуального хоста.

При получении запроса сервер проверяет соответствует ли входящий адрес и порт упомянутым в директиве NameVirtualHost. Если соответствует, то он перебирает секции VirtualHost, в заголовках которых указан входящий адрес. В них он ищет ту секцию, в которой указана директива ServerName (или ServerAlias), соответствующая заголовку запроса "Host:". Если соответствия не найдено ("_default_" соответствует всегда), то используется первая попавшаяся секция.

Под нужды внутренней сети, состоящей из трех подсетей, мною были настроены три виртуальных хоста, на одном IP адресе привязанных по имени:

mcd.test1.ru

mcd.test2.ru

mcd.test3.ru

со стартовыми страницами index.html

Содержимое файла настроек для виртуальных хостов моего сервера (/conf/extra/ httpd-vhosts.conf) представлено в Приложении 2.

В случае расширения внутренней сети и внедрения новых сайтов для нужд пользователей этой сети существует возможность настроить дополнительные виртуальные хосты привязанные к другим IP адресам.  

Для проверки работоспособности хостов наберем в браузере их адреса. На следующих рисунках показан результат запросов к серверу. На Рис. 2 показана стартовая страница основного сайта расположенного по адресу http://localhost/. Рис. 3 и Рис. 4 демонстрирует вход на хостинг http://mcd.test1.ru/. Рис. 6 и Рис. 7 демонстрирует вход на хостинг http://mcd.test3.ru/. На Рис. 5 показана стартовая страница хостинга http://mcd.test2.ru/.

Рис. 2 Стартовая страница сайта http://localhost/

Рис. 3 Вход на хостинг http://mcd.test1.ru/.

Рис. 4 Стартовая страница хостинга http://mcd.test1.ru/.

Рис. 5 Стартовая страница хостинга http://mcd.test2.ru/.

Рис. 6 Вход на хостинг http://mcd.test1.ru/.

Рис. 7 Стартовая страница хостинга http://mcd.test3.ru/.

Как видно из рисунков все хостинги отвечают на запрос браузера и работоспособны.

2.3.3 Настройки авторизации и аутентификации

Аутентификация - это установление личности пользователя (имя пользователя не длиннее 255 символов и не может содержать символ ':'), а авторизация - проверка полномочий на выполнение каких-либо действий.

При аутентификации сервер определяет директивой ядра AuthName какой домен (realm) авторизации клиент должен использовать при аутентификации; выдаётся на экран при запросе имени и пароля. Директивой ядра AuthType определяется тип аутентификации. Basic - имя и пароль передаются по сети в открытом виде, если не прикрыть TLS/SSL или Digest. Аутентификация производится при каждом запросе, клиентская программа может скрывать это подставляя имя/пароль из кеша для одного и того же домена.

Директива AuthUserFile (DA) модуля auth определяет имя файла с паролями. Файл состоит из строк, содержащих имя пользователя и хешированный пароль (разделяются двоеточием). Директива AuthGroupFile (DA) модуля auth определяет имя файла с описанием групп пользователей. Файл состоит из строк, каждая из которых описывает одну группу. В начале строки указывается имя группы, затем двоеточие, затем список имён пользователей через пробел. Директива AuthAuthoritative (DA) позволяет при неудаче аутентификации передать запрос следующему модулю аутентификации (auth_ldap, auth_mysql), если указать "Off".

Модуль auth_dbm позволяет хранить имена, пароли и списки групп в DBM, что значительно ускоряет работу сервера при большом количестве пользователей в списках. Директива AuthDBMUserFile (DA) определяет имя файла с паролями (ключ - имя пользователя, значение - пароль). Директива AuthDBMGroupFile (DA) определяет имя файла c описанием групп пользователей (ключ - имя пользователя, значение - список групп через запятую). Директива AuthDBMType (DA) позволяет явно задать тип DBM: default, SDBM, GDBM, NDBM, DB. Директива AuthDBMAuthoritative (DA) позволяет при неудаче аутентификации передать запрос следующему модулю аутентификации (auth_ldap, auth_mysql), если указать "Off".

Модуль auth_digest позволяет использовать аутентификацию типа Digest. Директива AuthDigestAlgorithm (DA) определяет вариант алгоритма (MD5 или MD5-sess). Директива AuthDigestFile (DA) определяет имя файла с паролями. Директива AuthDigestGroupFile (DA) определяет имя файла с описанием групп пользователей. Директива AuthDigestDomain (DA) позволяет задать список URL через пробел, которые относятся к одному домену. URL из списка рассматриваются клиентом как префикс в адресном пространстве и используются для оптимизации. Имеется множество директив (недоделанных) по тонкой настройке процесса аутентификации.

Предварительно необходимо создать файл паролей в месте, недоступном для извлечения с сайта. Для создания файла используются утилиты htpasswd (аутентификация Basic, текстовые файлы), htdigest (аутентификация Digest, текстовые файлы), htdbm (аутентификация Basic и DBM).

Добавление (изменение, удаление) пользователя в файл:

htpasswd имя-файла-с-паролями имя-пользователя

Ключи:

  •  -c (создавать файл с паролями)
  •  -d (использовать crypt() вместо хеширования MD5)
  •  -m (использовать хеширование MD5 вместо crypt())
  •  -D (удалить запись из файла)

Вывод созданной записи на stdout вместо записи в файл (можно использовать ключи -d и -m):

htpasswd -n имя-пользователя

Утилита htdigest позволяет добавить пользователя в текстовый файл паролей для аутентификации типа Digest (ключ -c создаёт файл):

htdigest имя-файла-с-паролями realm имя-пользователя

Директива ядра Require позволяет задать ограничение доступа к определённой части сайта только указанным аутентифицированным пользователям или аутентифицированным пользователям из указанной группы или любым аутентифицированным пользователям.

Модуль access обеспечивает авторизацию доступа на основе IP адреса клиента или других характеристиках запроса (т.е. без аутентификации). Секция Limit позволяет ограничить действие директив авторизации конкретными методами доступа. Директивы:

  •  DFLA Order порядок (определяет очередность в которой применяются директивы Allow и Deny)
    •  Deny,Allow - первыми применяются директивы Deny, затем Allow (начальное состояние - доступ разрешен)
    •  Allow,Deny - первыми применяются директивы Allow, затем Deny (начальное состояние - запрещено)
    •  Mutual-failure - доступ только с тех хостов, которые перечислены в Allow и не перечислены в Deny
  •  DFLA Allow from {адрес} (определяет с каких адресов будет дан доступ к данной директории)
    •  all - со всех хостов
    •  доменное имя (м.б. частичное) - с тех хостов, имя которых заканчивается на эту строку; сервер делает обратный, затем прямой поиск DNS
    •  полный IP адрес
    •  частичный IP адрес - первые 1, 2 или 3 байта IP адреса
    •  a.b.c.d/e.f.g.h - network/netmask
    •  a.b.c.d/nnn - network/бит
  •  DFLA Allow from env=имя-переменной (доступ разрешается только если определена соответствующая переменная окружения)
  •  DFLA Deny ... (определяет с каких адресов не будет доступа к данному каталогу или файлу; синтаксис идентичен синтаксису директивы Allow)

Для ограничения доступа сайтам, а так же некоторым частям сайтов, например скачиванию архивов, мною использовалась Basic аутентификация, построенная на использовании  дополнительных файлов конфигурации сервера Apache .htaccess и текстовых файлов с паролями, созданных утилитой  htpasswd.

На моем сервере настроены три виртуальных хоста со следующими ограничениями на доступ к ним:

mcd.test1.ru доступ разрешен только одному пользователю admin

mcd.test2.ruдоступ разрешен всем

mcd.test3.ruдоступ разрешен пользователям из группы с именем test3.ru-group

Состав группы test3.ru-group записан в текстовом файле test3.ru-group.

Содержимое этого файла:

test3.ru-group: user1 user2 user3 user4

Создание файла с паролем для пользователя admin:

apache@linux-m4d5:/opt/apache2> ./bin/htpasswd -c /opt/apache2/pass-test1.ru admin
New password:
Re-type new password:
Adding password for user admin

Создание файлом с паролями для группы test3.ru-group:

apache@linux-m4d5:/opt/apache2> ./bin/htpasswd -c /opt/apache2/passwd/pass-test3.ru-group user1
New password:
Re-type new password:
Adding password for user user1
apache@linux-m4d5:/opt/apache2> ./bin/htpasswd /opt/apache2/passwd/pass-test3.ru-group user2
New password:
Re-type new password:
Adding password for user user2
apache@linux-m4d5:/opt/apache2> ./bin/htpasswd /opt/apache2/passwd/pass-test3.ru-group user3
New password:
Re-type new password:
Adding password for user user3
apache@linux-m4d5:/opt/apache2> ./bin/htpasswd /opt/apache2/passwd/pass-test3.ru-group user4
New password:
Re-type new password:

Adding password for user user4

Содержимое файлов .htaccess для доступа к сайтам представлено в Приложении 3.

При добавлении новых пользователей  необходимо добавить имя пользователя и пароль в файлы с паролями, используя ту же утилиту, и добавить эти имена в соответствующие файлы .htaccess после директивы Require. 

Отслеживание клиентов

Модуль usertrack позволяет отслеживать клиентов с помощью куки. Значение куки записывается в журнал с помощью спецификатора формата "%{cookie}n".

Используемые директивы:

  •  SVDFLA CookieDomain имя-домена-куки (должен начинаться с точки и иметь минимум одну точку внутри; можно не задавать)
  •  SVDFLA CookieExpires время-хранения (можно записывать в секундах или так: "2 weeks 3 days 7 hours"; если не задано, то действует на время сессии клиента)
  •  SVDFLA CookieName имя (по умолчанию - Apache)
  •  SVDFLA CookieStyle Netscape|Cookie|Cookie2|RFC2109|RFC2965
  •  SVDFLA CookieTracking Off | On (Off; включить отслеживание куки)


3. Безопасность жизнедеятельности

Компьютер является мощным инструментом, способный выполнять различные задачи под управлением человека: от слежения за сложными объектами до простых вычислений формул специальными программными комплексами.  Все это помогает сберечь время специалиста при  решении тех задач, которые пока под силу только человеку, и повысить производительность его труда. Однако следует помнить, что проводя значительное время за компьютером, человек подвергает значительной нагрузке свои запястья и суставы рук, нагружает позвоночник.

Санитарные правила и нормы работы с компьютером регулируются «Гигиеническими требованиями к видеодисплейным терминалам, персональным электронно-вычислительным машинам и организации работы». Данные санитарные правила и нормы предназначены для предотвращения неблагоприятного воздействия на человека вредных факторов, сопровождающих работы с видеодисплейными терминалами (ВДТ) и персональными электронно-вычислительными машинами (ПЭВМ) и определяют санитарно-гигиенические требования к проектированию и эксплуатации ВДТ, ПЭВМ, проектированию помещений для работы ЭВМ и ПЭВМ, обеспечению безопасных условий труда пользователей ВДТ и ПЭВМ. Техника для работы и помещение должны удовлетворять всем необходимым санитарным нормам.

3.1 Основные негативные воздействия и борьба с ними

Основные факторы, повреждающие здоровье при работе за компьютером:

1. Длительная гиподинамия. 

Любая поза при длительной фиксации вредна для опорно-двигательного аппарата, кроме того, ведет к застою крови во внутренних органах и капиллярах.

2. Нефизиологическое положение различных частей тела.

Физиологическим положением для человека является так называемое эмбриональное положение, его легко испытать на себе, если полностью расслабиться в соленой воде. Когда мышцы расслаблены и на них воздействует лишь естественный тонус покоя, тело приходит в определенное положение. Для спины и шеи в вертикальном положении физиологично другое - когда явно выражены поясничный и шейный изгибы позвоночника, при прямой вертикальной линии, проходящей через затылок, лопатки и копчик. Правильную осанку необходимо запомнить путем контроля за своей осанкой в течение некоторого времени, и потом она будет рефлекторно поддерживаться.

3. Длительно повторяющиеся однообразные движения.

Повторяющиеся однообразные нагрузки могут привести к физическому повреждению суставов и сухожилий. Наиболее известен в среде пользователей ПК тендовагинит запястных сухожилий, связанный с вводом информации посредством мыши и клавиатуры.

4. Долгое пребывание в замкнутом помещении.

Совокупно с длительной концентрацией внимания на небольшой зоне (дисплее монитора) может негативно воздействовать на психику.

5. Электромагнитное излучение.

В основном исходит от монитора, негативно влияет на глаза и электрохимические процессы, протекающие внутри организма человека.

Для борьбы с большей частью повреждающих факторов рекомендации просты — надо хотя бы раз в час устраивать перерывы, походить, размяться. Если Вы курите – выходите в другое помещение, это и разминка и не будете находиться все время в прокуренном помещении. Очень полезно выполнять физические упражнения по своему вкусу. Если какие-то проблемы уже возникли - лучше обратиться к специалисту - массажисту или мануальному терапевту.

Если из-за напряженной работы редко моргаете - моргайте осознанно, каждые несколько минут. Это не только способствует увлажнению роговицы и удалению ее отмерших клеток, но и массирует глазные яблоки, что тоже полезно. Также полезно вращать глазами при закрытых веках. Разминка для мышц аккомодации (наведения на резкость хрусталика) следующая: встать перед окном, из которого виден горизонт, и поочередно фокусировать взгляд то на раме окна, то на горизонте.

3.2 Выбор помещения

Помещение должно быть просторным, хорошо проветриваемым и освещаемым. Яркий свет порождает блики на мониторе, поэтому следует использовать жалюзи, для защиты от прямого солнечного света, и матовые лампочки, для создания рассеянного источника света в помещении. По гигиеническим нормам помещение в целом и рабочее место должны быть освещены достаточно и равномерно. Недопустимо в темной комнате освещать только рабочее пространство.

Пыль и высокая температура вредны не только для здоровья человека, но и для техники, поэтому рекомендуется использовать кондиционер.

Синтетические ткани при соприкосновении с натуральными и телом накапливают статическое электричество, которое вредно для техники и вызывает неприятные ощущения при прикосновении к предметам с другим потенциалом, поэтому рекомендуется стараться выбирать одежду из натуральных волокон и использовать специальные антистатические браслеты.

3.3 Выбор стола и его ориентации

Стол должен быть по возможности большим. Это главное условие, так как если на столе едва хватает места для размещения всей периферии, то про эргономику можно забыть. Высота стола должны быть где-то на уровне середины живота при прямой посадке, когда пятка и носок стоят на полу, а бедро параллельно полу и спина держится прямо. Глубина — так, чтобы расстояния от глаз да экрана монитора было достаточным, но не менее 50 см, более точные цифры будут приведены далее. Ширина зависит от количества периферийных устройств и прочего, что должно находиться на столе. Чем массивнее стол - тем лучше, так как в этом случае он более устойчив, что препятствует распространению вибрации, которая вредна как для техники, так и для человека.

Между столом и стеной рекомендуется оставлять свободное пространство. Во-первых, даже при полутораметровой глубине стола предполагается, что задняя часть монитора с ЭЛТ будет свешиваться за него, а во-вторых, будет обеспечен свободный подход к задней стенке системного блока, от которой отходят все кабели.

Оптимальный вариант посадки - лицом к дверям, чтобы за спиной было закрытое жалюзи окно. Другой вариант - окно слева, системный блок прикрывает монитор от бликов.

В настоящее время широкое распространение получила так называемая «компьютерная» мебель. Единственное ее преимущество - она способна дать относительно удобную посадку на очень маленькой площади, так что правильнее называть ее «офисной» мебелью.

3.4 Выбор и установка кресла

От того, на чем и как мы сидим, зависит положение и удобство ног, и, главное, позвоночника. Выбранное кресло должно включать в себя минимум необходимого - колесики, физиологическая спинка и устройство для настройки их высоты.

Главная рекомендация — чаще менять положение, то есть, посидев некоторое время, наклонившись к клавиатуре, надо откинуться на спинку и так далее. При этом улучшается циркуляция крови и предотвращается ее застой.

Следует помнить следующее - если стул или кресло, в котором Вы сидите, неудобное, то от него следует отказаться. Ничто не должно отвлекать от работы или вредить здоровью. Профессионал проводит на этом месте достаточно много времени, так что удобно должно быть всегда.

Наиболее корректная посадка следующая. Нога должна стоять большую часть времени на полу полной ступней. Для нее это наиболее естественное положение. Оптимальный вариант положения рук при печати в том случае, если Вы сидите за двумя столами, составленными углом. Рука почти всегда должна локтем, предплечьем и запястьем лежать на столе. Это положение, когда мышцы плечевого пояса наименее нагружены, и служит профилактикой шейного остеохондроза, так как напряженные мышцы плеч все время незначительно перекашивают шейный отдел позвоночника.

Если кресло не анатомическое, то крайне необходимо подкладывать под поясницу подушечку - это профилактика остеохондроза поясничного. Если есть подголовник, то это очень полезно, так как снимает напряжение с мышц шеи.

3.5 Условия эксплуатации компьютера

Компьютер предназначен для работы в закрытом отапливаемом помещении при следующих условиях окружающей среды:

  •  Температура окружающего воздуха от +10оС до +35оС;
  •  Атмосферное давление от 630 до 800 мм ртутного столба;
  •  Относительная влажность воздуха не более 80%;
  •  Запыленность воздуха не более 0,75 мг/м3 ;
  •  В воздухе не должно быть паров агрессивных жидкостей и веществ, вызывающих коррозию.

3.6 Требования к электропитанию компьютера

Электропитание осуществляется от однофазной сети переменного тока напряжением 220 В ± 10% и частотой 50-60 Гц.

Компьютер и его периферийные устройства должны подключаться к электрической сети через специальные розетки, имеющие заземляющие контакты. Заземляющие контакты должны обеспечивать надежное заземление. Сопротивление заземляющего контура должно быть не более 4 Ом. Запрещается использовать в качестве заземления водопроводные и газовые трубы, радиаторы и другие узлы парового отопления.

От розетки, к которой подключен компьютер, не рекомендуется подавать электропитание на устройства, создающие при работе большие импульсные помехи в электрической сети (кондиционеры, пылесосы, вентиляторы и так далее). Это может вызвать сбои в работе компьютера и привести к потере информации.

3.7 Меры безопасности при работе на компьютере

Конструкция компьютера обеспечивает электробезопасность для работающего на нем человека. Тем не менее, компьютер является электрическим устройством, работающим от сети переменного тока напряжением 220В, а в мониторе напряжение, подаваемое на кинескоп, достигает нескольких десятков киловольт.

Чтобы предотвратить возможность поражения электрическим током, возникновения пожара и выхода из строя самого компьютера при работе и техническом обслуживании компьютера необходимо соблюдать следующие меры предосторожности:

  •  сетевые розетки, от которых питается компьютер, должны соответствовать вилкам кабелей электропитания компьютера;
  •  запрещается использовать в качестве заземления водопроводные и газовые трубы, радиаторы и другие узлы парового отопления;
  •  запрещается во время работы компьютера отключать и подключать разъемы соединительных кабелей;
  •  запрещается снимать крышку системного блока и производить любые операции внутри корпуса до полного отключения системного блока от электропитания;
  •  запрещается разбирать монитор и пытаться самостоятельно устранять неисправности (опасные для жизни высокие напряжения на элементах схемы монитора сохраняются длительное время после отключения питания);
  •  запрещается закрывать вентиляционные отверстия на корпусе системного блока и монитора посторонними предметами во избежание перегрева элементов, расположенных внутри этих устройств;
  •  повторное включение компьютера рекомендуется производить не ранее, чем через 20 секунд после выключения.

Количество компьютеров в помещении ограничено как площадью помещения, так и его объемом (нормы содержатся в «Гигиенических требованиях видеодисплейным терминалам, персональным электронно-вычислительным машинам и организации работы»). Площадь на одно рабочее место с ВДТ или ПЭВМ для взрослых пользователей должна составлять не менее 6,0 кв. м, а объем – не менее 20,0 куб. м. Экран видеомонитора должен находиться от глаз пользователя на оптимальном расстоянии 600-700 мм, но не ближе 500 мм с учетом размеров алфавитно-цифровых знаков и символов. Так же целесообразно не находиться ближе 500 мм сзади и сбоку монитора.


Заключение

В результате проделанной работы был создан работоспособный комплекс, включающий в себя:

  •  мейнфрейм z9 BC с установленной операционной системой SUSE Linux Enterprise Server for System Z и HTTP-сервером Apache, сконфигурированными в соответствии с поставленной задачей;
  •  на удаленных рабочих машинах использовался стандартный web-браузер для доступа к ресурсам сервера.

Был получен опыт работы в операционной среде SUSE Linux Enterprise Server for System Z, а также опыт по сборке из исходных кодов, установке и последующей конфигурации  HTTP-сервера Apache.

Было собрано и изучено большое количество материалов и сведений, касающихся установки, настройки и администрирования HTTP-сервера Apache.

Разработанная система может быть использована в качестве базовой основы для организации и обеспечения web-доступа к архивным метеорологическим данным в ГУ «ВНИИГМИ-МЦД».


Список используемых источников

  1.  А.В. Беспрозванных Программные средства разработки систем управления данными на основе СУБД реляционного типа и трехуровневой модели. Санкт-Петербург Гидрометеоиздат 1999г.
  2.  Е.Д. Вязилов, Н.Н. Михайлов, В.И. Ибрагимова Информационные ресурсы по океанографии на WEB-сервере. Санкт-Петербург Гидрометеоиздат 1999г.
  3.  Е.Д. Вязилов, Н.Н. Михайлов, В.В.Чепурнов. Web портал Единой системы информации об обстановке в Мировом океане (ЕСИМО): методы построения и реализации. Обнинск Гидрометеоиздат 2002г.
  4.  http://www.bog.pp.ru/work/apache2.html “Apache 2: HTTP сервер. Установка, настройка
  5.  http://httpd.apache.org/docs/2.2/ “Apache HTTP Server Version 2.2 Documentation”


Приложение 1

# This is the main Apache HTTP server configuration file.  It contains the

# configuration directives that give the server its instructions.

# See <URL:http://httpd.apache.org/docs/2.2> for detailed information.

# In particular, see

# <URL:http://httpd.apache.org/docs/2.2/mod/directives.html>

# for a discussion of each configuration directive.

#

# Do NOT simply read the instructions in here without understanding

# what they do.  They're here only as hints or reminders.  If you are unsure

# consult the online docs. You have been warned.  

#

# Configuration and logfile names: If the filenames you specify for many

# of the server's control files begin with "/" (or "drive:/" for Win32), the

# server will use that explicit path.  If the filenames do *not* begin

# with "/", the value of ServerRoot is prepended -- so "logs/foo_log"

# with ServerRoot set to "/opt/apache2" will be interpreted by the

# server as "/opt/apache2/logs/foo_log".

#

# ServerRoot: The top of the directory tree under which the server's

# configuration, error, and log files are kept.

#

# Do not add a slash at the end of the directory path.  If you point

# ServerRoot at a non-local disk, be sure to point the LockFile directive

# at a local disk.  If you wish to share the same ServerRoot for multiple

# httpd daemons, you will need to change at least LockFile and PidFile.

#

ServerRoot "/opt/apache2"

#

# Listen: Allows you to bind Apache to specific IP addresses and/or

# ports, instead of the default. See also the <VirtualHost>

# directive.

#

# Change this to Listen on specific IP addresses as shown below to

# prevent Apache from glomming onto all bound IP addresses.

#

#Listen 12.34.56.78:80

Listen 80

#

# Dynamic Shared Object (DSO) Support

#

# To be able to use the functionality of a module which was built as a DSO you

# have to place corresponding `LoadModule' lines at this location so the

# directives contained in it are actually available _before_ they are used.

# Statically compiled modules (those listed by `httpd -l') do not need

# to be loaded here.

#

# Example:

# LoadModule foo_module modules/mod_foo.so

#

<IfModule !mpm_netware_module>

<IfModule !mpm_winnt_module>

#

# If you wish httpd to run as a different user or group, you must run

# httpd as root initially and it will switch.  

#

# User/Group: The name (or #number) of the user/group to run httpd as.

# It is usually good practice to create a dedicated user and group for

# running httpd, as with most system services.

#

User apache

Group apache

</IfModule>

</IfModule>

# 'Main' server configuration

#

# The directives in this section set up the values used by the 'main'

# server, which responds to any requests that aren't handled by a

# <VirtualHost> definition.  These values also provide defaults for

# any <VirtualHost> containers you may define later in the file.

#

# All of these directives may appear inside <VirtualHost> containers,

# in which case these default settings will be overridden for the

# virtual host being defined.

#

Timeout 300

KeepAlive On

MaxKeepAliveRequests 100

KeepAliveTimeout 30

<IfModule prefork.c>

   MinSpareServers 5

   MaxSpareServers 10

   StartServers 5

   MaxClients 150

   MaxRequestsPerChild 0

</IfModule>

#

# ServerAdmin: Your address, where problems with the server should be

# e-mailed.  This address appears on some server-generated pages, such

# as error documents.  e.g. admin@your-domain.com

#

ServerAdmin oksibuterat@yandex.ru

#

# ServerName gives the name and port that the server uses to identify itself.

# This can often be determined automatically, but we recommend you specify

# it explicitly to prevent problems during startup.

#

# If your host doesn't have a registered DNS name, enter its IP address here.

#

ServerName 127.0.0.1:80

#

# DocumentRoot: The directory out of which you will serve your

# documents. By default, all requests are taken from this directory, but

# symbolic links and aliases may be used to point to other locations.

#

DocumentRoot "/opt/apache2/htdocs"

#

# Each directory to which Apache has access can be configured with respect

# to which services and features are allowed and/or disabled in that

# directory (and its subdirectories).

#

# First, we configure the "default" to be a very restrictive set of

# features.  

#

<Directory />

   Options FollowSymLinks

   AllowOverride None

   Order deny,allow

   Deny from all

</Directory>

#

# Note that from this point forward you must specifically allow

# particular features to be enabled - so if something's not working as

# you might expect, make sure that you have specifically enabled it

# below.

#

# This should be changed to whatever you set DocumentRoot to.

#

<Directory "/opt/apache2/htdocs">

   #

   # Possible values for the Options directive are "None", "All",

   # or any combination of:

   #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews

   #

   # Note that "MultiViews" must be named *explicitly* --- "Options All"

   # doesn't give it to you.

   #

   # The Options directive is both complicated and important.  Please see

   # http://httpd.apache.org/docs/2.2/mod/core.html#options

   # for more information.

   #

   Options Indexes FollowSymLinks

   #

   # AllowOverride controls what directives may be placed in .htaccess files.

   # It can be "All", "None", or any combination of the keywords:

   #   Options FileInfo AuthConfig Limit

   #

   AllowOverride AuthConfig

   #

   # Controls who can get stuff from this server.

   #

   Order allow,deny

   Allow from all

</Directory>

#

# DirectoryIndex: sets the file that Apache will serve if a directory

# is requested.

#

<IfModule dir_module>

   DirectoryIndex index.html

</IfModule>

#

# The following lines prevent .htaccess and .htpasswd files from being

# viewed by Web clients.

#

<FilesMatch "^\.ht">

   Order allow,deny

   Deny from all

   Satisfy All

</FilesMatch>

#

# ErrorLog: The location of the error log file.

# If you do not specify an ErrorLog directive within a <VirtualHost>

# container, error messages relating to that virtual host will be

# logged here.  If you *do* define an error logfile for a <VirtualHost>

# container, that host's errors will be logged there and not here.

#

ErrorLog "logs/error_log"

#

# LogLevel: Control the number of messages logged to the error_log.

# Possible values include: debug, info, notice, warn, error, crit,

# alert, emerg.

#

LogLevel warn

<IfModule log_config_module>

   #

   # The following directives define some format nicknames for use with

   # a CustomLog directive (see below).

   #

   LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

   LogFormat "%h %l %u %t \"%r\" %>s %b" common

   <IfModule logio_module>

     # You need to enable mod_logio.c to use %I and %O

     LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio

   </IfModule>

   #

   # The location and format of the access logfile (Common Logfile Format).

   # If you do not define any access logfiles within a <VirtualHost>

   # container, they will be logged here.  Contrariwise, if you *do*

   # define per-<VirtualHost> access logfiles, transactions will be

   # logged therein and *not* in this file.

   #

   CustomLog "logs/access_log" common

   #

   # If you prefer a logfile with access, agent, and referer information

   # (Combined Logfile Format) you can use the following directive.

   #

   #CustomLog "logs/access_log" combined

</IfModule>

<IfModule alias_module>

   #

   # Redirect: Allows you to tell clients about documents that used to

   # exist in your server's namespace, but do not anymore. The client

   # will make a new request for the document at its new location.

   # Example:

   # Redirect permanent /foo http://www.example.com/bar

   #

   # Alias: Maps web paths into filesystem paths and is used to

   # access content that does not live under the DocumentRoot.

   # Example:

   # Alias /webpath /full/filesystem/path

   #

   # If you include a trailing / on /webpath then the server will

   # require it to be present in the URL.  You will also likely

   # need to provide a <Directory> section to allow access to

   # the filesystem path.

   #

   # ScriptAlias: This controls which directories contain server scripts.

   # ScriptAliases are essentially the same as Aliases, except that

   # documents in the target directory are treated as applications and

   # run by the server when requested rather than as documents sent to the

   # client.  The same rules about trailing "/" apply to ScriptAlias

   # directives as to Alias.

   #

   ScriptAlias /cgi-bin/ "/opt/apache2/cgi-bin/"

</IfModule>

<IfModule cgid_module>

   #

   # ScriptSock: On threaded servers, designate the path to the UNIX

   # socket used to communicate with the CGI daemon of mod_cgid.

   #

   #Scriptsock logs/cgisock

</IfModule>

#

# "/opt/apache2/cgi-bin" should be changed to whatever your ScriptAliased

# CGI directory exists, if you have that configured.

#

<Directory "/opt/apache2/cgi-bin">

   AllowOverride None

   Options None

   Order allow,deny

   Allow from all

</Directory>

#

# DefaultType: the default MIME type the server will use for a document

# if it cannot otherwise determine one, such as from filename extensions.

# If your server contains mostly text or HTML documents, "text/plain" is

# a good value.  If most of your content is binary, such as applications

# or images, you may want to use "application/octet-stream" instead to

# keep browsers from trying to display binary files as though they are

# text.

#

DefaultType text/plain

<IfModule mime_module>

   #

   # TypesConfig points to the file containing the list of mappings from

   # filename extension to MIME-type.

   #

   TypesConfig conf/mime.types

   #

   # AddType allows you to add to or override the MIME configuration

   # file specified in TypesConfig for specific file types.

   #

   #AddType application/x-gzip .tgz

   #

   # AddEncoding allows you to have certain browsers uncompress

   # information on the fly. Note: Not all browsers support this.

   #

   #AddEncoding x-compress .Z

   #AddEncoding x-gzip .gz .tgz

   #

   # If the AddEncoding directives above are commented-out, then you

   # probably should define those extensions to indicate media types:

   #

   AddType application/x-compress .Z

   AddType application/x-gzip .gz .tgz

   #

   # AddHandler allows you to map certain file extensions to "handlers":

   # actions unrelated to filetype. These can be either built into the server

   # or added with the Action directive (see below)

   #

   # To use CGI scripts outside of ScriptAliased directories:

   # (You will also need to add "ExecCGI" to the "Options" directive.)

   #

   #AddHandler cgi-script .cgi

   # For type maps (negotiated resources):

   #AddHandler type-map var

   #

   # Filters allow you to process content before it is sent to the client.

   #

   # To parse .shtml files for server-side includes (SSI):

   # (You will also need to add "Includes" to the "Options" directive.)

   #

   #AddType text/html .shtml

   #AddOutputFilter INCLUDES .shtml

</IfModule>

#

# The mod_mime_magic module allows the server to use various hints from the

# contents of the file itself to determine its type.  The MIMEMagicFile

# directive tells the module where the hint definitions are located.

#

#MIMEMagicFile conf/magic

#

# Customizable error responses come in three flavors:

# 1) plain text 2) local redirects 3) external redirects

#

# Some examples:

#ErrorDocument 500 "The server made a boo boo."

#ErrorDocument 404 /missing.html

#ErrorDocument 404 "/cgi-bin/missing_handler.pl"

#ErrorDocument 402 http://www.example.com/subscription_info.html

#

# EnableMMAP and EnableSendfile: On systems that support it,

# memory-mapping or the sendfile syscall is used to deliver

# files.  This usually improves server performance, but must

# be turned off when serving from networked-mounted

# filesystems or if support for these functions is otherwise

# broken on your system.

#

#EnableMMAP off

#EnableSendfile off

# Supplemental configuration

#

# The configuration files in the conf/extra/ directory can be

# included to add extra features or to modify the default configuration of

# the server, or you may simply copy their contents here and change as

# necessary.

# Server-pool management (MPM specific)

#Include conf/extra/httpd-mpm.conf

# Multi-language error messages

#Include conf/extra/httpd-multilang-errordoc.conf

# Fancy directory listings

#Include conf/extra/httpd-autoindex.conf

# Language settings

#Include conf/extra/httpd-languages.conf

# User home directories

#Include conf/extra/httpd-userdir.conf

# Real-time info on requests and configuration

#Include conf/extra/httpd-info.conf

# Virtual hosts

Include conf/extra/httpd-vhosts.conf

# Local access to the Apache HTTP Server Manual

#Include conf/extra/httpd-manual.conf

# Distributed authoring and versioning (WebDAV)

#Include conf/extra/httpd-dav.conf

# Various default settings

#Include conf/extra/httpd-default.conf

# Secure (SSL/TLS) connections

#Include conf/extra/httpd-ssl.conf

#

# Note: The following must must be present to support

#       starting without SSL on platforms with no /dev/random equivalent

#       but a statically compiled-in mod_ssl.

#

<IfModule ssl_module>

SSLRandomSeed startup builtin

SSLRandomSeed connect builtin

</IfModule>


Приложение 2

# Virtual Hosts

#

# If you want to maintain multiple domains/hostnames on your

# machine you can setup VirtualHost containers for them. Most configurations

# use only name-based virtual hosts so the server doesn't need to worry about

# IP addresses. This is indicated by the asterisks in the directives below.

#

# Please see the documentation at

# <URL:http://httpd.apache.org/docs/2.2/vhosts/>

# for further details before you try to setup virtual hosts.

#

# You may use the command line option '-S' to verify your virtual host

# configuration.

#

# Use name-based virtual hosting.

#

NameVirtualHost *:80

#

# VirtualHost example:

# Almost any Apache directive may go into a VirtualHost container.

# The first VirtualHost section is used for all requests that do not

# match a ServerName or ServerAlias in any <VirtualHost> block.

#

<VirtualHost *:80>

   DocumentRoot "/opt/apache2/htdocs/test2.ru"

   ServerName mcd.test2.ru

   ServerAlias www.mcd.test2.ru

   ErrorLog "logs/test2.ru-error_log"

   CustomLog "logs/test2.ru-access_log" common

</VirtualHost>

<VirtualHost *:80>

   DocumentRoot "/opt/apache2/htdocs/test1.ru"

   ServerName mcd.test1.ru

   ServerAlias www.mcd.test1.ru

   ErrorLog "logs/test1.ru-error_log"

   CustomLog "logs/test1.ru-access_log" common

</VirtualHost>

<VirtualHost *:80>

   DocumentRoot "/opt/apache2/htdocs/test3.ru"

   ServerName mcd.test3.ru

   ServerAlias www.mcd.test3.ru

   ErrorLog "logs/test3.ru-error_log"

   CustomLog "logs/test3.ru-access_log" common

</VirtualHost>


Приложение 3

Содержимое файлов .htaccess:

В директории /opt/apache2/htdocs/test1.ru

AuthType Basic
AuthName "Restricted Area"
AuthUserFile /opt/apache2/passwd/pass-test1.ru
Require user admin

В директории /opt/apache2/htdocs/test3.ru

AuthType Basic
AuthName "By Invitation Only"
AuthUserFile /opt/apache2/passwd/pass-test3.ru-group
AuthGroupFile /opt/apache2/passwd/test3.ru-group
Require group test3.ru-group 


 

А также другие работы, которые могут Вас заинтересовать

65187. Виды термической обработки 34 KB
  В любительской практике для определения температуры раскаленной детали по цвету можно использовать приведенную таблицу Закалка придает стальной детали большую твердость и износоустойчивость.
65188. УРАВНЕНИЯ СОСТОЯНИЯ ЛИНЕЙНОЙ ЭЛЕКТРИЧЕСКОЙ ЦЕПИ 61.01 KB
  Для ветвей i и j имеющих взаимное сопротивление связь между всеми указанными величинами определяется следующими уравнениями: 12 при указанных положительных направлениях.
65189. Виникнення філософії. Філософський спосіб освоєння дійсності 27.5 KB
  Виникнення філософії пов'язане зі становленням світогляду його розвитком та ступенями зрілості. Вирішення першого завдання привело до появи природничих наук в лоні філософії. Останній блок питань належав і належить філософії.
65191. Суверенитет государства: понятие и содержание 27 KB
  Суверенитет государства это верховенство государственной власти внутри страны способность государственной власти издавать общеобязательные для всех членов общества правила поведения устанавливать и обеспечивать единый правопорядок...
65192. Многообразие форм знания и специфика научного знания 32.5 KB
  Познавательное отношение человека к миру осуществляется в различных формах в форме обыденного познания познания художественного религиозного наконец в форме научного познания. Первые три области познания рассматриваются в отличие от науки как вненаучные формы.
65193. Общее представление о социальной психологии как науке, ее объекте, и предмете. Социальная психология в системе психологических знаний 36.5 KB
  Социальная психология раздел психологии изучающий поведение человека в обществе социуме психические явления происходящие во время взаимодействия различных групп людей. Выработка практических рекомендаций в плане совершенствования взаимодействия людей...
65194. Проблемы и методы социальной психологии 31.5 KB
  Социальная психология пользуется определением личности которое даёт общая психология выясняет каким образом т. Отличие такого подхода от социологического заключается в том что она выявляет каким образом сформировались эти социально-типические черты почему в одних условиях формирования личности...
65195. ОСНОВНЫЕ ИДЕИ ЭЛЕЙСКОЙ ШКОЛЫ (КСЕНОФАН, ПАРМЕНИД, ЗЕНОН) 56.5 KB
  Согласно Пармениду то что есть бытие есть и это следует из самого понятия быть а того чего нет небытия нет что также следует из содержания самого понятия. Пустота отождествляется с небытием – так что пустоты нет.