Linux
<<  Администрирование Linux Графический интерфейс Linux  >>
Администрирование Linux Лекция 11 Обзор Apache httpd 2.x
Администрирование Linux Лекция 11 Обзор Apache httpd 2.x
Немного про протокол HTTP
Немного про протокол HTTP
Логика работы протокола
Логика работы протокола
Версии протокола
Версии протокола
Ключевые понятия – URL и URI
Ключевые понятия – URL и URI
Ключевые понятия - заголовок
Ключевые понятия - заголовок
Ключевые понятия - прокси
Ключевые понятия - прокси
Обратный прокси
Обратный прокси
Популярные веб-серверы
Популярные веб-серверы
Что умеет apache
Что умеет apache
CGI, fastcgi, модули
CGI, fastcgi, модули
CGI, fastcgi, модули
CGI, fastcgi, модули
CGI, fastcgi, модули
CGI, fastcgi, модули
Конфигурация apache
Конфигурация apache
Демонстрация
Демонстрация
Основные модули
Основные модули
Настройки core
Настройки core
Упражнение
Упражнение
Настройки MPM
Настройки MPM
О настройках MPM
О настройках MPM
Поддержка SPDY
Поддержка SPDY
Настройки директории
Настройки директории
Демонстрация
Демонстрация
Redirect и proxypass
Redirect и proxypass
Демонстрация
Демонстрация
Виртуальные хосты
Виртуальные хосты
Демонстрация
Демонстрация
Обзор модулей
Обзор модулей
mod_rewrite
mod_rewrite
Синтаксис
Синтаксис

Презентация: «Администрирование Linux». Автор: Dmitry V Irtegov. Файл: «Администрирование Linux.ppt». Размер zip-архива: 39 КБ.

Администрирование Linux

содержание презентации «Администрирование Linux.ppt»
СлайдТекст
1 Администрирование Linux Лекция 11 Обзор Apache httpd 2.x

Администрирование Linux Лекция 11 Обзор Apache httpd 2.x

Иртегов Д.В. Новосибирский гос. Университет 2014

2 Немного про протокол HTTP

Немного про протокол HTTP

HyperText Transmission Protocol Первоначально разработан для передачи гипертекстовых документов HTML Используется для Передачи статического и динамического контента веб-страниц, Взаимодействия пользователей с веб-приложениями Взаимодействия клиентских JavaScript программ с серверами Взаимодействий сервер-сервер (гл. обр. XML/JSON RPC) WebDAV, SVN over http, да тыщи их…

3 Логика работы протокола

Логика работы протокола

Логика, в основе своей, простая Запрос-ответ Данные и метаданные («заголовок») Основные типы запросов GET uri ver – получить содержимое страницы HEAD uri ver – получить метаданные страницы POST uri ver – передать данные, например, заполненную форму Основные типы ответов 200 OK (дальше идет заголовок и тело страницы) 2?? – ответы с дополнительным сообщением, например 204 No content 206 Partial content 3?? – «предупреждение»: запрос валидный, но что-то не так, например 301 – Moved permanently (HTTP redirect) 4?? – ошибочный запрос, 404 – страница не найдена 5?? – ошибка сервера 500 – internal server error

4 Версии протокола

Версии протокола

HTTP 0.9 – до сих пор где-то ездят, например, lynx(1)/links(1) рапортуют 0.9 Конкретно links можно мозги вправить HTTP 1.0 – считается устаревшей, но поддержка обязательна На каждую пару запрос-ответ надо устанавливать соединение TCP HTTP 1.1 Connection pooling – много запросов в одном соединении Набор обязательных полей в заголовке Докачка (Range:) SPDY (HTTP 2.0 draft) Request queueing можно слать новые запросы, не дожидаясь окончания ответа Фреймы: к какому запросу какая часть ответа относится Теперь это, фактически, бинарный протокол из телнета валидный диалог не проведешь Header compression

5 Ключевые понятия – URL и URI

Ключевые понятия – URL и URI

Uniform Resource Locator <схема>://<логин>:<пароль>@<хост>:<порт>/<путь>?<парам>#<якорь> Uniform Resource Identifier /<путь>?<парам>#<якорь> Идентификатор ресурса в пределах сервера Выглядит как путь в файловой системе: каталоги, разделенные прямыми слэшами НЕ ОБЯЗАТЕЛЬНО является путем в файловой системе Может содержать параметры (обычно у динамических ресурсов) и якорь

6 Ключевые понятия - заголовок

Ключевые понятия - заголовок

HTTP header (метаданные) Основные поля запроса host – должен совпадать с <хост> из URL, обязательно в 1.1 UserAgent – тип браузера Referer – откуда получена ссылка Желательная кодировка и язык документов Authorization Cookie Основные поля ответа MIME тип данных text/html, image/jpeg, application/msword MIME кодировка KOI8, UTF-8, application/gzip Дата модификации, TTL, pragma: no cache – управление кэшированием Длина (не обязательно) Cookie

7 Ключевые понятия - прокси

Ключевые понятия - прокси

