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

 

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

? операционная система Linux для линейки серверов с Z архитектуройBC ? сервер IBM System z9 Business Class/VM - диалоговая, многопользовательская операционная системаZ - бренд компании IBM для обозначения линейки мейнфреймов с Z архитектурой- программный пакет в ОС SuSE Linux, являющийся утилитой конфигурации операционной системы и установки/обновления пакетов с ПО.- распределенная система, предоставляющая доступ к связанным между собой документам, расположенным на различных компьютерах, подключенных к Интернету.- протокол прикладного уровня передачи данных (HyperText Transfer Protocol)

СУБД - система управления базами данных- криптографический протокол, который обеспечивает установление безопасного соединения между клиентом и сервером- стандарт интерфейса, используемого для связи внешней программы с web-сервером- язык для динамической «сборки» веб-страниц на сервере из отдельных составных частей и выдачи клиенту полученного HTML-документа- механизм в сетях TCP/IP, позволяющий преобразовывать IP-адреса транзитных пакетов- мультипроцессный модуль обработки запросов

.NET - программная платформа, разработанная корпорацией Microsoft- 128-битный алгоритм хеширования- проект по созданию полноценного воплощения системы .NET Framework на базе свободного программного обеспечения- SUSE Linux Enterprise Server

Введение


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

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

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

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

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

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

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


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

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

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

Поиск и изучение литературы по установке и настройке HTTP-сервера Apache

Сборка и установка HTTP-сервера Apache

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

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

настройка доступа к виртуальным хостам

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

1. SUSE Linux Enterprise Server для System z


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


.1.1 Объединение серверов

Объединение серверов с помощью z/VM и 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.2 Поддержка встроенных средств для Linux (IFL)

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

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

Управления пакетами с ZYPP Linux Enterprise Server включает ZYPP - систему быстрого обновления на любом дистрибутиве Enterprise Linux. Novell имеет оптимизированный ZYPP для повышения производительности и точности, который более многофункционален, чем такие инструменты, как YUM и Smart. / AutoYaST, WebYaSTпредлагает удобные средства для установки, настройки и управления всеми аспектами операционной системы, как во время установки, так и после нее. AutoYaST позволяет автоматические и удаленные системы конфигурации для крупных организаций, а WebYaST предлагает все функциональные возможности YaST для пользователей, используя веб-браузер. системаLinux Enterprise Starter - это система для System Z, позволяющая предварительно настроить установку сервера, что делает развертывание системы более легким, устраняя необходимость в отдельной системе для размещения установочных файлов. Кроме того, этот инструмент не требует подключение к сети вне мэйнфреймов для установки Linux серверов.


.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.<#"justify">Динамическое добавление / удаление

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

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

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

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

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

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


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


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

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

Локальная установка: 512 Мб оперативной памяти.

Используя Secure Shell (SSH): 512 Мб оперативной памяти.

Через Virtual Network Computing (VNC) с использованием File Transfer Protocol (FTP): 512 Мб оперативной памяти.

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

Мб оперативной памяти.

Мб на жестком диске для программного обеспечения.

Мб на жестком диске для хранения пользовательских данных.

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

От 512 Мб до 4 Гб оперативной памяти, минимум по 256 Мб на каждый процессор.

Гб на жестком диске.

