WWW.DISSERS.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА

   Добро пожаловать!

Pages:     | 1 |   ...   | 9 | 10 || 12 | 13 |   ...   | 14 |

«А TV AODISON WESLEY СЕТЕВЫЕ СРЕДСТВА РОДЕРИК В. Смит Сетевые средства Linux Advanced Linux Networking W. Smith A TT ADDISON-WESLEY Boston • San Francisco • New York • Toronto • Montreal ...»

-- [ Страница 11 ] --

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

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

Если вам необходим максимально производительный сервер, это обеспечит сервер, использующий функции ядра, например kHTTPd. Этот продукт позволяет обработать больше запросов, не увеличивая объем ресурсов компьютера. Повысить эффективность обработки запросов позволяют также серверы thttpd и Zeus. Следует заметить, что в подавляющем большинстве случаев производительность сервера ограничивается не ре сурсами компьютера, а пропускной способностью линии связи. Если число обращений к вашему серверу превышает возможности линии, установка более эффективно работаю щих программ не решит проблему. В этом случае вам надо искать способы уменьшения нагрузки на сеть (например, за счет сокращения объема графических материалов), увели чения пропускной способности линии либо рассмотреть возможность размещения Web сервера в другой сети.

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

Настройка основных функций Apache Независимо от того, какие задачи должен решать ваш Web-сервер, конфигурирова ние его надо начать с настройки базовых функций Apache. Лишь после как сервер сможет предоставить клиентам статические документы (т. е. документы, не предпола гающие использование сценариев), вы сможете приступить к созданию конфигурации, ориентированной на поддержку расширенных возможностей. Первоначальная настройка Apache сводится к установке значений нескольких основных опций конфигурационно го файла. Кроме того, вам необходимо иметь хотя бы общее представление о модулях 496 Часть III. Серверы Internet Apache, которые представляют собой расширения, предназначенные для решения специ фических задач. В большинстве дистрибутивных пакетов сервер Apache по умолчанию настроен так, что для обеспечения его работы достаточно внести в конфигурационные файлы лишь незначительные изменения.

Конфигурационные файлы Apache В большинстве пакетов основной конфигурационный файл Apache носит имя В зависимости от версии системы этот файл может находиться в разных каталогах, но формат его остается неизменным. В системах Caldera и SuSE файл httpd. conf со держится в каталоге /etc/httpd;

в и он размещается в /etc/apache предоставляет файл-образец /etc/apache/httpd. для обеспечения работы сервера надо лишь переименовать данный файл и внести в него необходимые изменения);

в Red Hat и файл размещается в ка талоге Как обычно, строки файла httpd. conf, начинающиеся с символа #, содержат ком ментарии. Опции, определяющие конфигурацию сервера, задаются в следующем виде:

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

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

В некоторых случаях для настройки Apache используются дополнительные конфигу рационные файлы, перечисленные ниже. Обычно они размещаются в том же каталоге, что и • Ссылка на этот файл формируется с помощью директивы AccessConfig и содержится в файле В файле чаще всего задаются директивы , определяющие особенности до ступа к указанным в них каталогам. В настоящее время этот файл обычно остается пустым, а иногда в качестве значения задается что запрещает использование • Для того чтобы сообщить Web-броузеру о том, как должны об рабатываться данные, Web-сервер использует стандарт MIME (Multipurpose Inter net Mail Extensions — многоцелевые почтовые расширений Internet). Например, text/plain означает, что данные представляют собой обычный текст, a определяет графические данные в формате JPEG (Joint Photographic Experts Group — объединенная группа экспертов по обработке фотоснимков). Файл types содержит информацию о соответствии между и расши Глава 20. Поддержка Web-сервера рениями файлов. Например, имена файлов, оканчивающиеся и связы ваются с text/plain. Если такое задано неправильно, Web-броузер будет испытывать затруднения при обработке некоторых типов фай лов. Файл, поставляемый в составе пакета, обеспечивает обработку практически любых типов данных, которые могут быть помещены на Web-страницу. Если же вам надо использовать редко встречающиеся типы, вам придется добавить в этот файл новые записи.

• magic. Этот файл также позволяет определять соответствие между и данными. При анализе информации можно обнаружить специфические признаки того или иного типа. Так, например, многие файлы содержат специальные ключи — "магические" байтовые последовательности. Эти последовательности, преобразо ванные в текстовый вид, указываются в файле magic. Если вы подробно не изу чили формат этого файла, вносить изменения в него не рекомендуется. Структура файла magic в данной главе рассматриваться не будет.

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

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

СОВЕТ Если по каким-либо причинам, например по соображениям безопасности, вам придется организовать запуск Web-сервера с помощью суперсервера, то вместо Apache желательно использовать программу, которая занимает меньше места в памяти и, следовательно, быстрее загружается. Так, например, вы можете установить в системе thttpd или Web-сервер, выполняющийся как процесс ядра.

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

498 Часть III. Серверы Internet В некоторых пакетах исполняемый файл Apache называется apache, в других — httpd. Если вы собираетесь изменить сценарий запуска или завершить работу сервера, необходимо правильно указать имя программы.