Proxy – по русски, посредник Прямой HTTP proxy вместо URI получает полный URL Перенаправляет его целевому хосту Используются для Кэширования Снижения нагрузки на файрволлы и NAT Фильтрации трафика

8 Обратный прокси

Обратный прокси

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

9 Популярные веб-серверы

Популярные веб-серверы

Apache httpd Why Linux is like a wigwam? All patches and feathers, apache inside LAMP stack (Linux, Apache, MySQL, PHP) NGINX MS IIS Да тыщи их, на самом деле

10 Что умеет apache

Что умеет apache

Раздавать статические ресурсы Uri = имя файла относительно DocumentRoot Раздавать динамические ресурсы CGI – Common Gateway Interface Запуск на сервере практически произвольной программы с параметрами Модули – расширения apache в виде специальных .so файлов Например, интерпретаторы php, perl FastCGI – протокол для общения со специальным сервером для запуска скриптов fastcgiwrapper – довольно тупая запускалка PHP FHM – довольно умная запускалка для скриптов PHP Делать всякие фокусы Виртуальные директории Виртуальные хосты Mod_rewrite Proxy redirect

11 CGI, fastcgi, модули

CGI, fastcgi, модули

Как выбрать способ запуска в конкретном случае? CGI Исполняются в отдельном процессе на том же сервере + Можно исполнять что угодно например, скриптовые языки, для которых нет интерпретатора-модуля + Если процесс помрет, серверу ничего не будет + Можно использовать suexec запуск от имени владельца файла со скриптом используется в разделяемом хостинге, или если разрешают скрипты в домашних каталогах - Запуск и уничтожение процесса – дорогая операция - Инициализация среды исполнения происходит при каждом запуске - Вместо падения, процесс может зациклиться или сожрать всю память В юниксе есть квоты процессорного и астрономического времени, памяти и пр., но все это надо настраивать

12 CGI, fastcgi, модули

CGI, fastcgi, модули

Как выбрать способ запуска в конкретном случае? Модули Исполняются в контексте процесса Apache + Инициализация среды исполнения происходит однократно + Нет накладных расходов на запуск процесса + Некоторые модули кэшируют компилированный код между запусками - Код работает от имени пользователя apache - Падение модуля убивает соответствующий процесс Apache умирает не весь Apache, а только один процесс, но остальной апач это замечает не сразу, перезапуск процесса – дорого, поэтому частые падения снижают наблюдаемую производительность - Утечки памяти в модуле жрут память процесса Apache - Не все полезные программы доступны в виде модулей - Не все модули совместимы с mpm_worker - Некоторые модули имеют ограничения или другие отличия от автономной реализации

13 CGI, fastcgi, модули

CGI, fastcgi, модули

Как выбрать способ запуска в конкретном случае? FastCGI Исполняются в контексте отдельного постоянно запущенного процесса (или пула процессов), возможно на другом сервере + Инициализация может происходить однократно + Нет накладных расходов на запуск процесса + Некоторые FastCGI серверы кэшируют компилированный код между запусками + Некоторые серверы позволяют использовать аналог suexec + Возможно распределение и даже динамическая балансировка загрузки - Не все полезные программы доступны в виде умных FastCGI есть универсальный fcgiwrapper, но выгоды от него по сравнению с простыми CGI сомнительны

14 Конфигурация apache

Конфигурация apache