Сетевой интерфейс (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,бит3264646464Макс. число логических процессоров32до 4096до 409664до 1024Макс. RAM (теоретическое / сертифицированое)64 GiB / 16 GiB1 PiB/8+ TiB64 TiB/16 TiB4 TiB/256 GiB1 PiB/512 GiBМакс. подкачкидо 31 * 64 ГБМакс. Процессов 1048576Макс. размер в блочных устройствдо 16 TiBдо 8 EiBМакс. пользовательское пространстве / пространство для ядра3/1 GiB2 EiB/ нет данных128 TiB/ 128 TiBнет данных2 TiB/2 EiB1.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


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

HTTP-сервер являете свободно распространяемым web-сервером. Apache так же является кроссплатформенным ПО <#"justify">Основными достоинствами Apache являются надёжность и гибкость конфигурации. Он позволяет подключать внешние модули для предоставления данных, использовать СУБД для аутентификации <#"justify">Сервер Apache состоит из ядра и подключаемых модулей. Ядро Apache включает в себя основные функциональные возможности, такие как обработка конфигурационных файлов, протокол HTTP и система загрузки модулей. Ядро (в отличие от модулей) полностью разрабатывается Apache Software Foundation <#"justify">В модулях реализуются такие вещи, как:

Поддержка языков программирования <#"justify">Добавление функционала.

Исправление ошибок или модификация основных функций.

Усиление безопасности <#"justify">Ниже представлены базовые модули, входящие в состав сервера при сборке по умолчанию: - авторизация доступа <#"justify">- позволяет привязать CGI скрипт к обработчику, MIME типу или методу запроса;- отображение URL в файловую систему и перенаправление <#"justify">- обработчик send-as-is позволяет обрабатывать файлы, которые содержат часть заголовков ответа в себе;- аутентификация <#"justify">- в отсутствии сделанного вручную индексного файла каталога (задаётся модулем dir <#"justify">- обработчик CGI; устанавливается по умолчанию для prefork MPM;<#"justify">- обработчик CGI; устанавливается по умолчанию для гибридных MPM;- отображение <#"justify">- устанавливает и изменяет переменные окружения <#"justify">- обработка графических карт сервером;<#"justify">- реализует фильтр SSI <#"justify">- журнал доступа <#"justify">- ассоциация файла по суффиксу имени с его обработкой (обработчики и фильтры) и типом содержимого (MIME тип, язык, набор символов и кодировка);- позволяет серверу выбрать один из возможных документов для обслуживания клиента на основе характеристик каждого клиента;<#"justify">- позволяет устанавливать переменные окружения в зависимости от характеристик запроса;<#"justify">- выдача информации о текущем состоянии сервера;- директива UserDir позволяет определить каталог в домашнем каталоге пользователя, который надо использовать при обработке URL вида #"justify">Модули расширения, которые необходимо добавить явно при сборке Apache: _anon - доступ анонимных клиентов к закрытым каталогам по ftp;_dbm - аутентификация <#"justify">- позволяет добавлять заголовки в ответ;

для каждого файла создаётся отдельный файл с дополнительными заголовками; MetaDir, MetaFiles, MetaSuffix);и dav_fs <#"justify">- реализация протокола WebDAV;- реализует фильтр DEFLATE <#"justify">- управление содержимым заголовков Expires и Cache-Control;_filter - позволяет использовать внешнюю программу в качестве фильтра <#"justify">- удаление и замена заголовков запросов и ответов;<#"justify">- выдача информации о конфигурации сервера;_forensic - записывает в отдельный журнал <#"justify">- считает входящие и исходящие байты для каждого запроса, что позволяет использовать форматы %I и %O в модуле log_config <#"justify">- определяет MIME тип по содержимому файла;- позволяет Apache работать как прокси-сервер;

для обслуживания протокола FTP требуется модуль proxy_ftp, HTTP - proxy_http, CONNECT/SSL - proxy_connect и ssl; для кэширования может использоваться модуль cache; может работать в режиме прямого (ProxyRequests) и обратного (ProxyPass, RewriteRule) прокси (балансировка загрузки, кэширование, обход экрана или слияние адресных пространств нескольких серверов);_connect - вспомогательный модуль для модуля proxy;_ftp - вспомогательный модуль для модуля proxy;_http - вспомогательный модуль для модуля proxy;<#"justify">- более мощное средство преобразования URL, чем alias;- загрузка дополнительных модулей при запуске и перезапуске сервера вместо пересборки сервера; директивы LoadModule, LoadFile;- пытается скорректировать опечатки в URL <#"justify">- поддержка криптографического протокол <#"justify">- позволяет запускать CGI программы под указанным именем пользователя и группы;_id <#"justify">- уникальный идентификатор для каждого запроса;<#"justify">- отслеживание клиентов с помощью куки;_alias - организация массового виртуального хостинга, имя из заголовка запроса "Host:" используется для определения каталога, из которого брать файлы.

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

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

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

Система конфигурации Apache основана на текстовых конфигурационных файлах <#"justify">Конфигурация сервера (httpd.conf <#"justify">Конфигурация виртуального хоста (httpd.conf c версии 2.2 extra/httpd-vhosts.conf).