Опции общего назначения Конфигурация, устанавливаемая по умолчанию, во многих случаях обеспечивает ра ботоспособность сервера. После инсталляции сервера и его запуска Apache готов предо ставить пользователям файлы из каталога по умолчанию (обычно это каталог /home/ В этот каталог при установке Apache помещаются файлы, содержащие в основном информацию о том, что сервер инсталлирован, но настройка его еще не закон чена. Впоследствии вы, вероятно, замените их теми файлами, которые и будут составлять содержимое Web-узла.

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

• Эта директива уже рассматривалась ранее. Она может принимать значение standalone или inetd.

• User и Group. В системе Linux каждый сервер запускается от имени конкретного пользователя и группы. Эти директивы позволяют указать пользователя и груп пу, с полномочиями которых будет выполняться сервер Apache. В большинстве дистрибутивных пакетов Apache запускается от имени пользователя nobody либо с помощью учетной записи, специально созданной для данной цели и предусматри вающей минимальные привилегии пользователя. Такой подход снижает вероятность того, что злоумышленник сможет воспользоваться недостатками в защите сервера для незаконного проникновения в систему. Рекомендуется принять значения этих опций, установленные при инсталляции системы.

В целях повышения безопасности системы большинство двоичных файлов Apache скомпилированы так, чтобы их нельзя было запустить от имени вателя root.

• ServerTokens. Сервер Apache предоставляет клиентской программе информа цию о платформе, на которой он выполняется. В большинстве пакетов по умолча нию для этой опции задается значение ProductOnly, которое запрещает переда вать клиенту сведения о системе. При желании вы можете задать значение OS или Full (эти значения расположены в порядке возрастания объема информа ции, передаваемой клиенту), но в целях повышения безопасности рекомендуется принять значение ProductOnly, установленное при инсталляции.

ВНИМАНИЕ Не следует считать, что, установив значение ProductOnly опции | ServerTokens, вы лишите взломщика возможности получить данные о си стеме. Он по-прежнему может анализировать трафик и не только выяснить тот факт, что вы используете Linux, но и узнать версию системы. Кроме того, све дения о платформе могут предоставлять другие серверы.

Глава 20. Поддержка Web-сервера • и Если Apache должен постоянно присутствовать в сети, для более эффективного обслуживания клиентских запро сов в системе обычно запускается несколько экземпляров сервера. Каждый экзем пляр обрабатывает отдельный запрос. Директивы MinSpareServers и MaxSpareServers позволяют задать минимальное и максимальное число экзем пляров сервера, не участвующих в обработке запросов. Если число экземпляров сервера меньше, чем значение директивы MinSpareServers, то даже если они не выполняют обработку запросов, главный процесс Apache порождает новые процес сы. Аналогично, если число неиспользуемых экземпляров сервера становится боль ше, чем значение директивы MaxSpareServers, лишние процессы завершаются.

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

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

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

• MaxClients. Данная директива задает максимальное количество клиентов, ко торые могут одновременно поддерживать соединение с сервером. По умолчанию задается значение порядка Учитывая трафик, связанный с обращением к ваше му серверу, вы можете увеличить или уменьшить его. Если ваш Web-узел пользуется большой популярностью у клиентов и вы задали неоправданно большое значение MaxClients, это может привести к снижению производительности Apache. Ес ли же значение этой директивы слишком мало, то некоторые клиенты не смогут установить соединение с сервером. Большие значения MaxClients приведут к то му, что при увеличении трафика требования к объему памяти и области подкачки возрастут.

Число соединений, заданное с помощью директивы MaxClients, не то же самое, что число Web-броузеров, поддерживаемых Apache. Каждый Web-броузер ЗАМЕТКУ может устанавливать несколько соединении с сервером, и все они учитываются при сравнении с MaxClients.

• Listen. По умолчанию сервер Apache принимает обращения через все активные интерфейсы, используя порт с номером 80. Данная директива позволяет изменить номер порта или ограничить число интерфейсов, через которые можно обратить ся к серверу. Например, выражение Listen сообщает Apache, что обращения клиентов должны приниматься только через интерфейс, 500 Часть III. Серверы Internet с которым связан адрес 192.168.34.98 с использованием порта 8080. Выражение Listen 8000 означает, что взаимодействие с клиентами может осуществляться через все интерфейсы посредством порта с номером 8000.

• Если компьютер, на котором выполняется сервер Apache, содержит несколько сетевых интерфейсов, то, используя данную директиву, вы можете свя зать Apache лишь с одним из интерфейсов. Например, если в конфигурационном файле задано выражение BindAddress 192. 34. 98, сервер будет исполь зовать лишь интерфейс 192.168.34.98. При установке Apache в конфигурационный файл включается выражение BindAddress *, посредством которого Apache свя зывается со всеми интерфейсами.

СОВЕТ Если вы хотите, чтобы сервер принимал обращения только с локального ком пьютера, вам надо задать опцию BindAddress 127 При этом вза имодействие с другими компьютерами поддерживаться не будет. Для обраще ния к локальному серверу можно использовать URL http или • Port. Данная директива указывает Apache, какой порт должен использоваться для взаимодействия с клиентами. По умолчанию принимается номер порта 80.

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

• ServerName. Если значение данной директивы отличается от имени вашего ком пьютера, вы можете устранить это несоответствие, указав правильное значение.

• Если Apache не может определить данных ни на осно вании расширения файла, ни с помощью "магической" последовательности, он воз вращает MIME-тип, указанный в качестве значения данной директивы. Обычно это /plain, но при необходимости вы можете задать другое значение. Изме нять Def aultType имеет смысл в том если на Web-узле находится много файлов, содержащих данные определенного типа, и есть опасность, что MIME-тип некоторых файлов не будет распознан.

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

• LogLevel. Сервер Apache записывает информацию о своих действиях в файл про токола. Объем этой информации вы можете указывать, задавая значение debug, notice, warn, error, crit, alert или директивы LogLevel.

Глава 20. Поддержка Web-сервера (Здесь значения директивы перечислены в порядке убывания объема данных, запи сываемых в файл протокола.) По умолчанию используется значение warn.

• Для данной директивы задаются два значения: имя файла протокола и формат информации, записываемой в этот файл. В данном случае речь идет о фай ле протокола, в который помещаются сведения о клиентах, обращающихся к сер веру за получением Web-страниц. Формат может быть задан с помощью ключевых слов common, agent, referer и combined. Для обеспечения большей степени гибкости в конфигурационном файле предусмотрены средства, поз воляющие администратору определить собственный формат записи данных. Чтобы создать несколько файлов протоколов, надо включить в конфигурационный файл директив CustomLog.

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

Описание каталогов В состав URL входит от двух до четырех компонентов.

• Протокол. Первый компонент URL (например, или //) определяет протокол, используемый для взаимодействия. В данной главе в основном обсуж даются серверы, поддерживающие протокол HTTP (в этом случае начинается с символов //). Для обращения к защищенным узлам используются начинающиеся с https : //.

• Имя узла. Имя узла, входящее в состав URL, представляет собой доменное имя компьютера, на котором выполняется Web-сервер. Например, в URL / именем узла является www.

com. (Одному компьютеру может соответствовать несколько до менных имен. Такая ситуация возникает в том случае, если в конфигурационном файле сервера DNS для этого компьютера задано несколько записей А или (Настройка сервера DNS описывались в главе • Имя файла. В большинстве случаев HTTP-запрос предполагает передачу фай ла. В составе URL за именем узла следует имя файла (с указанием имени ката лога). в html ссылкой на файл является компонент Несмотря на то что имя файла отделяется от имени узла косой чертой, этот символ не явля ется обозначением корневого каталога системы Linux. Путь к файлу йачинается от корневого каталога документов, определенного для Web-узла. Если имя файла в составе URL не указано, сервер возвращает клиенту Web-страницу по заданную с помощью директивы • Дополнительная информация. Некоторые содержат дополнительную инфор мацию. Например, позиции в составе Web-документа может быть присвоено имя.

Это имя указывается в URL после имени файла и отделяется от него символом #.

502 Часть III. Серверы Internet URL, в начале которого указан протокол FTP, может содержать пользовательское имя и пароль.

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

Если вы некорректно зададите значения этих опций, некоторые из Web-страниц станут не доступны. Директивы, описывающие каталоги, перечислены ниже.

• ServerRoot. С помощью этой директивы задается корень поддерева файловой системы, используемого для хранения двоичных файлов Apache. В большинстве случаев при инсталляции сервера устанавливается значение этой опции.

Изменять его не следует.

• DocumentRoot. В каталоге, указанном с помощью этой директивы, хранятся файлы, содержащие статические Web-страницы. По умолчанию для данной оп ции задается или другое подобное значение. (В файле conf имя каталога обычно помещается в кавычки.) ВНИМАНИЕ Значение директивы DocumentRoot не следует завершать косой Несмотря на то что в системе Linux такая ссылка на каталог является кор ректной, для Apache она приведет к возникновению ошибки.

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

Директива UserDir указывает имя подкаталога, в котором следует искать файл.

Предположим, что для данной директивы задано значение public_html и удален ный пользователь ввел в поле адреса броузера URL. html. Тогда Apache попытается вернуть поль зователю файл photos расположенный в подкаталоге ра бочего каталога пользователя abrown. Если задано значение disabled данной директивы, обращение к файлам, находящимся в рабочих каталогах пользовате лей, запрещено. Если вы хотите запретить доступ лишь к части пользовательских каталогов, вам надо после ключевого слова disabled указать имена пользовате лей, рабочие каталоги которых закрыты для обращения. Данная директива часто помещается в состав директивы которая проверяет, загружен ли мо дуль Apache, предназначенный для поддержки пользовательских каталогов. (Модули Apache будут рассматриваться в следующем разделе.) • Некоторые URL не содержат имя файла;

в них указано лишь имя каталога (в некоторых случаях оно завершается косой чертой). Когда сервер Apache получает подобный URL, он сначала старается найти файл имя ко торого задается с помощью директивы Directorylndex. В большинстве случаев по умолчанию принимается имя установленное в качестве значе ния данной опции при инсталляции сервера. При необходимости вы можете задать другое имя файла. Если пользователь введет URL com/public/, Apache вернет файл index.html, находящийся в подкаталоге public каталога, указанного с помощью директивы DocumentRoot. Если вы укажете несколько файлов индекса, Apache станет поочередно искать все файлы.

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

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

Просмотрев содержимое конфигурационного файла вы найдете в нем ссылки на модули, формируемые посредством директивы Пример подоб ной ссылки приведен ниже.

LoadModule В качестве значения данной директивы задается внутреннее имя модуля (в данном примере и имя файла, в котором содержится сам модуль (lib/apache/ so). В данном случае имя файла указывается относительно каталога, задан ного посредством директивы ServerRoot, но при желании вы можете указать полный путь.

Модули, которые используются часто, можно непосредственно встраивать в двоичные файлы Apache. Чтобы определить, какие модули уже содержатся в исполняемых фай лах, надо задать команду httpd -1 (или apache -1). В некоторых случаях модули, встроенные в состав Apache или загруженные посредством LoadModule, необходимо активизировать, включив для этого в конфигурационный файл директиву AddModule.

AddModule В качестве значения директивы AddModule задается имя файла с исходным кодом модуля. Для важных модулей в конфигурационном файле Apache содержится как дирек тива LoadModule, так и директива AddModule.

Как правило, администраторам не приходится включать новые модули;

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

Если Apache не может выполнить необходимые вам действия, следует прочитать опи сания модулей и решить, какой из них пригоден для решения этой задачи. Дополни тельную информацию о доступных модулях можно получить на Web-узле Apache Mod ule Register по адресу. org. Выполнив поиск по ключевым Часть III. Серверы Internet словам, вы получите информацию о модулях, созданных сторонними организациями, и адреса Web-узлов этих организаций.

Настройка kHTTPd В системах, подобных UNIX, и, в частности, в Linux, можно выделить два типа процессов: процессы ядра (kernel space processes) и пользовательские процессы (user space processes). Процесс ядра запускается очень быстро, а для запуска пользовательского процесса требуется относительно много времени, кроме того, пользовательский процесс часто должен осуществлять обмен важными данными с ядром. На практике такая особен ность пользовательских процессов приводит к возникновению проблем, так как основная обработка информации осуществляется в пространстве пользовательского процесса. За держка, связанная с запуском процесса, оправдывается повышением уровня безопасности и стабильности. Процессы ядра пользуются привилегиями при взаимодействии с аппарат ными средствами, файловой системой и другими ресурсами, поэтому ошибка в программе или несанкционированное вмешательство извне могут привести к разрушению системы.

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

Для того чтобы оптимизировать обслуживание HTTP-запросов, были созданы простые Web-серверы, выполняющиеся как процессы ядра. В результате исчезла необходимость постоянного взаимодействия ядра и пользовательского процесса, и скорость обработки запросов клиента существенно увеличилась. Начиная с версии 2.4.x в состав ядра входят компоненты, реализующие Web-сервер kHTTPd. Подробная информация о таких ком понентах находится по адресу Настройка сервера, выполняющегося в виде пользовательского процесса, осуществляется путем записи дан ных в конфигурационные файлы, находящиеся в каталоге /proc/sys/net/khttpd.

HTTP-запрос HTTP-запрос Запрос на чтение файла Ядро Apache Доставка данных HTTP-ответ HTTP-ответ Рис. 20.1. Web-сервер, выполняющийся как пользовательский процесс, интенсивно взаимодействует с ядром Глава 20. Поддержка Web-сервера Для того чтобы обеспечить работу такого сервера, необходимо предпринять следующие действия.

Включите поддержку при конфигурации ядра Linux. Для этого использует ся опция Kernel HTTPd Acceleration, находящаяся в меню Networking Options. Вы можете сформировать требуемый компонент в виде модуля или непосредственно включить его в состав ядра.

2. Измените конфигурацию Apache так, чтобы этот сервер использовал для приема обращений клиентов порт 8080 или любой другой, отличный от порта 80.

3. Перезагрузите систему или загрузите модуль ядра kHTTPd. В зависимости от кон фигурации он либо загрузится автоматически, либо вам придется использовать ко манду insmod khttpd.

4. Укажите серверу kHTTPd на то, что он должен принимать запросы клиентов че рез порт 80. Для этого надо выполнить команду echo 80 > 5. Введите команду echo 8080 > В результате ее выполнения kHTTPd будет передавать запросы, которые не может обработать самостоятельно, серверу Apache, используя порт 8080. (Если на шаге 2 вы указали порт, отличный от 8080, то должны задать тот же порт в составе данной команды.) 6. Сообщите kHTTPd, в каком каталоге следует искать незакодированные статические файлы. Для этого выполните команду echo > /proc/ Вместо каталога /home/httpd/html вы можете указать другой каталог, следите лишь за тем, чтобы он совпадал с ката логом, который был задан в файле в качестве значения директивы 7. Если на вашем Web-узле содержатся РНРЗ или защищенные HTML-документы, повторите предыдущее действие, но поместите имя каталога в файл /proc/sys/ 8. Введите команду echo 1 > /proc/sys/net/khttpd/start, в результате ко торой сервер kHTTPd начнет работу. Указанный здесь файл является своеобразным аналогом сценария запуска SysV.

При желании вы можете создать сценарий SysV или локальный сценарий, который автоматизировал бы выполнение этапов 4-8 описанной выше процедуры. Независимо от того, будет ли сервер запущен вручную или с помощью сценария, он будет поддерживать простые запросы, предполагающие передачу клиентам статических файлов, находящих ся в указанном каталоге. Запрос который не может быть обработан средствами kHTTPd (например, запрос, предполагающий запуск будет передан Web-серверу, выполняющемуся как пользовательский процесс. При этом будет использован номер пор та, указанный на этапах 2 и 5. Такая передача запроса связана с большими накладными расходами, поэтому если Web-узел предполагает в основном выполнение использовать для его поддержки сервер kHTTPd нецелесообразно. Более того, применять kHTTPd имеет смысл только в том случае, если сервер Apache не справляется с нагрузкой.

506 Часть III. Серверы Если же интенсивность обращений к серверу не велика, предпочтительнее использовать один из серверов, выполняющихся как пользовательский процесс. Следует также пом нить, что kHTTPd официально считается экспериментальным продуктом, поэтому он не может обеспечить такой надежности, как Apache или другие подобные серверы. Посколь ку kHTTPd выполняется как процесс ядра, ошибка в программе может нанести систе ме гораздо больше вреда, чем ошибка в сервере, выполняющемся как пользовательский процесс. Таким образом, если у вас нет веских оснований применять kHTTPd, лучше использовать вместо него хорошо отлаженный и зарекомендовавший себя в работе сервер Apache.

Сервер kHTTPd — не единственный продукт подобного типа, реализованный как про цесс ядра. В системе Red Hat применяется сервер TUX, кроме того, в настоящее время ведется работа над созданием других серверов, предназначенных для выполнения в виде процессов ядра Linux.

Поддержка форм и сценариев Несмотря на то что статические данные часто используются на Web-узлах, типы ин формации, с которыми может работать Web-сервер, не исчерпываются ими. Многие Web серверы динамически генерируют Web-страницы. Например, поисковые серверы позво ляют пользователю ввести данные в поле редактирования и передать их после щелчка на кнопке, а затем формируют Web-страницу, содержащую результаты поиска. Если вы хо тите создать Web-узел, выполняющий подобные действия, вам надо уметь сконфигуриро вать его соответствующим образом. В этом разделе будут кратко рассмотрены принципы динамического создания Web-страниц и опции Apache, используемые для активизации соответствующих средств сервера. Чтобы получить более подробную информацию, об ратитесь к документам, в которых описаны эти вопросы.

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

• HTML-файлы. В настоящее время основная часть данных в Internet представлена в формате HTML (Hypertext Markup Language язык разметки гипертекста). HTML файлы имеют расширение. htm либо. html и содержат текстовую информацию с элементами разметки. Элементы разметки выполняют форматирование текста.

Например, элемент <Р> помечает начало абзаца, а — конец абзаца. В язы ке HTML также предусмотрена возможность Web-страниц с другими документами, расположенными в Internet (в частности, в Web). Такое связывание осуществляется посредством гипертекстовых ссылок. После щелчка на гипертек стовой ссылке ресурс, на который она указывает, автоматически воспроизводится либо сохраняется на диске. Конкретные действия по обработке ресурса зависят от настройки Web-броузера.

• Текстовые файлы. Файлы такого типа чаще всего имеют расширение. txt. Тек стовые файлы, которые Web-серверы предоставляют пользователям, отображаются Глава 20. Поддержка Web-сервера броузерами, но элементы форматирования и гипертекстовые ссылки в них отсут ствуют.

• Графические файлы. Почти все HTML-документы содержат ссылки на графиче ские файлы, представленные в различных форматах. Эти файлы также являются статическими. Некоторые файлы содержат анимационные данные, но несмотря на это, они все же считаются статическими файлами. Термин статический относится к содержимому файла, а не к способу его отображения.

• Документы в различных форматах. Иногда на Web-страницах содержатся ссылки на файлы PDF, Microsoft Word, архивы. zip и. tar, а также данные, представлен ные в других форматах. Некоторые броузеры передают эти файлы для обработки соответствующим приложениям, другие сохраняют их на диске.

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

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

• Поисковые серверы. Если вы укажете в поле адреса броузера поискового сервера, этот сервер предоставит Web-страницу, содержащую форму ввода. Форма позволяет вводить данные (в случае поискового сервера — ключевые слова). После щелчка на кнопке Search (или при активизации другого интерактивного элемента, запускающего процедуру поиска) введенные вами ключевые слова передаются Web серверу, который осуществляет поиск и создает Web-страницу для представления результатов.

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

• Web-узлы, настраиваемые с учетом интересов пользователей. Некоторые Web узлы предоставляют пользователям специальные средства регистрации и передают данные, специально сформированные для этого пользователя. Например, обратив шись на узел Slashdot вы можете зарегистрироваться и указать при регистрации тип и объем интересующих вас данных. При работе с по добными Web-узлами на стороне клиента создается запись cookie, которая 508 Часть III. Серверы Internet фицирует клиент при последующих обращениях. (Записи cookie часто создаются и при взаимодействии с серверами электронной коммерции.) Приведенные выше примеры представляют лишь частные случаи применения ди намических Web-узлов. Возможности подобных узлов ограничены лишь воображением разработчиков и их готовностью реализовать свои планы. С точки зрения Web-сервера основное различие между динамическими и статическими Web-узлами состоит в том, что на динамическом узле HTML-документ (или документ в другом формате) создается в процессе работы сервера на основании полученных от клиента. Для реализации динамических Web-узлов используются следующие средства.

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

• CGI (Common Gateway Interface — интерфейс общего шлюза) опре деляет порядок взаимодействия программ, осуществляющих динамическую гене рацию HTML-документов, с Web-сервером. CGI-сценарии могут быть написаны практически на любом языке. Для их создания используются не только компили руемые, но и интерпретируемые языки, например Perl. Web-сервер запускает CGI на выполнение в том случае, если это предусмотрено в URL. В процессе выполнения сценарий получает от Web-сервера данные, введенные пользователем, при необходимости вызывает другие программы и генерирует Web-страницу, пере даваемую ответ на запрос клиента.

• SSI (Server Side Includes — включаемые средства на стороне сервера) также пред назначены для динамической генерации содержимого документа, но, в отличие от которые формируют всю Web-страницу, SSI лишь изменяют шабло ны. SSI не обеспечивают такой гибкости, как CGI, но их удобно использовать для внесения небольших изменений в состав статических Web-страниц, например, для включения информации о текущей дате.

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

Заметьте, что Web-страницы, генерируемые могут содержать формы ввода. Эти два инструмента не исключают друг друга. Напротив, данные, обрабатывае мые CGI-сценариями, чаще всего вводятся посредством форм.

Поддержка CGI-сценариев Если вы собираетесь использовать CGI-сценарии, то должны сообщить серверу Apa che о своем намерении. При получении URL, содержащего имя сценария, сервер должен Глава 20. Поддержка Web-сервера запустить этот сценарий, а также организовать обработку данных, переданных клиентом, формирование Web-страницы и передачу ее броузеру. При использовании Apache выполняет роль посредника между клиентом и сценарием на стороне сервера.

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

Для обеспечения работы с CGI необходимо загрузить соответствующий модуль Apache.

cgi_module Если компоненты, предназначенные для поддержки CGI-сценариев, включены в со став двоичных файлов Apache, вам надо активизировать их посредством директивы AddModule. (В некоторых случаях активизировать надо и компоненты, реализованные в виде модулей.) AddModule В результате сервер Apache получает возможность запускать и взаи модействовать с ними. Вам осталось лишь разрешить поддержку CGI для конкретных файлов и каталогов. Сделать это можно несколькими способами.

• ScriptAlias. Данная директива решает две задачи. Во-первых, она сообщает серверу Apache о том, что файлы, содержащиеся в указанном каталоге, должны ин терпретироваться как CGI-сценарии. Во-вторых, посредством этой директивы зада ется соответствие между каталогом, расположенным на диске, и каталогом, который указывается в URL. Например, выражение ScriptAlias /scripts/ отображает физический каталог в каталог /scripts в составе URL. В результате, если пользователь укажет URL сервер запустит на вы полнение сценарий test.pl, содержащийся в cgi-bin/. Часто при инсталляции Apache опции LoadModule и AddModule по умолчанию включаются в конфигурационный файл;

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

• Options +ExecCGI. Разрешить выполнение CGI-сценариев можно, указав зна чение +ExecCGI директивы Options. Данная опция не должна указываться для всей системы, ее имеет смысл применять только к отдельным каталогам (т. е. она должна присутствовать только в составе директивы ).

•. htaccess. Контролировать доступ к отдельному каталогу можно, размещая в нем файл Если в файле содержится запись Options +ExecCGI, Apache будет запускать CGI-сценарии, находящиеся в этом каталоге.

Чтобы это произошло, в файле должна находиться запись AllowOverride Options;

эта запись должна воздействовать как минимум на каталог, содержащий файл. htaccess.

510 Часть III. Серверы Internet ВНИМАНИЕ Наличие записей Options +ExecCGI и Options f угрозу для системы. При неправильном использовании этих средств пользователи получают возможность создавать сценарии, предоставляющие полный доступ к системе. По этой причине в большинстве дистрибутивных пакетов использование файла запрещено.

Часто при настройке Apache в конфигурационный файл включается директива ScriptAlias, отображающая каталог /home/httpd/cgi-bin файловой системы в каталог /cgi-bin в составе URL. Такая настройка удобна для администратора. Чтобы установить и сделать его доступным для пользователя, достаточно раз местить соответствующий файл в каталоге /home/httpd/cgi-bin. При этом необхо димо обратить внимание на права доступа к файлу. Поскольку сценарий предназначен для выполнения, для файла, содержащего код этого сценария, должен быть установлен соответствующий признак. Если вы написали сценарий самостоятельно или скопировали его с Web- или FTP-узла, то после размещения его в каталоге /home/httpd/cgi-bin надо выполнить команду а+х Создание CGI-сценариев Подобно другим сценариям, представляют собой программный код, предназначенный для выполнения. Данная глава не является руководством по написанию CGI-сценариев;

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

CGI-сценарии принимают входные данные через стандартный ввод и выводят сге нерированную Web-страницу через стандартный вывод. Вывод текста, который должен быть передан клиенту, ничем не отличается от обычного вывода на консоль. Необходи мо лишь помнить, что клиент просматривает информацию посредством Web-броузера, поэтому ваш CGI-сценарий должен генерировать информацию в формате HTML либо в другом формате, поддерживаемом Web-клиентом. (Например, вы можете сформировать ответ в виде графического файла.) Помимо HTML-кода, CGI-сценарий должен создать поле заголовка Content-Type и в качестве его значения указать данных, передаваемых клиенту. Это поле имеет следующий вид:

text/html\r\n\r\n В данном примере указан MIME-тип text/html, означающий, что в ответ на запрос клиента CGI-сценарий сгенерировал HTML-документ. Символы \r\n\r\n соответству ют двум переводам строки, в результате поле заголовка будет отделено от остальных данных пустой строкой. Код сценария зависит от используемого вами языка программи рования. Простейший пример написанного на языке Perl, приведен в ли стинге Как видно из листинга, в процессе выполнения сценарий выводит строку текста. Записав файл с этим кодом в каталог, предназначенный для размещения CGI-сце нариев, установите права доступа. Если после этого вы зададите сценария в поле адреса броузера, то увидите строку "Hello, Web".

Глава 20. Поддержка Web-сервера Листинг 20.1. Простой написанный на языке Perl print print "Hello, С обработкой входных данных дело обстоит несколько сложнее. Ваш по лучит данные только в том случае, если они были введены пользователем посредством интерактивных элементов, содержащихся в форме. Данные поступают на вход сцена рия в виде набора пар имя-значение. Имя отделяется от значения символом =, пары имя-значение разделяются символами &. Пример строки параметров, передаваемой CGI сценарию, приведен ниже.

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

Существуют способы, позволяющие уменьшить риск, связанный с использованием CGI-сценариев. Перед установкой сценариев необходимо еще раз поверить значения ди ректив User и Group в файле CGI-сценарии выполняются с полномочи ями пользователя, указанного посредством этих директив, поэтому, используя учетную запись, предусматривающую минимальные права, вы ограничите возможности злоумыш ленника, если тому удастся получить контроль над Идеальный вариант — создать учетную запись и группу, специально предназначенные для обеспечения работы сервера Apache;

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

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

512 Часть III. Серверы Internet Библиотеки сценариев размещены на различных Web-узлах, например, вы можете обра титься по адресу Чтобы злоумышленник, получивший контроль над Web-сервером, не смог нанести существенный вред компьютерам вашей сети, надо принять дополнительные меры. На пример, желательно отключить ненужные серверы и ограничить доступ с компьютера, на котором выполняется Web-сервер, к другим компьютерам сети. Действия, направленные на повышение уровня защиты системы, рассматриваются в части IV.

Поддержка защищенных Web-узлов При использовании сценариев часто осуществляется шифрование передаваемых дан ных. Действия по кодированию и декодированию информации при обмене между Web сервером и Web-броузером определяется протоколом SSL (Secure Sockets Layer — уровень защищенного гнезда). Протокол SSL часто используется на узлах электронной коммерции для защиты важных данных. Для поддержки SSL-кодирования при работе Apache требу ется дополнительное программное обеспечение, например, или программы, разработанные в рамках проекта Apache-SSL Для поддержки также использовать продукты, распространяемые на коммерческой основе.

Задачи, решаемые с помощью SSL SSL — это технология кодирования, подобная той, которая используется при обеспече нии работы протокола удаленной регистрации SSH. (Строго говоря, эти протоколы при меняют одни и те же средства шифрования, так как работа популярного пакета OpenSSH основана на пакета OpenSSL, который также применяется некоторыми реализациями Apache, поддерживающими SSL.) SSL позволяет решить следующие две проблемы, возникающие при обмене между Web-клиентом и Web-сервером.

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

• Аутентификация. Даже при использовании шифрования передача важных данных по Internet связана с определенным риском. Может оказаться, что принимающий узел — не тот, за кого он себя выдает. Например, если вы ввели в поле адреса бро узера URL com, можете ли вы быть уверены, что ваш запрос попадет на тот узел, на который вы его отправляете? Не исключено, что злоумышленнику удалось изменить настройку сервера DNS или маршрутизатора и перенаправить запрос на свой компьютер. SSL предоставляет средства аутенти фикации участников взаимодействия. Идентификация осуществляется посредством Глава 20. Поддержка Web-сервера сертификатов, предоставляемых организацией, специализирующейся на этом. Сер тификат, полученный от сертифицирующей организации (СА — certificate представляет собой цифровой код, используемый для создания общего ключа. Ес ли один участник взаимодействия передал свой сертификат, полученный от СА, то другой участник может быть уверен, что его партнер по обмену данными — именно тот, за кого он себя выдает. (В последнее время стало ясно, что даже сертифика ты не позволяют гарантированно идентифицировать участников взаимодействия.

Так, в 2001 г. сертификаты Microsoft были по ошибке выданы организациям, не имеющим к корпорации никакого отношения.) При необходимости вы сами можете выступать в роли сертифицирующей ор ганизации, однако ваши сертификаты будут пригодны только для внутреннего ЗАМЕТКУ использования. Внешние пользователи не будут иметь никакой гарантии то го, что сертификат не фальсифицирован. Поэтому, если вы собираетесь ор ганизовать узел электронной коммерции, вам необходимо получить сертифи кат от СА. Список СА можно найти по адресу org/#Digital_Certif icates. Пользователям, обращающимся к Web-уз лам посредством броузеров, сертификаты не нужны, так как Web-серверы прак тически никогда не проверяют идентичность пользователей.

При работе посредством протокола SSL используется порт, отличный от порта 80. По умолчанию для взаимодействия по защищенному протоколу HTTP (HTTPS) применяется порт 443. Чтобы Web-броузер указал в запросе этот порт, URL, введенный пользователем, должен начинаться с символов //. Настраивая Apache для поддержки SSL, вы можете установить один сервер, который будет по-разному реагировать на обращения че рез порты с номерами 80 и 443, либо использовать два сервера различных типов. Первый подход реализовать проще, но может возникнуть ситуация, при которой целесообразнее использовать два сервера (например, Apache для обработки SSL-запросов и thttpd для поддержки обычного HTTP-взаимодействия).

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

• SSLeay • OpenSSL Вскоре после своего появления OpenSSL приобрел статус стандарта в системе Linux.

Он содержится в составе многих дистрибутивных пакетов Linux, включая Debian, Man drake, Red Hat и SuSE. Пакеты SSLeay и OpenSSL выполняют одинаковые функции, но исполняемые файлы носят разные имена и openssl) и для их настройки ис пользуются различные конфигурационные файлы.

После инсталляции OpenSSL вам необходимо получить сертификат. Для работы в In ternet потребуется сертификат, выданный СА, но для тестирования сервера можно создать сертификат самостоятельно. Некоторые сценарии установки Apache SSL создают серти фикат автоматически. Если в процедуре инсталляции не предусмотрено формирование сертификата, вы можете использовать следующую команду;

514 Часть III. Серверы Internet # openssl req $@ -new -x509 -nodes \ \ -out \ В данном примере предполагается, что настройка средств поддержки SSL осу НА ществляется посредством конфигурационного файла а в ЗАМЕТКУ составе пакета поставляется образец конфигурационного файла При необходимости вы можете изменить имена файлов или каталогов. Обратная косая черта указывает на то, что продолжение команды находится на следующей строке. Если вся команда помещается в одной строке, символ \ можно не использовать.

В процессе выполнения утилита openssl запросит дополнительную информацию, например имя компьютера. Эта информация включается в состав сертификата, который содержится в файле Впоследствии сгенерированный вами сертификат придется заменить сертификатом, который предоставит вам сертифицирующая организация. Если при использовании сер тификата, созданного самостоятельно, пользователь, обратившийся к Web-узлу, увидит предупреждающее сообщение, то при наличии сертификата, выданного СА, такое со общение не выводится. Предупреждающее сообщение, отображаемое броузером Opera в системе Linux, показано на рис. 20.2. В других броузерах формат сообщения будет отличаться от приведенного на рисунке.

Certificate signer not а ж tor server registered com louiswu.rodsbooks.com Woonsocket Rhode US Rhode Island, US Connection : US C version: Not valid Not valid 5 20:50:13 2001 GMT Fingerprint: 14 46 04 F8 34 AA 3D 01 7E 3В CO Рис. 20.2. При использовании сертификата, сгенерированно го самостоятельно, пользователи, взаимодействующие с узлом, увидят предупреждающее сообщение о том, что сертификат не распознан или срок его действия истек Глава 20. Поддержка Web-сервера Установка компонентов предназначенных для поддержки SSL Считается, что поддержка SSL в сервере Apache осуществляется за счет дополнитель ных модулей. На практике для установки SSL-модулей необходимо внести некоторые изменения в структуру сервера и повторно скомпилировать Apache. В некоторых инстал ляционных пакетах SSL-модули включены по умолчанию, и код сервера скомпилирован с учетом использования SSL-компонентов. Если вы попытаетесь объединить компоненты обычного сервера Apache и пакета, сформированного для обеспечения поддержки SSL, такой сервер скорее всего работать не будет.

Во многих случаях для управления сервером, созданным с учетом поддержки SSL, используется конфигурационный файл, отличный от файла, применяемого для настройки обычного сервера Apache. Например, в системе Debian сервер Apache, настроенный для поддержки SSL, использует конфигурационный файл в то время как для стандартной конфигурации Apache в этой системе применяется файл /etc/ apache. Конфигурационные файлы для SSL-серверов во многом совпадают с файлами для Apache без поддержки SSL, за исключением некоторых директив, значения которых вам, возможно, придется изменить. Часть этих директив описана ниже.

• Сервер с поддержкой SSL не может запускаться посредством су персервера, поэтому для директивы ServerType должно быть установлено значение standalone.

• Использование портов. Для взаимодействия по протоколу SSL используется порт 443. При этом необходимо учитывать, что директива Listen позволяет связать сервер с определенным номером порта.

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

• Включив данную директиву в состав , вы запре тите доступ к каталогу для клиентов, не поддерживающих SSL. (Значения данной директивы не указываются.) Использование SSLRequireSSL позволяет предот вратить передачу важных данных по незащищенному каналу. Очевидно, что, поми мо данной опции, следует применять и другие средства, ограничивающие доступ к каталогу.

• SSLEnable. Директива SSLEnable разрешает использование протокола SSL при обмене данными. Подобно SSLRequireSSL, значения для данной директивы не предусмотрены.

• Эта директива указывает на каталог, содержащий сер тификат. в качестве значения SSLCACertificatePath может быть указано /etc/apache-ssl.

• icateFile. В качестве значения данной директивы указывается файл, содержащий сертификат (например, /etc/apache-SSI/apache 516 Часть III.

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

Установив конфигурацию сервера, вы можете запускать его для поддержки SSL-вза имодействия. Чтобы обратиться к серверу, надо ввести в поле адреса броузера URL, начинающийся символами https : //. Если вы самостоятельно сгенерировали сертифи кат, броузер отобразит предупреждающее сообщение, подобное тому, которое показано на рис. 20.2. Чтобы протестировать создаваемый вами узел, вы можете принять этот сертификат (некоторые броузеры позволяют задать условия дальнейшего использования сертификата).

ВНИМАНИЕ Работая в Internet, не следует принимать сертификаты, созданные | рами Web-узлов. Если сервер использует сертификат, выданный сертифицирую щей организацией, броузер не отображает предупреждающее сообщение. Если же подобное сообщение появилось на экране, это означает, что при использова нии сертификата была допущена ошибка (например, сервер продолжает рабо тать с срок действия которого истек) либо администратор вовсе не обращался к сертифицирующей организации. Появление предупреждающего сообщения также может означать, что злоумышленник пытается представить свой узел как узел официальной организации и собрать с его помощью важные данные.

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

Использование виртуальных доменов Наличие виртуальных доменов позволяет Web-серверу по-разному обрабатывать за просы, в зависимости от имен, указанных в них. (Чтобы к Web-серверу можно было обращаться по разным именам, необходимо создать несколько записей в конфигурацион ном файле DNS-сервера.) Примеры использования виртуальных доменов описаны ниже.

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

• Если две сотрудничающие компании или два отдела одной компании хотят создать свои Web-узлы, они могут разместить их на одном Web-сервере, сконфигурировав Глава 20. Поддержка Web-сервера сервер для поддержки виртуальных доменов. В некоторых случаях (особенно если Web-узлы создаются для отделов одной организации) использовать подкаталоги удобнее, чем организовывать обращение к одному и тому же серверу по разным именам, но часто решение о создании виртуальных доменов оправдано.

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

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

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

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

Использование VirtualDocumentRoot — одна из основных директив, используемых для настрой ки виртуальных доменов. Эта директива позволяет указать имя каталога, которое будет выполнять роль корневого каталога документов при указании в составе запроса опреде ленного имени. В качестве значения VirtualDocumentRoot указывается имя каталога, которое может содержать различные переменные. (Назначение этих переменных описано в табл. 20.1.) Рассмотрим в качестве примера следующую запись:

VirtualDocumentRoot Таблица 20.1. Переменные, используемые для создания имен каталогов Переменная Описание %% Символ % в имени каталога Номер порта, используемый сервером Часть имени, отделенная от других частей точками. N — это число, ссылающееся на компонент имени. О означает все доменное 1 — первый компонент, 2 — второй компонент и т. д. Значение N также может быть отрицательным:

определяет последний компонент имени, — предпоследний компонент и т. д.

М принимает такие же значения, как и N, но ссылается не на компонент имени, а на символ в составе компонента. Если вы хотите использовать весь компонент имени, точку и М можно не указывать.

518 Часть Серверы Internet Она сообщает серверу о том, что он должен использовать подкаталог каталога httpd, имя которого соответствует полному имени сервера, указанному в составе запро са. Например, если в запросе задан URL html, сервер будет искать файл html. Такой способ очень удобен, но если вам необходимо поддерживать большое количество Web-узлов, то придется создавать много подкаталогов с достаточно длин ными именами (в данном примере все подкаталоги должны присутствовать в каталоге При необходимости вы можете использовать в качестве имени катало га часть доменного имени. Пример подобного подхода иллюстрирует приведенная ниже запись.

Если в конфигурационном файле содержится такое выражение, то, получив запрос, в котором указан Apache вер нет клиенту файл (если он имеется на сервере). Если вы хотите использовать в имени каталога лишь один символ из до менного имени, вам надо включить в состав конфигурационного файла запись наподобие VirtualDocumentRoot Теперь при получении URL html Apa che вернет клиенту файл Переменная %-2 определяет первый 1) символ в составе имени домена (-2), пред шествующего имени домена верхнего уровня.

Независимо от значения директивы вам надо задать зна чение для директивы UseCanonicalName.

Off Если директива UseCanonicalName будет иметь значение On, устанавливаемое по умолчанию при инсталляции сервера, Apache будет использовать для обработки отно сительных ссылок доменное имя компьютера, на котором он выполняется. Например, если в документе html содержится ссылка на Web-страницу products. html, Apache будет стараться извлечь ее, основываясь на своем каноническом имени. При на личии виртуальных доменов такое поведение недопустимо. Если задать значение директивы UseCanonicalName, то для обработки относительных ссылок Apache будет применять имя, соответствующее виртуальному домену.

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

• Данная директива указывается в главном конфигурационном файле Apache и информирует сервер о том, что вы собираетесь использовать вирту альные узлы. В качестве значения этой директивы чаще всего указывается символ *;

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

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

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

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

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

NameVirtualHost * *> ServerName DocumentRoot ScriptAlias /cgi-bin/ ServerName DocumentRoot Если сервер настроен подобным образом, то при обращении к нему посредством име ни www. com он будет предоставлять клиенту статические файлы, кото рые находятся в каталоге /home/httpd/threeroomco/html, или запускать на выпол нение сценарии, содержащиеся в каталоге /home/httpd/threeroomco/cgi-bin.

Если же в запросе указано имя то статические файлы будут из влекаться из каталога /home/httpd/pangaea-u/html, а выполнение CGI-сценариев будет запрещено.

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

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

520 Часть III. Серверы Internet Создание содержимого Web-узла Несмотря на то что данная глава в основном посвящена особенностям настройки и выполнения Web-сервера, администратору, осуществляющему поддержку Web-сервера, необходимо представлять себе, как создаются документы, которые размещаются на Web узле. Некоторые типы Web-страниц (точнее, средства для их динамической генерации) рассматривались в предыдущих разделах, однако основную часть данных, расположенных на Web-узлах, составляют HTML-документы. Для создания HTML-документов, а также файлов, которые могут использоваться ими (например, файлов с графическими данны ми), часто применяются специальные инструментальные средства. Научившись работать с этими инструментами и зная особенности интерпретации HTML-кода клиентскими про граммами, вы сможете без труда создать Web-узел, пригодный для просмотра с помощью наиболее популярных современных броузеров.

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

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

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

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

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

• . HTML-документ делится на заголовок и тело документа. В заголовке в основном содержится информация, не предназначенная для отображения (за ис ключением содержимого элемента ). Заголовок содержится между откры вающим и закрывающим дескриптором <HEAD>.</p><p> Глава 20. Поддержка Web-сервера Листинг 20.2. Пример HTML-файла HTML HTML <HTMLXHEAD> <BODY <CENTERXH <IMG <Р>Данная содержит <А гипертекстовую </BODYX/HTML> <TITLE>. Строка, заданная с помощью этого дескриптора, выводится в заголовке окна броузера. Эта же строка отображается в списке закладок, <BODY>. С помощью данного дескриптора формируется тело HTML-документа.</p><p> В состав дескриптора <BODY> часто включают атрибуты, определяющие цвет тек ста и фона, и другие характеристики документа.</p><p> <Н1>. Заголовки позволяют делить текст документа на разделы и, как правило, отображаются шрифтом большего размера, чем обычный текст. Создавая код Web страницы, вы можете включать в него заголовки различных уровней. Наивысшим считается уровень 1 (<Н1>), а самым низким — уровень 6 (<Нб>). В листинге 20. в дескрипторе <Н1> содержится атрибут который сообщает Web-броузеру о том, что текст заголовка должен быть размещен по центру экрана. К сожалению, не все броузеры правильно обрабатывают атрибут выравнивания в составе заголовка, поэтому, чтобы обеспечить корректное отображение информации, его приходится дублировать дескриптором <CENTER>.</p><p> <CENTER>. В листинге 20.2 заголовок, формируемый с помощью дескриптора <Н1>, выравнивается по центру экрана не только посредством атрибута ALIGN, но и с помощью дескриптора <CENTER>. Во многих современных броузерах такая избыточность не нужна, но если вы хотите, чтобы документ корректно отображался в старых броузерах, вам следует задавать как дескриптор <CENTER>, так и атрибут ALIGN.</p><p> <IMG>. Данный дескриптор позволяет включать на Web-страницу графические изображения. Пример использования дескриптора <IMG> приведен в листинге 20.2.</p><p> Обычно в дескриптор <IMG> включают различные атрибуты. Атрибут SRC указыва ет на файл, содержащий изображение;</p><p> если изображение хранится на том же серве ре, значением атрибута является имя файла, а если файл с изображением находится на другом сервере, то в качестве значения SRC задается абсолютный URL этого файла. Атрибут ALT задает текст, описывающий изображение. Этот текст отобра жается броузерами, в которых запрещен вывод а также выводится на экран при помещении на изображение курсора мыши. Атрибуты WIDTH и HEIGHT 522 Часть III. Серверы Internet задают ширину и высоту изображения, что позволяет броузеру отображать текст документа еще до того, как загрузка изображения закончится.</p><p> • <Р>. Данный дескриптор определяет начало абзаца. Web-броузер автоматически переносит текст, достигший правого края окна, на новую строку.</p><p> • <А С помощью дескриптора <А> создается гипертекстовая ссылка (при этом URL документа, на который указывается ссылка, задается в качестве значения атрибута HREF). Текст ссылки выделяется в окне броузера цветом и подчеркивани ем. После щелчка мышью на ссылке в окне броузера отображается документ, которого задан посредством атрибута HREF.</p><p> Пользуясь этими дескрипторами, можно создать простейшую Web-страницу. Кроме них, в языке HTML определены многие другие дескрипторы и атрибуты, позволяющие форматировать таблицы, задавать шрифты, формировать маркированные и нумерован ные списки, разбивать окно броузера на части, называемые фреймами, и отображать во фреймах различные документы, а также выполнять многие другие действия. Проблема с использованием расширенных средств HTML состоит в том, что некоторые дескрип торы по-разному интерпретируются различными броузерами. Этот вопрос будет более подробно рассмотрен позже в данной главе.</p><p> Помимо HTML-файлов, Web-серверы могут предоставлять клиентским программам и другие типы документов. Так, например, в листинге 20.2 был приведен пример изоб ражения, включаемого на Web-страницу с помощью дескриптора <IMG>. В документе можно создавать гипертекстовые ссылки, указывающие на текстовые и графические фай лы, исполняемые программы, сценарии и другие типы данных. Необходимо лишь, чтобы сервер мог определить каждого из документов. Для этого используется файл types, который рассматривался ранее в этой главе. Если сервер Apache не может определить MIME-тип файла, он передает данные как неформатированный текст. Это становится источником проблем при работе некоторых операционных систем, так как специальные символы, находящиеся в составе файла, могут разрушить изображение на экране.</p><p> Поскольку многие Web-страницы содержат графические изображения, необходимо рассмотреть графические форматы, используемые в Web. Эти форматы описаны ниже.</p><p> • GIF. Graphics Interchange Format (формат обмена графическими данными) приобрел популярность в 1980-х. В данном формате используется схема сжатия без потери информации. Это означает, что изображение, полученное после распаковки, будет в точности совпадать с исходным изображением. представления цвета в GIF изображениях используется до 8 битов, т. е. такое изображение может содержать максимум 256 цветов.</p><p> • PNG. Portable Network Graphic (переносимые сетевые графические данные) также использует схему сжатия без потери информации. В отличие от GIF, PNG позволяет представлять цвет посредством большего количества битов (обычно применяется 24-битовое представление, но PNG дает возможность использовать для этой цели до 64 битов). Недостатком PNG является тот факт, что данный формат поддерживается не всеми броузерами. Более подробную информацию о PNG можно получить по адресу Глава 20. Поддержка Web-сервера • JPEG. В формате Joint Photographic Expert Group (объединенная группа экспертов по обработке фотоснимков) используется сжатие с потерей информации. В резуль тате достигается большая степень сжатия по сравнению с форматами GIF и PNG, но распакованное изображение отличается от исходного. Для представления цвета в JPEG может применяться до 24 битов.</p><p> Как правило, форматы, использующие сжатие без потери информации, лучше подхо дят для представления чертежей, рисунков и других подобных изображений. При переводе в формат JPEG такие изображения искажаются. Оцифрованные фотоснимки лучше пред ставлять в форматах, позволяющих кодировать цвет посредством большого числа битов (например, PNG или JPEG). Потеря информации при JPEG-сжатии практически не влияет на качество фотоснимка.</p><p> При создании JPEG-изображений графический пакет позволяет выбрать степень сжа тия. Низкая степень сжатия приводит к тому, что размер файла оказывается очень боль шим. Высокая степень сжатия позволяет получить файл небольшого размера, но качество изображения становится недопустимо низким. Выбирая степень сжатия графических фай лов, предназначенных для представления в Web, необходимо, с одной стороны, обеспе чить приемлемое качество изображения, а с другой стороны, добиться, чтобы время его загрузки было не слишком большим.</p><p> Инструментальные средства создания Web-страниц Несмотря на то что HTML-документы можно создавать с помощью обычных тексто вых редакторов, многие Web-дизайнеры предпочитают использовать для этой цели спе циализированные инструменты с графическим пользовательским интерфейсом. Данные инструменты позволяют редактировать текст документа подобно процессорам WYSIWYG (what you see is what you get);</p><p> при этом для выравнивания, создания абзацев, отображения текста полужирным шрифтом и выполнения других подобных действий ис пользуются кнопки, расположенные на панели инструментов. Поскольку при работе сер вера Apache не имеет значения, каким способом были сформированы Web-страницы, нет никаких оснований отказываться от использования специализированных инструменталь ных средств. Единственным исключением является редактор Microsoft Front Page. Этот инструмент создает Web-страницы, ориентированные на конкретный сервер, поэтому при работе с Apache лучше отказаться от его использования.</p><p> Некоторые инструменты, предназначенные для создания HTML-документов, предоставляют средства автоматического копирования созданных файлов на сер вер. При использовании сервера Apache эти средства могут работать некоррект но, поэтому желательно сохранять HTML-файлы на локальном диске, а затем копировать их на сервер с помощью FTP.</p><p> Ниже описаны некоторые инструменты, которые могут быть использованы при созда нии Web-страниц.</p><p> • Текстовые процессоры. Многие современные текстовые процессоры предоставля ют возможность экспортировать документы в формате HTML. (Поскольку средства форматирования текстовых процессоров мощнее, чем соответствующие средства, предусмотренные в языке HTML, при сохранении документа в виде HTML-файла внешний вид текста может несколько измениться.) Для тех, кто привык работать 524 Часть III. Серверы Internet с текстовыми процессорами, они могут стать удобными инструментами подготов ки Web-страниц. В системе Linux возможность экспортирования в HTML-формат предоставляют программы Applix Words, и WordPerfect.</p><p> • Web-броузеры. Многие популярные Web-броузеры, выполняющиеся в системе Li nux, в частности Netscape, содержат средства для подготовки HTML-документов.</p><p> Такие средства лучше подходят для создания Web-страниц, чем текстовые процес соры.</p><p> • Независимые программы подготовки Web-страниц. Единственным назначением этих инструментов является создание HTML-документов. В качестве примеров по добных программ, работающих в системе Linux, можно привести ASHE // August и Web Sphere Некоторые из этих инструментов очень просты, другие позволяют выполнять до статочно сложные действия.</p><p> Используя специализированные инструменты подготовки Web-страниц, необходимо учитывать, что каждый из них ориентирован на определенный Web-броузер. Поскольку один и тот же документ по-разному выглядит в различных броузерах, Web-страницы, созданные с помощью некоторого инструмента, могут некорректно отображаться посред ством ряда клиентских программ.</p><p> Особенности создания Web-страниц Некоторые Web-дизайнеры стараются в полной мере использовать возможности, пре дусмотренные спецификацией HTML, и создают HTML-документы, напоминающие стра ницы печатных изданий. Однако использование расширенных средств HTML может стать источником проблем. Дело в том, что предсказать, как тот или иной броузер будет об рабатывать некоторый фрагмент HTML-кода, практически невозможно. Даже предельно простая Web-страница, код которой показан в листинге 20.2, может по-разному выглядеть в различных броузерах. Как было замечено ранее, некоторые броузеры не обрабатывают дескриптор <CENTER>, другие игнорируют атрибут ALIGN в составе заголовка. Шрифт, указанный в документе, будет отображаться только в том случае, если он присутствует на компьютере, на котором выполняется Web-броузер, в противном случае содержимое до кумента будет воспроизведено с использованием шрифта по умолчанию. Цвет, заданный для отображения Web-страницы, должен сочетаться с цветами, выбранными пользовате лем. (Одна из ошибок, часто допускаемых Web-дизайнерами, связана с использованием цветов. Если задать цвет фона, не указав при этом цвет для отображения текста, мо гут возникнуть проблемы при выводе содержимого документа на экран. Предположим, например, что вы задали в документе белый цвет фона. Если при этом пользователь установил по умолчанию отображение белого текста на черном фоне, то прочитать текст документа в окне броузера будет невозможно. В листинге 20.2 заданы цвет фона и перед него плана, но не указан цвет для отображения гипертекстовых ссылок. Это также может стать источником проблем при выводе документа.) Поскольку броузеры по-разному интерпретируют HTML-код, желательно проверять созданные вами Web-страницы в различных броузерах. Как минимум вы должны выяс нить, как отображаются ваши документы в наиболее популярных на сегодняшний день Глава 20. Поддержка Web-сервера клиентских Web-программах: Netscape Navigator и Microsoft Internet Explorer. По возмож ности следует проверить качество воспроизведения документа в различных версиях этих броузеров. Следует также учитывать, что в последнее время среди пользователей Linux стали популярны броузеры Mozilla вариант Netscape Nav igator, распространяемый в исходных кодах), Opera com) и Коп queror (созданный в рамках проекта Особого внимания заслуживает броузер Lynx org), отображающий лишь текстовую информацию. Если вы хотите, чтобы ваши Web-страницы были доступны всем пользователям, необходимо про тестировать их с помощью данного броузера. Несмотря на то что Lynx в настоящее время практически не используется, он позволяет выявить большинство проблем, которые не очевидны при работе с другими броузерами. Обеспечив воспроизведение Web-страницы посредством клиентской программы, отображающей лишь текст, вы упростите работу с Web-документами пользователей с нарушениями зрения, применяющих синтезаторы речи. Необходимо также учитывать интересы пользователей, работающих с различными операционными системами. В системе Windows наиболее популярным является броузер Internet Explorer, в других системах, например BeOS и OS/2, используются и дру гие клиентские программы. Некоторые из них работают на различных платформах, другие ориентированы на выполнение в конкретной операционной системе.</p><p> СОВЕТ Просматривая файлы протоколов, вы сможете определить, какие типы броузеров чаще всего применяют пользователи, обращающиеся на ваш Web-узел.</p><p> Анализ файлов протоколов Файлы протоколов — важный источник сведений о работе Web-сервера. Информация, содержащаяся в этих файлах, вам администрировать Web-узел. Файлы протоко лов включают информацию о клиентских программах, обращающихся к серверу, о доку ментах, запрашиваемых клиентами, о времени обращений и другие сведения. Для анализа содержимого файлов протоколов вручную требуется много времени и усилий, поэтому большинство администраторов делают это с помощью специализированных инструмен тов, которые упрощают обработку данных. Наиболее часто для этой цели применяются программы Analog и Webalizer.</p><p> В данном разделе рассматриваются стандартные файлы протоколов Apache, за писью информации в которые управляет директива Сервер Apache также поддерживает дополнительные файлы протоколов, в которые помещается информация об ошибках, сообщения, генерируемые в процессе загрузки, и дру гие данные.</p><p> Формат файла протокола Apache Данные могут записываться в файл протокола Apache в различных форматах;</p><p> конкрет ный формат задается с помощью директивы CustomLog. В данном разделе описывается формат combined, который объединяет в одном файле различные данные. Запись в фор мате combined выглядит следующим образом:</p><p> 192.168.1.1 - - -0500] "GET /index.html \ 200 8597 "Mozilla I;</p><p> Linux 2.0. 526 Часть III. Серверы Internet Эта запись включает следующие компоненты.</p><p> • имя или IP-адрес клиента. Первое поле записи содержит адрес или имя клиента, от которого был получен запрос.</p><p> • Идентификатор пользователя. Следующие два поля содержат имя пользователя, инициировавшего запрос. В первом из этих полей содержится имя для сервера а во втором — имя для HTTP-аутентификации. (В данном примере в этих полях указаны дефисы, указывающие на то, что сведения о пользователе не дос тупны.) • Дата и время. Apache записывает дату и время передачи запроса. В этой записи содержится локальное время с указанием временного пояса (в данном примере -0500).</p><p> • HTTP-запрос. HTTP-запрос включает переданную клиентом запра шиваемый документ и версию протокола HTML С помо щью этой информации можно определить, какие из документов, расположенных на вашем Web-узле, наиболее популярны среди пользователей.</p><p> • Код ответа. В ответ Apache включает цифровой код, информирующий клиент скую программу о результатах обработки запроса. В данном примере указан код ответа 200, это означает, что обработка запроса окончилась успешно. Коды, начи нающиеся с цифры 3, означают перенаправление запроса, а коды, начинающиеся с цифры 4 или 5, свидетельствуют об ошибке.</p><p> • Размер объекта. Число 8597 соответствует размеру ресурса, который Apache пере дал клиенту в ответ на запрос. При вычислении размера объекта заголовок ответа не учитывается.</p><p> • Документ, ссылающийся на текущий ресурс. Если пользователь запросил новый ресурс щелчком на гипертекстовой ссылке в составе HTML-документа, броузер передает серверу в составе запроса URL этого документа. Полученные сведения Apache записывает в файл протокола. В приведенном выше примере в данном поле содержится дефис, означающий, что документ, ссылающийся на запрашиваемый ресурс, не определен. Это может быть в случае, если пользователь непосредственно ввел URL ресурса в поле адреса броузера.</p><p> • Клиентская программа. Последнее поле записи содержит информацию о броузере, а также сведения об операционной системе, в которой он выполняется. (Заметьте, что броузер Netscape сообщает о себе с помощью идентификатора На сведения, указанные в этом поле, нельзя полагаться, поскольку клиентскую про грамму можно настроить так, чтобы она сообщала о себе неверные данные. Кроме того, сведения о броузере могут быть заменены proxy-сервером.</p><p> Информация, содержащаяся в файле протокола, позволяет сделать вывод о популярно сти ваших документов среди пользователей, о том, из каких сетей пользователи наиболее часто обращаются к вашему серверу, и получить другие необходимые сведения. Как уже было сказано ранее, анализ данных в файле протокола представляет собой достаточно Глава 20. Поддержка Web-сервера сложную задачу, для решения которой часто используются специализированные инстру менты.</p><p> В большинстве версий Linux инструмент по умолчанию настраивается так, чтобы через определенные промежутки времени осуществлялась ротация файлов протоколов (переименование файлов протоколов и удаление с диска старых файлов). Соответствующая задача для обычно описывается в ка талоге d или interval. Если в вашей системе ро тация файлов не выполняется, вам надо создать соответствующую задачу в противном случае размеры файлов станут слишком большими, а это может привести к переполнению диска.</p><p> Использование Analog Analog / является наиболее популярным из инструментов, предназначенных для анализа файлов протоколов. Этот инструмент в основном отобража ет результаты анализа в текстовом виде, но может также представлять их в виде диаграмм.</p><p> С примером отчета, сгенерированным Analog, можно ознакомиться, обратившись по ад ресу Инстру мент Analog входит в состав некоторых дистрибутивных пакетов. Если в вашей системе Analog отсутствует, вы можете скопировать его с Web-узла.</p><p> Настройка программы Analog Работой программы Analog управляет конфигурационный файл g, кото рый обычно размещается в каталоге /etc. Этот файл содержит опции, задавая значения которых вы можете представлять данные, генерируемые Analog, в удобном для вас виде.</p><p> Например, опция задает поисковые серверы, которые могут ссылаться на ваши документы. С помощью этой опции Analog может учитывать ссылки на содер жимое Web-узла, находящиеся на поисковых серверах. При настройке программы Analog вам придется задать следующие опции:</p><p> LOGFILE HOSTNAME Первые две из приведенных выше опций особенно важны. Если вы не укажете их, Analog не сможет найти файл протокола, а выходная информация будет непосредственно передаваться в стандартный выходной поток. Analog генерирует выходные данные в фор мате HTML и включает в созданный им файл графические изображения. Таким образом, вы можете просмотреть результаты обработки файла протокола с помощью Web-броузера.</p><p> (При настройке Analog необходимо указать лишь имя основного HTML-файла, например графические данные будут размещены в том же каталоге.) Опция HOSTNAME не оказывает существенного влияния на работу Analog. Ее значение лишь отображается в начале отчета.</p><p> К сожалению, некоторые пакеты Analog не являются полнофункциональными, в част ности, в них принимаются специфические и часто противоречащие друг другу предпо ложения о размещении файлов. Для того чтобы разрешить эту проблему, необходимо создать несколько символьных ссылок.</p><p> 528 Часть III. Серверы Internet • Конфигурационный файл. При создании некоторых пакетов Analog считается, что файл cfg должен находиться в том же каталоге, что и исполняемый файл Analog (т. е. в каталоге однако чаще всего конфигурационный файл размешается в каталоге /etc. Очевидно, что каталог /usr/bin — не самое подходящее место для конфигурационного файла, поэтому, чтобы обеспечить работу Analog с файлом, находящимся в каталоге /etc, необходимо выполнить команду -s /usr/bin.</p><p> • Файлы поддержки языка. Для того чтобы программа Analog выполнялась кор ректно, она должна иметь доступ к файлам поддержки языка. Некоторые пакеты размещают эти файлы в но Analog ищет их в каталоге Чтобы разрешить это противоречие, надо выполнить команду -s /var/lib/analog/lang /usr/bin.</p><p> • Поддержка графики. При обработке содержимого файлов протоколов Analog ге нерирует графические изображения, в частности диаграммы. Графические данные создаются для каждого узла, но Analog использует для записи информации файлы с фиксированными именами. В некоторых пакетах по умолчанию предусмотрено размещение этих файлов в каталоге но в документах, сгенерированных при выполнении Analog, содержатся ссылки, которые указывают на файлы, находящиеся в подкаталоге images текущего каталога. Чтобы обес печить доступ к графическим файлам, необходимо создать еще одну символьную ссылку, выполнив для этого команду -s images.</p><p> Указанные здесь изменения нужны лишь для некоторых пакетов. В частности, их необходимо выполнить при использовании пакета. в системе Man drake.</p><p> Запуск программы Analog Для запуска программы Analog на выполнение необходимо ввести команду analog.</p><p> Пользователь, вызывающий эту команду, должен иметь право читать содержимое файла протокола и иметь право записи в тот каталог, в который Analog помещает свои выходные данные. Таким образом, при наличии необходимых полномочий запускать Analog можно от имени обычного пользователя.</p><p> В некоторых случаях возникает необходимость в периодическом запуске Analog (раз в неделю, раз в месяц или даже раз в день). Сделать это можно с помощью инструмента При этом необходимо помнить, что Analog потребляет не очень большие, но все же значительные ресурсы, поэтому если запускать данную программу слишком часто (например, каждую минуту), это непременно скажется на производительности системы.</p><p> Интерпретация выходных данных Analog Выходные данные Analog представляют собой сочетание различных отчетов. Каждый из них содержит информацию, которая была создана в результате некоторой операции по обработке файла протокола, и помещается в отдельном разделе. Назначение основных разделов выходного файла описано ниже.</p><p> • Обобщенная сводка. В этом разделе представлена общая информация, использу емая для оценки состояния Web-сервера: среднее количество запросов, обрабаты ваемых в течение дня, среднее число запросов, при обработке которых возникли Глава 20. Поддержка Web-сервера ошибки, общий объем переданных данных и средний объем данных, переданных в течение дня.</p><p> • Ежемесячный отчет. В ежемесячном отчете указывается число документов, обра ботанных в течение месяца. Увеличение числа обращений в течение месяца и сни жение производительности системы указывает на то, что вам необходимо перенести сервер на более мощный компьютер или увеличить пропускную способность со единения.</p><p> • Ежедневный отчет. В этом разделе указывается число документов, обработанных в течение определенного дня недели (понедельник, вторник и т. д.).</p><p> • Почасовые отчеты. В данном разделе приводится информация о работе сервера в течение каждого часа дня. Если вам необходимо выполнять какие-либо действия, потребляющие ресурсы сервера, желательно выбрать для этого время, в течение которого сервер наименее загружен. В этом вам поможет информация, приведенная в данном разделе.</p><p> • Отчет о работе с доменами. Если ваш сервер поддерживает несколько доменов, просмотрев данный раздел, вы ознакомитесь с трафиком, связанным с каждым доменом.</p><p> • Отчет об использовании серверов различных организаций. Если ваш сервер поддерживает виртуальные узлы для различных организаций, этот отчет предостав ляет сведения о трафике, связанном с работой сервера каждой организации.</p><p> • Отчет о работе с операционными системами. Если в вашем файле протокола содержится информация об операционных системах, в которых работают клиенты, обращающиеся к серверу, эта информация учитывается в данном отчете. Следует заметить, что из-за наличия proxy-серверов приведенные здесь данные не всегда отражают реальную ситуацию.</p><p> • Отчет о кодах состояния. В данный раздел Analog включает диаграмму, представ ляющую соотношение различных кодов состояния, передаваемых Web-сервером в составе ответов клиентам. Если коды 4.хх и появляются во многих ответах, необходимо найти и устранить причину подобного поведения сервера.</p><p> • Отчет о размерах файлов. Данный раздел содержит сведения о числе файлов разных размеров, которые Web-сервер предоставляет пользователям. Информация, приведенная в этом отчете, может быть использована для управления трафиком.</p><p> Если вы обнаружите, что средний размер передаваемых файлов увеличивается, вам надо принять соответствующие меры, например увеличить степень сжатия графи ческих изображений.</p><p> • Отчет о типах файлов. В данном отчете сообщается о типах файлов (JPEG, HTML и т. д.), предоставляемых Web-сервером. Эта информация может быть использована для тех же целей, что и сведения, содержащиеся в отчете о размерах файлов.</p><noindex> <div class="reklama"> <center> <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <!-- dissers - kvadr (text2) --> <ins class="adsbygoogle" style="display:inline-block;width:336px;height:280px" data-ad-client="ca-pub-9894471784993021" data-ad-slot="6763398730"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </center> </div> </noindex><p> • Отчет о каталогах. На большинстве Web-узлов информация хранится в различных каталогах. Данный отчет предоставляет сведения о том, в каких каталогах находится III. Internet информация, пользующаяся наибольшим успехом (решение о популярности того или иного каталога принимается на основании переданных данных).</p><p> • Отчет о запросах. Данный отчет содержит сведения об использовании файлов, находящихся в корневом каталоге Web-узла.</p><p> Информация, приведенная в различных отчетах, позволяет составить представление о работе Web-узла. Еще более полные сведения вы можете получить, собрав данные, сгенерированные Analog в течение определенного периода времени. Для этого надо ор ганизовать ротацию файлов протоколов Apache, причем в процессе ротации необходимо копировать выходные данные Analog в специальный подкаталог. Ротацию и копирование файлов Analog можно реализовать с помощью инструмента Кроме того, вам при дется создать главный ссылающийся на данные Analog, скопированные в процессе ротации в выбранные вами каталоги. В результате вы получите информацию, собранную Analog в течение нескольких недель или месяцев.</p><p> Несмотря на то что Analog является чрезвычайно полезным инструментом, следует все же признать, что обработка данных, сгенерированных в процессе выполнения этой программы, — трудоемкое занятие, требующее ненамного меньше усилий, чем непосред ственный анализ файлов протоколов Apache. Для дальнейшей обработки данных, сгене рированных Analog, и представления их в форме, удобной для восприятия, используются дополнительные инструменты. В качестве примера такого инструмента можно привести Report Magic com).</p><p> Использование Webalizer Инструмент Webalizer org) предоставляет администра тору такие же возможности, как и Analog. Подобно Analog, Webalizer читает содержимое конфигурационных файлов и создает выходной HTML-файл, пред ставляя сведения о Web-узле в удобном для восприятия виде. Webalizer поставляется в составе некоторых дистрибутивных пакетов. Если же в вашей системе этот инструмент отсутствует, вы можете скопировать его с Web-узла, содержащего сведения о данном ин струменте и его код. Пример выходного файла, сгенерированного Webalizer, расположен по адресу Настройка Webalizer Работой Webalizer управляет конфигурационный файл который обычно располагается в каталоге /etc. Как и при работе с Analog, вы должны сообщить Webalizer о том, где находится файл протокола Web-сервера и в какой каталог следует записывать выходные данные. Для этого используются следующие опции:</p><p> LogFile Одно из отличий между Analog и Webalizer состоит в том, что в конфигурационном файле Analog задается имя выходного файла, а для Webalizer указывается каталог, в кото рый данная программа будет записывать сгенерированные в процессе работы файлы. Если этот каталог доступен Web-серверу, то вы можете просматривать информацию, создан ную Webalizer, с помощью Web-броузера. Если же вы разместите каталог за пределами области, к которой может обращаться Web-сервер, то для просмотра результатов работы Глава 20. Поддержка Web-сервера Webalizer вам придется задавать URL, начинающийся с Ниже перечислены некоторые опции Webalizer, значения которых вы, возможно, захотите изменить.</p><p> • Incremental. Если для данной опции задано значение yes, Webalizer сохраняет от запуска к запуску информацию о своем состоянии. Это позволяет обрабатывать файл протокола по частям. Предположим, например, что вы запускаете Webalizer один раз в день. При установленном значении yes опции Incremental он будет помнить, какую запись он уже обработал, и сможет учитывать при этом ротацию файлов. Если значение данной опции равно no, Webalizer будет при каждом запуске обрабатывать весь файл протокола.</p><p> • HostName. Эта опция позволяет задать имя узла, отображаемое в заголовке отчета (содержание заголовка отчета определяется опцией ReportTitle).</p><p> • Данная опция позволяет объединять доменные имена в группы.</p><p> Значение опции указывает, какое количество компонентов доменного имени должно идентифицировать группу. Предположим, что значение GroupDomains равно 2.</p><p> В этом случае доменные имена edu и будут объединены в группу edu. Данная опция позволяет упорядочивать данные, генерируемые Webalizer.</p><p> • GroupSite. Данная опция также предназначена для поддержки групп. Например, значение GroupSite *. net объединяет в одну группу все узлы, при надлежащие домену • HideSite. Эта опция исключает узлы из группы, созданной с помощью GroupSite. Опции GroupSite и HideSite используются совместно.</p><p> Конфигурационные файлы Webalizer имеют больший объем и более сложную струк туру по сравнению с соответствующими файлами Analog. Выше была перечислена лишь незначительная часть опций, предназначенных для настройки Webalizer. Большинство оп ций снабжено подробными комментариями, прочитав которые вы можете легко составить представление о назначении этих опций.</p><p> Запуск Webalizer Для запуска Webalizer надо ввести команду webalizer. Как и при работе с программой Analog, чтобы запустить Webalizer, не надо обладать полномочиями пользователя root.</p><p> Достаточно иметь право читать содержимое файла протокола и записывать информацию в каталог, предназначенный для выходных данных Webalizer. Возможно, вам потребуется организовать запуск Webalizer по расписанию с помощью инструмента В этом случае целесообразно установить значение yes опции Incremental.</p><p> Часто при инсталляции Apache, формируется задача для инструмента на выпол нение ротации файлов. Если ротация не предусмотрена, вам надо организовать ее само стоятельно. Чтобы обеспечить максимальное использование входных данных, желательно запускать Webalizer не только по графику, но и непосредственно перед выполнением ро тации.</p><p> Интерпретация выходных данных Webalizer Выходные данные, генерируемые в процессе работы Webalizer, представляют собой двухуровневую структуру. На первом уровне выводится информация об активности серве 532 Часть III. Серверы Internet pa за прошедший год. (Для вновь инсталлированного сервера большинство месяцев будут пустыми.) Информация, соответствующая первому уровню, отображается как в виде таблиц, так и в виде диаграмм и представляет сведения о переданных Web-страницах, объеме скопированной информации и другие данные для каждого месяца. После щелчка на названии месяца отобразится Web-страница, соответствующая второму уровню дан ных, на котором отображаются более подробные сведения для выбранного месяца. На этой странице присутствуют следующие разделы.</p><p> • Статистика работы сервера за месяц. В этом разделе отображается та же инфор мация, что и на первом уровне, дополненная о кодах, содержащихся в ответах клиентам.</p><p> • Статистика работы сервера за день. Во втором разделе Web-страницы содержатся диаграмма и таблица, представляющие сведения о Web-трафике в течение каждого дня месяца. Здесь выводятся данные о количестве обращений, числе скопированных файлов и объеме переданных данных в килобайтах.</p><p> • Почасовая статистика. Здесь представлены те же данные, что и в предыдущем разделе, но они разбиты по часам суток. С помощью этой информации вы можете выяснить, в какие часы нагрузка на сервер была максимальна, и принять меры для более равномерного ее распределения.</p><p> • URL наиболее популярных документов. Webalizer отображает две таблицы, в ко торых содержится информация о числе обращений и объеме скопированных данных для различных URL. (При необходимости вы можете объединять URL в группы, используя для этого рассмотренные ранее опции.) Одна таблица отображает URL документов, к которым было максимальное количество обращений, другая — URL, в результате обращения к которым были скопированы данные наибольшего объема.</p><p> • Входная и выходная страницы. Следующие две таблицы, генерируемые Webalizer, содержат сведения о наиболее популярной входной и выходной страницах. Входной страницей (entry page) называется документ, к которому обращается пользователь в начале работы с узлом, а выходной страницей (exit page) — документ, который пользователь просматривает непосредственно перед завершением работы.</p><p> • Наиболее популярные узлы. Webalizer записывает сведения о взаимодействии кли ентов с Web-узлами, поддерживаемыми сервером, учитывая как число обращений, так и объем скопированной информации. При необходимости вы можете объединять узлы в группы с помощью опции GroupSite, расположенной в конфигурационном файле Webalizer.</p><p> • наиболее часто ссылающиеся на содержимое сервера. Анализируя информацию в файле протокола, Webalizer предоставляет сведения об узлах, наи более часто ссылающихся на документы, расположенные на сервере.</p><p> • Наиболее часто используемые ключевые слова. Некоторые поисковые серверы, в базе данных которых учтены документы, расположенные на вашем Web-узле, включают в состав URL строку поиска. Webalizer выделяет эту информацию и пред ставляет в отчете.</p><p> Глава 20. Поддержка Web-сервера • Наиболее популярные клиентские программы. Webalizer учитывает типы Web броузеров, наиболее часто обращающихся к вашему узлу.</p><p> • Наиболее популярные страны. В последнем разделе Webalizer предоставляет ин формацию об обращениях к документам из разных стран. Страна определяется на основании домена верхнего уровня, поэтому наряду с реальными странами на Web странице встречаются US Commercial, Network и другие подобные имена.</p><p> На основании этой информации вы можете сделать вывод об особенностях обращений к вашему Web-узлу из Internet. Сравнивая соответствующие данные за различные месяцы, вы увидите, как интересующие вас характеристики изменяются со временем.</p><p> Резюме Web-сервер чрезвычайно важный компонент многих сетей, используемых как для внутреннего взаимодействия, так и для предоставления данных внешним пользователям.</p><p> Чаще всего Web-серверы передают клиентам статическую информацию, но, используя формы и сценарии, можно организовать двунаправленный обмен данными и динамиче скую генерацию Web-страниц. Применение SSL позволяет защитить данные, передавае мые по сети, а механизм виртуальных доменов дает возможность разместить на одном компьютере несколько Web-узлов. Помимо настройки и запуска Web-сервера, поддержка Web-узла предполагает решение еще двух важных задач: создание Web-страниц и интер претацию файлов протоколов. Web-страница может представлять собой как чрезвычайно простой документ, создаваемый с помощью текстового редактора, так и очень сложный набор файлов, для формирования которого приходится применять специализированные инструментальные средства. Файлы протоколов содержат информацию о работе Web-сер вера. С помощью этих файлов можно определить, насколько популярен Web-узел среди пользователей, выявить и решить проблемы и узнать, какие из внешних документов ссы лаются на содержимое вашего узла. На основании анализа файлов протоколов строятся планы по дальнейшему совершенствованию Web-узла.</p><p> 1 Протокол FTP (File Transfer Protocol — протокол передачи файлов) существует давно и пользуется большой популярностью в Internet. Он обеспечивает обмен файлами между компьютерами, подключенными к сети. могут копировать файлы с серве ра и, если позволяет конфигурация сервера, передавать информацию на сервер. Иногда FTP-сервер может заменить Web-сервер или файловый сервер, но в большинстве случаев его можно рассматривать как дополнение к этим средствам. В ряде ситуаций наличие FTP-сервера на компьютере не оправдано. Если вы приняли решение установить FTP сервер, можете воспользоваться для этой цели различными программами, ориентирован ными на работу в системе Linux. По умолчанию программы, реализующие FTP-серверы, настроены для выполнения определенного круга задач. Возможно, вам придется изменить конфигурацию сервера. В некоторых случаях возникает необходимость в анонимном сервере, который позволяет каждому желающему копировать файлы на свой компьютер.</p><p> Использование FTP-сервера FTP-сервер имеет некоторое сходство с Web-сервером, рассмотренным в главе 20, а также с серверами Samba и NFS, предназначенными для разделения файлов (о них шла речь в главах 7 и 8). Все эти серверы позволяют передавать файлы с одного компьютера на другой и в некоторых ситуациях взаимозаменяемы. Однако каждый из этих протоколов имеет свои особенности, определяющие выбор сервера для решения определенного круга задач. Ниже описаны основные отличия FTP-сервера от серверов HTTP, Samba и NFS.</p><p> • Аутентификация. Для того чтобы пользователь мог работать с FTP-сервером, он должен зарегистрироваться на нем, указав пользовательское имя и пароль. (Исклю чением является анонимный FTP-сервер, который будет описан ниже.) При работе с Web-сервером аутентификация обычно не требуется, хотя существуют средства, позволяющие настроить Web-сервер для проверки имени и пароля. Что же касается серверов, предназначенных для разделения файлов, то некоторые из них проверяют имя пользователя и пароль, другие выполняют аутентификацию, анализируя лишь IP-адрес.</p><p> Глава 21. • Использование учетных записей. Особенности аутентификации, выполняемой FTP-сервером, позволяют применять его для предоставления пользователям доступа к принадлежащим им файлам с удаленных компьютеров. Подобным образом могут использоваться серверы NFS и Samba. Web-сервер также позволяет пользователям работать с их файлами, но тот же уровень доступа он предоставляет всем желаю щим. Для обеспечения защиты информации при работе с Web-сервером приходится принимать дополнительные меры.</p><p> • Шифрование. Стандартные FTP-серверы не выполняют шифрование данных, в том числе имени пользователя и пароля. Это создает опасность при передаче информа ции через Internet. Исключением в данном случае являются анонимные FTP-сер веры, при использовании которых шифрование информации не имеет смысла. Су ществуют защищенные версии FTP, поддерживающие кодирование передаваемых данных. Защиту информации, которая передается средствами FTP, обеспечивают средства Kerberos, которые рассматривались в главе 6. В обычных условиях Web-серверы не выполняют шифрование данных, хотя при необходимости такая возможность реализуется достаточно просто. Сервер Samba может быть настроен для шифрования паролей и прочей информации. NFS не использует пароли, поэто му о кодировании паролей речь не идет. Что же касается данных, передаваемых средствами NFS, при необходимости шифрование их может осуществляться. Про граммы scp и tp, входящие в состав пакета SSH, кодируют все данные, поэтому их можно использовать вместо средств FTP в том случае, когда вопросы безопас ности имеют большое значение.</p><p> Если используемый вами пароль передается по Internet в незакодированном виде, вы должны регулярно изменять его. При этом злоумышленник, получивший пароль незаконным способом, будет иметь меньше возможностей нанести вред системе.</p><p> Поддержка соединения. Подобно Samba и NFS, при обмене данными по протоко лу FTP поддерживается постоянное соединение. Пользователь может зарегистри роваться на FTP-сервере, бездействовать в течение длительного времени (столько, сколько позволяет установленное значение тайм-аута), а затем скопировать файл с сервера. Web-серверы действуют совершенно по-другому;</p><p> в рамках соединения может быть передан один, в крайнем случае несколько файлов. FTP коренным об разом отличается от других протоколов подобного назначения тем, что при взаи модействии клиента и сервера используются два порта: один для передачи команд, а другой для передачи данных. Клиент обращается к серверу через порт Затем в зависимости от режима (режим может быть активным или пассивным) передача данных осуществляется либо по инициативе клиента, либо по инициативе серве ра. Такая особенность взаимодействия усложняет настройку брандмауэров, однако в большинстве программ, реализующих предусмотрены специальные средства, позволяющие решить эту задачу.</p><p> Непосредственная обработка файлов. Серверы, предназначенные для разделения файлов, например NFS и Samba, предоставляют возможность обрабатывать удален ные файлы так, как будто они расположены на локальном компьютере. Например, пользователь может загрузить файл с удаленной машины в текстовый редактор, 536 Часть III. Серверы Internet внести в него необходимые изменения и снова сохранить на удаленном компьюте ре. При этом файл на локальный диск не копируется. Ни FTP, ни HTTP не обес печивают подобной возможности. Если доступ к удаленному компьютеру может осуществляться только посредством протокола FTP или HTTP, то, для того, чтобы отредактировать файл, вы должны сначала скопировать его на локальную машину, внести и сохранить изменения, а затем снова передать файл на сервер. Существуют средства, позволяющие организовать разделение файлов с помощью протокола FTP.</p><p> В системе Linux такую возможность предоставляет продукт Linux FTP Filesystem //f tpf net). Однако подобное использование протоко ла FTP можно рассматривать скорее как исключение из общего правила.</p><p> • Двунаправленная передача данных. Серверы, предназначенные для разделения файлов, и FTP-сервер позволяют передавать данные с сервера на клиентскую маши ну и наоборот. При необходимости системный администратор имеет возможность запретить запись файлов на диск сервера. Web-серверы в основном применяются для передачи данных с сервера на клиентский компьютер, но в протоколе HTTP предусмотрена также возможность передавать информацию на сервер.</p><p> • Работа клиентов на различных платформах. FTP- и Web-серверы взаимодей ствуют с клиентами, выполняющимися в любой операционной системе, поддержи вающей TCP/IP;</p><p> не является исключением даже система DOS. В отличие от FTP и HTTP, протоколы разделения файлов ориентированы на конкретную платформу:</p><p> сервер NFS работает с клиентами UNIX и Linux, a Samba — с клиентами DOS, Windows и OS/2. Пытаясь обеспечить межплатформенную совместимость прото колов разделения файлов, вы неизбежно столкнетесь с проблемами представления прав доступа, атрибутов файлов и другими ограничениями. При этом вам также приходится обеспечивать взаимодействие с клиентскими программами, многие из которых распространяются на коммерческой основе.</p><p> • Трудозатраты при настройке сервера. По умолчанию в системе Linux устанавли вается конфигурация FTP-сервера, предоставляющая пользователям такие же права чтения и записи файлов, которые они получили бы, зарегистрировавшись на ком пьютере. Если вас устраивает подобное поведение сервера, его настройка займет крайне мало времени. Чтобы обеспечить подобное взаимодействие с серверами NFS, Samba и HTTP, вам придется внести существенные изменения в их конфи гурационные файлы. С другой стороны, чтобы установить анонимный FTP-сервер, надо приложить определенные усилия для его настройки, в то время как в дру гих серверах подобный принцип взаимодействия с пользователями реализован по умолчанию.</p><p> Таким образом, средства FTP удобно использовать для решения следующих двух задач.</p><p> • Обслуживание локальных пользователей. Если на компьютере под управлением Linux существуют учетные записи для некоторых пользователей, FTP-сервер позво лит этим пользователям копировать свои файлы с сервера на удаленный компьютер либо с удаленной машины на сервер. Подобный тип доступа к данным менее удо бен по сравнению с разделением файлов, но для настройки FTP-сервера от вас, Глава 21. как от системного администратора, потребуется меньше времени и усилий. Меж платформенная совместимость также является существенным преимуществом FTP сервера.</p><p> • Анонимный доступ к данным. Установив в сети анонимный FTP-сервер, вы да дите возможность внешним пользователям копировать на их компьютеры файлы, предоставленные вами для всеобщего доступа, а в некоторых случаях и передавать свои файлы на сервер. В качестве альтернативы анонимному FTP-серверу (особен но, если вам не требуется копирование данных с клиентских компьютеров на сервер) может выступать Web-сервер. Если же вы не хотите тратить время на подготовку Web-страниц, установка FTP-сервера может стать более приемлемым решением.</p><p> В обоих случаях необходимо учитывать вопросы безопасности. Если вы хотите предо ставлять пользователям локальной сети их файлы, следует принять меры для того, чтобы обращения к серверу могли осуществляться из локальной сети. Риск перехвата пароля в Internet настолько велик, что решение использовать FTP-сервер для передачи важных данных по глобальной сети было бы опрометчивым. Даже если FTP-сервер до ступен лишь в пределах локальной сети, необходимо периодически менять пароли на случай, если кто-либо из пользователей поддастся соблазну и займется "подслушивани ем" паролей. При использовании анонимного FTP-сервера сохранять пароль в секрете бессмысленно, но в этом случае вам необходимо принять меры для того, чтобы злоумыш ленник, обращающийся к серверу извне, не смог воспользоваться недостатками в его защите для получения несанкционированного доступа к данным в сети. Так, например, предоставление права записывать информацию на сервер связано с большим риском, в особенности если возможности записи информации не ограничены несколькими ката логами, которые полностью контролируются вами. Если вы разрешаете запись данных на анонимный сервер, вы должны принять меры для того, чтобы эти файлы становились доступными другим пользователям лишь после того, как вы ознакомитесь с ними и одоб рите их. В противном случае ваш сервер может превратиться в инструмент для обмена данными между хакерами.</p><p> реализующие FTP-сервер в системе Linux В настоящее время существует большое количество программ, реализующих FTP сервер в системе Linux. Три из них, пользующиеся наибольшей популярностью, описаны ниже.</p><p> • BSD FTPD. Версия BSD Unix поставляется в комплекте с FTP-сервером, который адаптирован для переноса в систему Linux. Так, например, на выполнение в Linux ориентирован пакет OpenBSD FTPD. Варианты BSD FTPD поставляются с система ми Debian и SuSE. От других FTP-серверов BSD FTPD отличается более надежными средствами защиты, но, тем не менее, он не получил большой популярности среди пользователей Linux.</p><p> • ProFTPd. Пакет ProFTPd, Web-сервер которого находится по адресу / prof org, поставляется с системами Debian, Mandrake, Slackware, SuSE и Tur 538 Часть III. Серверы Internet boLinux. Популярность данного сервера резко возросла в 2002 г. При создании ProFTPd были использованы некоторые подходы, характерные для сервера Apache.</p><p> • WU-FTPD. Washington University FTP Daemon — наиболее популярный из современных FTP-серверов для Unix. Web-узел WU-FTPD расположен по адре су f д. Данный продукт поставляется с Caldera, Debian, Mandrake, Red Hat, и TurboLinux. В процессе его эксплуатации были выявлены и устранены многочисленные недостатки в защите.</p><p> Каждая из этих программ поддерживает основные функции и некоторые из расши ренных функций FTP-сервера. В данной главе описываются только продукты ProFTPd и WU-FTPD, так как именно они пользуются наибольшей популярностью и поставля ются в составе различных дистрибутивных пакетов Linux. Программа ProFTPd обладает большей гибкостью и с точки зрения безопасности превосходит WU-FTPD. Однако если в составе вашей системы поставляется только WU-FTPD либо если вы хорошо знакомы с данным продуктом, имеет смысл остановить свой выбор на нем. Если же вы склонны экспериментировать, попробуйте установить в своей системе BSD FTPD.</p><p> Настройка основных функций FTP-сервера Инсталлировав FTP-сервер, надо обеспечить его выполнение. Как правило, в дистри бутивных пакетах, комплектуемых WU-FTPD, запуск данной программы осуществляется посредством суперсервера, а если в составе системы содержится ProFTPd, для его запус ка обычно используют сценарий SysV. Если вас не устраивает подход, использованный в вашей системе, вы можете реализовать альтернативное решение. При работе со многи ми дистрибутивными пакетами обеспечение запуска FTP-сервера является единственным действием, необходимым для его настройки, так как конфигурация, установленная по умолчанию, позволяет использовать сервер для решения многих задач. Так, например, по умолчанию пользователь, для которого в системе существует учетная запись, имеет возможность регистрироваться на FTP-сервере и копировать файлы из своего рабочего каталога. Если в вашей системе сервер должен действовать по-другому, следует изме нить его настройку. Наиболее часто используемый вариант настройки — анонимный FTP сервер — будет рассмотрен далее в этой главе.</p><p> Запуск FTP-сервера Варианты запуска серверов в системе Linux рассматривались в главе 4. Если пакет, ре ализующий FTP-сервер, поставляется в составе системы, для обеспечения запуска сервера вам потребуется приложить лишь минимальные усилия. Не исключено также, что запуск сервера предусмотрен по умолчанию при установке пакета. Однако вам необходимо не упускать из виду следующие детали.</p><p> • В некоторых дистрибутивных пакетах, использующих inetd, в файл /etc/inetd.</p><p> включается несколько записей для различных FTP-серверов. При желании вы можете инсталлировать различные и запускать один из них по выбору.</p><p> Для этого в файле надо удалить символ комментариев в начале за писи, соответствующей выбранному серверу, закомментировать остальные записи и перезапустить inetd. Если в вашей системе установлен только один FTP-сервер, Глава необходимо убедиться, что в файле conf символ комментариев отсутству ет лишь в записи, соответствующей этому серверу, в противном случае работать не будет.</p><p> • В большинстве систем, использующих xinetd для запуска FTP-сервера, в ката лог d помещается специальный файл. Этот файл является частью пакета сервера. Если в нем содержится строка disable = yes, это означает, что запуск запрещен. Подобная запись включается из соображений безопасности. Если вы хотите, чтобы FTP-сервер выполнялся в системе, задайте значение по опции disable. (Чтобы суперсервер учел внесенные изменения, его надо перезапустить.) • Независимо от того, запускается ли посредством inetd или при запуске ему передаются некоторые параметры. По умолчанию в конфигураци онном файле суперсервера указываются параметры для FTP-сервера, го вместе с системой. Если же вы хотите заменить FTP-сервер, вам надо изменить в конфигурационном файле суперсервера не только параметры, но и имя програм мы, реализующей Если ваш FTP-сервер часто посещают пользователи, имеет смысл запускать его с по мощью сценария SysV или локального сценария запуска. В этом случае сервер будет быстрее отвечать на запросы, но, учитывая небольшие размеры программы, реализую щей сервер, увеличение быстродействия будет минимальным. В некоторых версиях Linux, например в Debian и Mandrake, данный подход применяется для запуска Если же ProFTPd постоянно присутствует в памяти, поддержка анонимного FTP-сервера упро щается.</p><p> Перед тем как продолжить настройку, необходимо убедиться в том, что FTP-сер вер работает и выполняет аутентификацию пользователей (при регистрации указываются пользовательское имя и пароль). При обращении с удаленного узла сервер должен отобразить приглашение для ввода пользовательского имени и пароля. Рассмот рим следующий пример, в котором к серверу обращается клиентская программа выполняющаяся в системе Linux:</p><p> $ ftp ftp: connect: Connection refused Данное сообщение клиентской программы означает, что FTP-сервер не выполняется.</p><p> Если вы получите подобный ответ, вам следует просмотреть файлы протоколов и выяс нить причину возникновения проблемы. Если сервер был недавно установлен, причина, заключается в том, что вы забыли перезапустить суперсервер. Убедившись в том, что сервер работоспособен, можно продолжать его настройку.</p><p> Настройка WU-FTPD При настройке надо внести изменения в несколько конфигурационных фай лов. Эти файлы определяют, кто из пользователей имеет право обращаться к и какие действия доступны им. В некоторых файлах также содержатся дополнительные опции, посредством которых можно разрешить WU-FTPD выполнять специальные дей ствия по обработке файлов или расширенные команды.</p><p> 540 Часть III. Серверы Internet Конфигурационные файлы WU-FTPD В большинстве случаев конфигурационные файлы, управляющие работой находятся в каталоге /etc. Имена этих файлов начинаются символами • f tpaccess. Из всех конфигурационных файлов WU-FTPD наиболее сложным яв ляется файл f tpaccess. В нем содержатся опции, которые управляют регистра цией пользователей и правами доступа, определяют особенности используются для организации анонимного FTP-сервера, а также другие самые разнообразные средства.</p><p> • tpconversions. Помимо прочих действий, файл f tpaccess управляет сжати ем файлом или архивированием каталогов перед передачей их клиентам. Для того чтобы воспользоваться этой возможностью, необходимо определить типы файлов архивов.</p><p> • ftphosts. Данный файл позволяет ограничить набор узлов, с которых может осуществляться обращение к FTP-серверу, и даже запретить доступ для отдель ных пользователей. Записи, начинающиеся с ключевого слова allow, разрешают, а записи, начинающиеся с deny, запрещают обращение для указанных узлов или указанных пользователей. Например, запись deny означает, что попыт ки пользователя зарегистрироваться на будут блокированы, а запись deny edu запрещает обращение к серверу для всех пользователей, работающих на узле edu.</p><p> • Данный файл содержит список локальных пользователей, которым за прещено обращаться к серверу WU-FTPD. Этот файл не является частью WU-FTPD;</p><p> он действует посредством модулей РАМ (Pluggable Authentication Module). Тем не менее он представляет собой удобное средство противодействия попыткам незакон ного использования FTP-сервера. По умолчанию в данный файл включаются соответствующие учетным записям root, nobody и daemon.</p><p> • В обычных условиях один и тот же набор опций используется для работы с любыми клиентами. С помощью данного файла вы можете задать конфи гурацию, которая будет применяться только при взаимодействии с определенными узлами. Каждая строка в этом файле содержит IP-адрес или имя узла, за кото рым следует имя каталога. Если клиент, обратившийся к FTP-серверу, выполняет ся на одном из указанных компьютеров, WU-FTPD использует для взаимодействия с ним конфигурационные файлы, находящиеся в соответствующем каталоге. Напри мер, запись 192 8 tpd/trusted означает, что при обращении клиента 192.168.21.8 будут использоваться конфигурационные файлы из каталога /etc/ftpd/trusted. Этот файл позволят контролировать обращения с внеш них узлов и в то же время снимать ограничения для пользователей, работающих в локальной сети.</p><p> Из перечисленных выше файлов наиболее важным является tpaccess. Файлы ftphosts, ftpusers и ftpservers также имеют большое значение для обеспече ния безопасности сервера. Если вы хотите задать обработку файлов перед передачей их клиенту, вам, помимо конфигурационого файла tpaccess, потребуется также файл Глава 21. Опции общего назначения для сервера WU-FTPD Действие многих из опций, определяющих конфигурацию базируется на понятии класса. Класс — это группа пользователей, подобная группе Linux. Для опреде ления класса в файле ftpaccess предусмотрена опция class, которая записывается в следующем формате:</p><p> class Назначение компонентов этой записи описано ниже.</p><p> • Имя класса. По умолчанию при инсталляции сервера часто создается универсаль ный класс с именем all. При необходимости вы можете определить свои классы.</p><p> • Список типов. В этом поле указывается список типов учетных записей, соответ ствующих данному классу. Ключевое слово real задает локальных пользователей, guest — пользователей, обращающихся с удаленных узлов, a anonymous описы вает учетную запись для анонимного FTP-узла.</p><p> • Список адресов. Данный список содержит IP-адреса, имена узлов и имена доменов, принадлежащих классу. Символ ! означает, что указанный пункт должен отсутство вать в составе класса. Символ * определяет всех клиентов. Если список содержит несколько пунктов, над ними выполняется логическая операция OR. Например, зна чение определяет всех клиентов, входящих в состав каждого домена.</p><p> Стандартный файл обычно содержит следующее определение:</p><p> class all * Эта запись определяет универсальный класс, применимый ко всем типам доступа и включающий все узлы. Настраивая сервер, вы можете создать несколько классов, на пример, класс описывающий только локальных пользователей, и класс, соответствующий удаленным пользователям. Даже если классы различаются только списком адресов, вы можете использовать их независимо друг от друга.</p><p> В файл также включаются перечисленные ниже опции.</p> <div class="po5"></div> <div class='stranici1'><b class='temiser'>Pages:</b>     |<a class="kn1" href="/1/35014-1-a-aodison-wesley-setevie-sredstva-roderik-smit-setevie-sredstva-linux-advanced-linux-networking-s.php" title=""> 1 </a>|   ...   |<a class="kn1" href="/1/35014-9-a-aodison-wesley-setevie-sredstva-roderik-smit-setevie-sredstva-linux-advanced-linux-networking-s.php" title=""> 9 </a>|<a class="kn1" href="/1/35014-10-a-aodison-wesley-setevie-sredstva-roderik-smit-setevie-sredstva-linux-advanced-linux-networking-s.php" title=""> 10 </a>|<div class='kr'><a class="kn1" href="/1/35014-11-a-aodison-wesley-setevie-sredstva-roderik-smit-setevie-sredstva-linux-advanced-linux-networking-s.php" title=""> 11 </a></div>|<a class="kn1" href="/1/35014-12-a-aodison-wesley-setevie-sredstva-roderik-smit-setevie-sredstva-linux-advanced-linux-networking-s.php" title=""> 12 </a>|<a class="kn1" href="/1/35014-13-a-aodison-wesley-setevie-sredstva-roderik-smit-setevie-sredstva-linux-advanced-linux-networking-s.php" title=""> 13 </a>|   ...   |<a class="kn1" href="/1/35014-14-a-aodison-wesley-setevie-sredstva-roderik-smit-setevie-sredstva-linux-advanced-linux-networking-s.php" title=""> 14 </a>|</div> <div class="separator2"></div> <div class="po122"> <img class="doc" src="/images/doc.gif" border="0" alt="" ><a class="menusil" href="/1/" title=""><b class="jir">Книги, научные публикации</b></a> </div> <div class="niz2"> <br><br> <noindex> <center> <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <!-- dislib-kvadrat (niz) --> <ins class="adsbygoogle" style="display:inline-block;width:336px;height:280px" data-ad-client="ca-pub-9894471784993021" data-ad-slot="3110193131"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </center> </noindex> <br> <div class="naverh"><A href="#verh" >наверх</a><img src="/images/s.gif" hspace="3" width="5" height="11" border="0" alt="" align="top" vspace="3" ></div> </td></tr></table> <table width="100%" cellspacing="0" cellpadding="0" border=0> <tr> <td bgcolor="#CCCCFF" height="1"> </td> </tr> <tr> <td class="menu-niz"> <center> <table cellspacing="0" cellpadding="0" border=0> <tr> <td class="menu-niz1"> |  • <a href="/" title="На главную">Главная</a>  |  • <a href="/admin/contact-kontakti-dissertatsii.php" title="Контакты">Контакты</a> |  </td> </tr> </table> </center> </td> </tr> <tr><td class="line1"></td> </tr> </table></td><td class="line"><img class="lin" src="/images/spaser1.gif" border="0" alt=""></td></tr></table> </td><td valign="top"> <table width="5" border="0" cellspacing="0" cellpadding="0"> <tr> <td></td></tr></table></td></tr></table> </td><td class="site2"></td></tr><tr><td colspan="3"> <noindex> <script type='text/javascript' src='http://recreativ.ru/rcode.97536708c5.js'></script> <script type='text/javascript' src='http://recreativ.ru/rcode.88aa634d1b.js'></script> <script type='text/javascript' src='http://recreativ.ru/rcode.30746632cd.js'></script> </noindex> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td valign="top" class="cap1"> <font color="#808080">© 2011 www.dissers.ru - «Бесплатная электронная библиотека»<br><br> <noindex> Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам. <br> Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, <a href="/admin/contacts.php" title="">напишите нам</a>, мы в течении 1-2 рабочих дней удалим его. </noindex> </font> </div> </td> </tr> </table> <noindex> <!-- Yandex.Metrika counter --> <script src="//mc.yandex.ru/metrika/watch.js" type="text/javascript"></script> <script type="text/javascript"> try { var yaCounter78166 = new Ya.Metrika({id:78166,type:1}); } catch(e) { } </script> <noscript><div><img src="//mc.yandex.ru/watch/78166?cnt-class=1" style="position:absolute; left:-9999px;" alt="" /></div></noscript> <!-- /Yandex.Metrika counter --> </noindex></td></tr></table> </body> </html>