Состоит из основного файла в RHeL - /etc/httpd/conf/httpd.conf Include-файлов /etc/httpd/conf.d/*.conf Файлов .htaccess в каталогах данных XML-like блочная структура Сервер (верхний уровень) VirtualHost Directory[Match], Location[Match], Files[Match] Условные директивы – IfDefine, IfModule

15 Демонстрация

Демонстрация

Файл /etc/httpd/conf/httpd.conf с настройками по умолчанию

16 Основные модули

Основные модули

Core – собственно сервер Управление процессами и потоками Prefork – apache 1.x совместимый много однопоточных процессов Worker – многопоточные процессы Выгоден по производительности, но не все модули совместимы (из популярных – mod_perl)

17 Настройки core

Настройки core

Serverroot – файлы с настройками documentroot – файлы данных scriptalias – исполняемые файлы listen – TCP порты user, group loadmodule loadfile – подгрузить .So, который сам не является модулем, но необходим для работы модуля typesconfig, addtype – MIME типы содержимого addhandler .Ext – обработчик по расширению sethandler – обработчик для всех файлов в каталоге, независимо от расширения loglevel, logformat, customlog

18 Упражнение

Упражнение

Поднять httpd с настройками по умолчанию yum install httpd service httpd start iptables -I INPUT 6 -p tcp --dport 80 –j \ ACCEPT Открыть корневой документ в браузере Найти DocumentRoot в настройках сервера Подложить туда .html файл и открыть его в браузере

19 Настройки MPM

Настройки MPM

MaxClient – количество одновременно обрабатываемых соединений TCP Каждое соединение требует один процесс (prefork) нить (worker) ListenBacklog – очередь непринятых запросов TCP (если не указано, используется системное значение) StartServers, ServerLimit ThreadsPerChild (worker) MinSpareServers, MaxSpareServers – количество незанятых серверов MaxRequestsPerChild – после обработки такого количества запросов, процесс сервера перезапускается (защита от утечек памяти, в т.ч. в модулях)

20 О настройках MPM

О настройках MPM

MaxClients – это количество одновременно активных соединений TCP. Оно определяется Загрузкой сервера (hits per second) Временем обработки одного запроса, которое определяется Объемом передаваемых данных Временем работы скриптов на сервере Протоколом (HTTP 1.0, 1.1, SPDY) Средней скоростью связи до клиента Max – локальная сеть, интранет Min – клиенты на GPRS/3G или на другом континенте Если проблема в скорости до клиента, имеет смысл поставить NGINX Много клиентов – это много процессов/нитей, а каждый процесс и каждая нить потребляют память По умолчанию, Linux/x64 – 8Мб стека на одну нить Также нити потребляют процессор если загрузка процессора ~100%, добавлять процессы бессмысленно Увеличение количества нитей может упираться в какие-то другие лимиты, например, квоту на количество соединений с СУБД Мораль: универсальных рекомендаций нет, нужно мерить по ситуации

21 Поддержка SPDY

Поддержка SPDY

В базовой поставке RHeL6 нету Нужно скачать модуль (.rpm) с сайта http://code.google.com/p/mod-spdy/ Это не репозиторий yum, поэтому автоматического обновления не будет Работает только поверх https

22 Настройки директории

Настройки директории

Виртуальные каталоги Alias URI /directory/on/filesystem ScriptAlias URI /directory/filesystem Блоки <Directory shell-style wildcard> - по файловой системе <DirectoryMatch regexp> <Location wildcard>, <LocationMatch regexp> - по URI <File wildcard>, <FileMatch regexp> Директивы AllowOverride – какие параметры можно менять в .htaccess Order allow,deny Allow/Deny all/IP[netmask]/domain name/env=value DirectoryIndex (index.html) Options FollowSymLinks, Indexes

23 Демонстрация

Демонстрация

Настройки директорий, виртуальные директории, локации и .htaccess в дефолтных настройках RHEL и на рабочих серверах

24 Redirect и proxypass

Redirect и proxypass

По синтаксису похожи на Alias, но вместо пути указывается URL Redirect URI URL – http redirect ProxyPass URI URL – обратный прокси требует загруженного mod_proxy

25 Демонстрация

Демонстрация

Одинаковые директивы Redirect и ProxyPass в конфиге сервера, и разница в поведении браузера при открытии соответствующих URL

26 Виртуальные хосты

Виртуальные хосты

<VirtualHost>: Port-based, IP-based <NameVirtualHost>: Name-based (HTTP 1.1) Виртуальный хост может иметь свои настройки Свой DocumentRoot Свои виртуальные каталоги Почти все параметры можно поменять Нельзя поменять список загруженных модулей Иногда вообще всю настройку сервера делают в виртуальном хосте (проще потом мигрировать с сервера на сервер) Настройка https делается только в виртуальном сервере Модуль vhost_alias обеспечивает генерацию виртуальных хостов по шаблонам

27 Демонстрация

Демонстрация

Описания виртуальных хостов на рабочих серверах

28 Обзор модулей

Обзор модулей

Модули добавляют Функциональность Могут обрабатывать определенные файлы интерпретаторы языков, imagemap Могут обрабатывать весь контент перекодировка, добавление полей в заголовок, кэширование Могут сами генерировать контент DirectoryIndex, ServerConfig Директивы конфигурации Например, модули auth* добавляют директивы управления авторизацией

29 mod_rewrite

mod_rewrite

распознает URL и поля запроса по шаблонам делает контекстные замены Может выполнять широкий набор действий по результатам распознавания Примеры Прозрачная переделка статического сайта в динамический RewriteRule ^(.*).html$ $1.php Умная прозрачная переделка RewriteCond $1.php -f RewriteCond $1.html !-f RewriteRule ^(.*).html$ $1.php Защита от хотлинкинга картинок RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !www.example.com [NC] RewriteRule \.(gif|jpg|png)$ /images/go-away.png [R,NC]

30 Синтаксис

Синтаксис

RewriteRule URIregexp URIreplace [action/options] action: PT – passthrough, обработать результат замены как обычный URI P,R – proxypass, redirect F – forbidden (HTTP 403) G – gone (HTTP 410) CO – добавить к ответу cookie options NC – nocase (шаблон не чувствительный к регистру) B – escape backreferences C – chain rule (следующие правила обрабатываются, только если текущее правило сработало. Аналог if) N – next (после замены, правило выполняется еще раз. Аналог while. Как и настоящий while, может зациклиться)

«Администрирование Linux»
http://900igr.net/prezentacija/informatika/administrirovanie-linux-96753.html
cсылка на страницу

Linux

12 презентаций о Linux
Урок

Информатика

130 тем
Слайды
900igr.net > Презентации по информатике > Linux > Администрирование Linux