Конфигурация уровня директории (.htaccess <#"justify">Имеет собственный язык конфигурационных файлов, основанный на блоках директив. Практически все параметры ядра могут быть изменены через конфигурационные файлы, вплоть до управления MPM. Большая часть модулей имеет собственные параметры.имеет встроенный механизм виртуальных хостов <#"justify">Ограничение доступа к определённым директориям или файлам.

Механизм авторизации <#"justify">Ограничение доступа к определённым директориям или всему серверу, основанное на IP-адресах <#"justify">Запрет доступа к определённым типам файлов для всех или части пользователей, например, запрет доступа к конфигурационным файлам и файлам баз данных.

Существуют модули, реализующие авторизацию через СУБД <#"justify">В некоторых MPM-модулях присутствует возможность запуска каждого процесса Apache используя различные uid <#"justify">Переменные окружения

Сервер позволяет обмениваться информацией с внешними программами (CGI) и между модулями с помощью переменных окружения. Имя переменной должно начинаться с буквы и может содержать буквы, цифры и символ нижнего подчёркивания. Перед вызовом CGI сервер устанавливает переменные запроса в соответствии со стандартом (некоторые модуля добавляют свои переменные): _ROOT="абсолютное-имя-директории-документов-сервера" _INTERFACE="CGI/1.1" _ACCEPT="image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png" _ACCEPT_CHARSET="iso-8859-1,*,utf-8" _ACCEPT_LANGUAGE="ru, en" _CACHE_CONTROL="max-age=259200" _CONNECTION="keep-alive" _HOST="www.printhouse.ru" - если клиент посылает поле HOST в запросе _IF_MODIFIED_SINCE="Wednesday, 26-Jul-00 15:20:17 GMT; length=1437" _USER_AGENT="Mozilla/4.05 [en] (X11; I; SunOS 5.5 sun4m)" _VIA="1.0 acache.deol.ru:3129 (Squid/2.3.STABLE1)" - proxy _X_FORWARDED_FOR="195.161.72.28" - proxy ="директории, в которых ищутся исполняемые программы" _STRING="" _ADDR="клиент или прокси" _PORT="39885" _METHOD="GET" _URI="/cgi-bin/printenv" _FILENAME=абсолютное имя файла" _NAME="логическое имя объекта" _ADDR="IP адрес" _ADMIN="почтовый адрес администратора сервера" _NAME="имя-определенное-по-IP" _PORT="80" _PROTOCOL="HTTP/1.0" _SIGNATURE="/1.3.12 Server at dual.deol.ru Port 80\n" _SOFTWARE="Apache/1.3.12 (Unix) rus/PL29.4"

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

Модуль setenvif позволяет устанавливать переменные в зависимости от характеристик запроса (директивы выполняются последовательно): BrowserMatch регулярное-выражение [!]имя-переменной[=значение] ... (установить переменную (в 1) или присвоить значение или удалить переменную в зависимости от заголовка запроса "User-Agent:")- сравнение без учёта регистра символовSetEnvIf имя-атрибута регулярное-выражение [!]имя-переменной[=значение] ... (установить переменную (в 1) или присвоить значение (может содержать $1-$9 как значения подвыражения, см. PCRE) или удалить переменную в зависимости от значения атрибута:

имя поля заголовка запроса (например: Host, User-Agent, Referer, Accept-Language и др.), вместо имени поля можно указывать регулярное выражение_Host_Addr_Addr_Method (GET, POST и т.д.)_Protocol ("HTTP/0.9", "HTTP/1.1" и т.д.)_URI

имя переменной окружения, установленной предыдущими директивами SetEnvIf[NoCase]- сравнение без учёта регистра символов

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

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

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

модуль include (SSI) позволяет выводить значения переменных командой echo и использовать их для условного исполнения

модуль access позволяет управлять доступом, основываясь на значениях переменных

модуль log_config позволяет заносить значения переменных в журнал и принимать решения о записи вообще

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

модуль mod_ext_filter может активировать внешний фильтр, основываясь на значениях переменных

модуль rewrite может использовать различные варианты, основываясь на значениях переменных

Специальные переменные окружения, меняющие обработку запроса сервером: .0 (обрабатывать запрос в соответствии с протоколом HTTP/1.0)no-vary (не вставлять поле Vary в заголовок ответа)response-1.0 (выдавать ответ в формате HTTP/1.0)only-text/html (запретить использование модуля deflate для всех типов содержимого, кроме text/html)gzip (запретить использование модуля deflate для всех типов)language (модуль negotiation выбирает вариант, основываясь на этикетке языка, указанной в запросе)carefully (для доступа DAV Microsoft WebFolders)error-charset (сопроводительный текст перенаправления не помечается как ISO-8859-1)


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


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

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

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

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

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

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

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

Загрузка дистрибутиваможно загрузить со страницы загрузки 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 Установка web-сервера Apache

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

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

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


.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 принимает следующие команды:(предварительно проверяется синтаксис файла настройки)(нужен mod_status и lynx)(перезапуск без обрывания текущих соединений, статистика не сбрасывается; журналы закрываются не сразу, рекомендуемая пауза - 15 минут)

Содержимое скрипта 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

#

# #"justify">#

# 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

#="$@"

#

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

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

#

# the path to your httpd binary, including options if necessary='/opt/apache2/bin/httpd'

#

# pick up any necessary environment variablestest -f /opt/apache2/bin/envvars; then

. /opt/apache2/bin/envvars

#

# 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 -dump"

#

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

# have one, then status and fullstatus will not work.="#"justify">#

# 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._MAX_FILES="ulimit -S -n `ulimit -H -n`"

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

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

# Set the maximum number of file descriptors allowed per child process.["x$ULIMIT_MAX_FILES" != "x"] ; then

$ULIMIT_MAX_FILES=0[ "x$ARGV" = "x" ] ; then ="-h"$ARGV in|stop|restart|graceful|graceful-stop)

$HTTPD -k $ARGV=$?

;;|sslstart|start-SSL)The startssl option is no longer supported.Please edit httpd.conf to include the SSL configuration settingsand then use "apachectl start".=2

