Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
!diplom_Lazutin.doc
Скачиваний:
4
Добавлен:
27.10.2018
Размер:
672.77 Кб
Скачать

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)