;;)

$HTTPD -t=$?

;;)

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

;;)

$LYNX $STATUSURL

;;

*)

$HTTPD $ARGV=$?$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

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

/etc/sysconfig/httpd

# Path to the apachectl script, server binary, and short-form for messages.=/opt/apache2/bin/apachectl=/opt/apache2/bin/httpd=$httpd/logs/httpd.pid=httpd=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.() {-n $"Starting $prog: "$httpd $OPTIONS=$?

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

}() {-n $"Stopping $prog: "$httpd=$?

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

}() {-n $"Reloading $prog: "$httpd -HUP=$?

}


# See how we were called."$1" in)

;;)

;;)$httpd=$?

;;)

;;)[-f $pid] ; then

;;)

;;|help|configtest|fullstatus)

$apachectl $@=$?

;;

*)$"Usage: $prog {start|stop|restart|condrestart|reload|status"$"|fullstatus|graceful|help|configtest}"1$RETVAL

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

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


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

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

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

Чтобы отправить сигнал родительскому процессу, следует набрать следующую команду:-TERM `cat /opt/apache2/logs/httpd.pid`

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

После того, как будут отправлены сигналы процессу httpd, можно узнать состояние сервера, набрав:-f /usr/local/apache2/logs/error_log

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

Сигнал: TERM-k stop

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

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

Сигнал: HUP-k restart

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

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

Сигнал: USR1-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

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

linux сервер виртуальный хост

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


.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): (по умолчанию)(дополнительные файлы даже не читаются, что сильно ускоряет работу сервера)

тип [ тип ... ] (директивы авторизации)(директивы, управляющие типом обработки) (директивы автоматического построения индексов каталогов)(Allow, Deny и Order)(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 применяются после соответствующих общих секций):

секция Directory (кроме регулярных выражений) и .htaccess (.htaccess перебивает Directory, если разрешено директивой AllowOverride)

секция DirectoryMatch и Directory с регулярными выражениями

секции Files и FilesMatch

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

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


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

Один сервер Apache может обслуживать запросы к нескольким сайтам (на одном компьютере можно запустить несколько серверов Apache, если это необходимо по требованиям безопасности - в этом случае можно задать отдельные User/Group). Описание каждого сайта заключается в секцию VirtualHost <#"justify">При виртуальном хостинге на основе IP адреса для определения нужного сайта (секции VirtualHost) используется IP адрес сервера (или порт), соответственно, каждый сайт должен иметь отдельный IP адрес. В заголовке секции рекомендуется указывать IP адрес (в любом случае, при разборе конфигурации доменное имя преобразуется в IP адрес).

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

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

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

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

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

Для проверки работоспособности хостов наберем в браузере их адреса. На следующих рисунках показан результат запросов к серверу. На Рис. 2 показана стартовая страница основного сайта расположенного по адресу #"justify">

Рис. 2 - Стартовая страница сайта #"justify">

Рис. 3 - Вход на хостинг #"justify">

Рис. 4 - Стартовая страница хостинга #"justify">

Рис. 5 - Стартовая страница хостинга #"justify">

Рис. 6 - Вход на хостинг #"justify">

Рис. 7 - Стартовая страница хостинга #"justify">Как видно из рисунков все хостинги отвечают на запрос браузера и работоспособны.


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

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

При аутентификации сервер определяет директивой ядра <#"justify">Директива 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).

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

Ключи:

c (создавать файл с паролями)

d (использовать crypt() вместо хеширования MD5)

m (использовать хеширование MD5 вместо crypt())

D (удалить запись из файла)

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

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

Директива ядра <#"justify">Модуль access обеспечивает авторизацию доступа на основе IP адреса клиента или других характеристиках запроса (т.е. без аутентификации). Секция Limit <#"justify">доменное имя (м.б. частичное) - с тех хостов, имя которых заканчивается на эту строку; сервер делает обратный, затем прямой поиск DNS

полный IP адрес

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

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

На моем сервере настроены три виртуальных хоста со следующими ограничениями на доступ к ним:.test1.ru - доступ разрешен только одному пользователю admin.test2.ru - доступ разрешен всем.test3.ru - доступ разрешен пользователям из группы с именем test3.ru-group

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

Содержимое этого файла:.ru-group: user1 user2 user3 user4

Создание файла с паролем для пользователя admin:@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:@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:password for user user4

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

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

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

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

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

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


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

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


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


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

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

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

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

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

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

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

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

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

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

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

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

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


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


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

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

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

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


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

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

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

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


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


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

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

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

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

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


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


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

Температура окружающего воздуха от +10оС до +35оС;

Атмосферное давление от 630 до 800 мм ртутного столба;

Относительная влажность воздуха не более 80%;

Запыленность воздуха не более 0,75 мг/м3;

В воздухе не должно быть паров агрессивных жидкостей и веществ, вызывающих коррозию.


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


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

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

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


.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 г.

.Е.Д. Вязилов, Н.Н. Михайлов, В.В.Чепурнов. Web портал Единой системы информации об обстановке в Мировом океане (ЕСИМО): методы построения и реализации. Обнинск Гидрометеоиздат 2002 г.

.#"justify">Apache 2: HTTP сервер. Установка, настройка.

.#"justify">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:#"justify"># In particular, see

# <URL:#"justify"># 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.

#"/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:8080

#

# 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.

#apacheapache

</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.

#300On10030

<IfModule prefork.c>51051500

</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. [email protected]

#[email protected]

#

# 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.

#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.

#"/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 />FollowSymLinksNonedeny,allowfrom 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

# #"justify"># for more information.

#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

#AuthConfig

#

# Controls who can get stuff from this server.

#allow,denyfrom all

</Directory>

#

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

# is requested.

#

<IfModule dir_module>index.html

</IfModule>

#

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

# viewed by Web clients.

#

<FilesMatch "^\.ht">allow,denyfrom allAll

</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.

#"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.

#warn

<IfModule log_config_module>

#

# The following directives define some format nicknames for use with

# a CustomLog directive (see below).

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

<IfModule logio_module>

# You need to enable mod_logio.c to use %I and %O"%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.

#"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 #"justify">#

# 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.

#/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">NoneNoneallow,denyfrom 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.

#text/plain

<IfModule mime_module>

#

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

# filename extension to MIME-type.

#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:

#application/x-compress .Zapplication/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 #"justify">#

# 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 hostsconf/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>startup builtinconnect 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:#"justify"># 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.

#*: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>"/opt/apache2/htdocs/test2.ru"mcd.test2.ruwww.mcd.test2.ru"logs/test2.ru-error_log""logs/test2.ru-access_log" common

</VirtualHost>

<VirtualHost *:80>"/opt/apache2/htdocs/test1.ru"mcd.test1.ruwww.mcd.test1.ru"logs/test1.ru-error_log""logs/test1.ru-access_log" common

</VirtualHost>

<VirtualHost *:80>"/opt/apache2/htdocs/test3.ru"mcd.test3.ruwww.mcd.test3.ru"logs/test3.ru-error_log""logs/test3.ru-access_log" common

</VirtualHost>

Приложение 3


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

В директории /opt/apache2/htdocs/test1.ruBasic AuthName "Restricted Area" AuthUserFile /opt/apache2/passwd/pass-test1.ru Require user admin

В директории /opt/apache2/htdocs/test3.ruBasic AuthName "By Invitation Only" AuthUserFile /opt/apache2/passwd/pass-test3.ru-group AuthGroupFile /opt/apache2/passwd/test3.ru-group Require group test3.ru-group



Обозначения и сокращения ? операционная система Linux для линейки серверов с Z архитектуройBC ? сервер IBM System z9 Business Class/VM - диалоговая, многопол

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