Инсталляция, настройка и сопровождение Web-сервера Linux
Где же применяются Linux-серверы? Прежде всего, это Интернет-серверы. Вы можете спросить, почему именно Linux (Unix)? Почему не какая-нибудь другая операционная система, например, не Windows? В начале 60-х годов по приказу Министерства обороны США была создана сеть Arpanet, которая и послужила в дальнейшем прототипом для создания Интернет. Как можно использовать NT-сервер в качестве Web-сервера… Читать ещё >
Инсталляция, настройка и сопровождение Web-сервера Linux (реферат, курсовая, диплом, контрольная)
1. АРХИТЕКТУРА LINUX
2. ФАЙЛОВАЯ СИСТЕМА
2.1 Виртуальная файловая система (Virtual File System)
2.2 Файловая система Ext2fs (Linux ext2 File System)
3. ОБЛАСТЬ ПРИМЕНЕНИЯ LINUX — СЕРВЕРОВ
3.1 Перед настройкой сервера
4. КОНФИГУРИРОВАНИЕ СЕРВЕРА
4.1 Запуск Apache
4.2 Настройка веб-сервера Apache
4.3 Директивы конфигурации Apache
4.4 Управление Web-сервером
4.5 Запуск и остановка Apache
ЗАКЛЮЧЕНИЕ
СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ
Возраст операционной системы (ОС) Linux насчитывает уже несколько десяткой лет. Это рекордный результат для операционных систем, век которых, как правило, не долог. ОС Linux оказалась замечательным исключением из правил, она продолжает набирать популярность и развиваться. Linux работает на множестве аппаратных платформ, начиная с обыкновенного ПК и заканчивая мощными многопроцессорными системами и суперкомпьютерами.
Созданная небольшой группой разработчиков, система Linux расширялась и дорабатывалась; тысячи специалистов вложили в нее свой талант, десятки тысяч обогатили приложениями, и сегодня она служит миллионам людей, которые используются эту операционную систему в своей деятельности.
За время своего существования системы Linux претерпела значительные изменения, стала мощней, сложней и удобней. Однако основные идеи сохранились, удивляя нас своим изяществом и простотой. Несомненно, повсеместное распространение ОС Linux в серверах оправдано. В данной работе мы рассмотрим основные понятия и обозначения ОС Linux, архитектуру операционной системы, настройки и сопровождение Web-серверов Linux на примере сервера Apache. В перовой главе рассмотрена архитектура ОС Linux. Во второй главе — файловая система. В третьей главе рассмотрены области применения серверов на базе Linux и необходимые требования для организации сервера. В четвертой главе рассмотрены базовые настройки web-сервера на примере Apache, а также сопровождение данной системы.
1. АРХИТЕКТУРА LINUX
Можно смело сказать, что операционная система Linux полностью выдержала проверку времени. На каждом этапе своего развития данная система решала определенные задачи, и сегодня, несмотря на появление более простых и удобных, с точки зрения администрирования, систем, она прочно занимает место среди лидеров. Linux является конкретной реализацией системы Unix.
Являясь операционной системой семейства Unix, Linux следует установленным стандартам и объединяет в себе три основных части:
Ядро (kernel) — основной компонент ОС, отвечающий за управление процессами, виртуальной памятью и драйверами устройств.
Ядро Linux представляет собой единый блок бинарного кода. Все коды ядра и структуры данных, в том числе драйверы устройств, коды распределения ресурсов и виртуальной памяти, сетевой поддержки, а так же файловая система — хранятся в едином адресном пространстве. Преимуществом такой структуры является то, что не требуется никаких переключений при запросах процессами системных ресурсов или прерываниях от различных устройств.
Общее адресное пространство, однако, не препятствует модульности системы. По мере необходимости Linux подгружает в память либо выгружает из нее указанные модули.
В Linux все ядро работает в привилегированном режиме — режиме ядра. Никакая часть кода не работает в режиме пользователя. Фрагменты поддержки ОС, не требующие запуска в режиме ядра, помещаются в раздел системных библиотек.
Разделяемые системные библиотеки (system libraries) содержат стандартный набор функций, используемых приложениями для запросов к системным сервисам ядра. В библиотеках хранятся также код функций отдельных сервисов ядра, исполняемых в обычном режиме без привилегий ядра.
Рисунок 1 — Компоненты Linux
При обращении приложения к системным ресурсам управление от части системы, работающей в пользовательском режиме, передается ядру. Библиотеки осуществляют контроль за корректностью представленного запроса и преобразование параметров/аргументов запроса к требуемому формату.
Под системными утилитами (system utilities, программы управления системой) понимают программы, отвечающие за выполнение отдельных специализированных задач управления (управляющих функций системы). Одни утилиты запускаются лишь один раз для инициализации и конфигурирования отдельных элементов системы, другие вызываются регулярно, например, утилиты принимающие запросы на регистрацию с терминалов системы, либо утилиты обновляющие файлы регистрации.
Не все утилиты выполняют функции системного администрирования. Часть системных программ отвечают за выполнение простых задач, в частности, просмотр каталогов, перенос и удаление файлов, просмотр содержимого файла. Более сложные поддерживают некоторые функции обработки текстовых данных, например, сортировку данных либо поиск по заданному шаблону в тексте.
2. ФАЙЛОВАЯ СИСТЕМА
Linux является операционной системой семейства Unix и ее файловая система полностью соответствует стандартам данного класса. В Unix под файлом понимается не только объект, хранящийся на диске, но и любое устройство, поддерживающее ввод/вывод потока данных. Например, драйверы устройств рассматриваются как файлы.
2.1 Виртуальная файловая система (Virtual File System)
В Unix различают несколько типов файлов. Каждый тип файлов имеет свои особенности реализации. Эти особенности, однако, скрыты от пользователя программным уровнем ядра Linux, получившим название виртуальной файловой системы (Virtual File System — VFS).
Виртуальная файловая система VFS поддерживает следующие типы файлов:
* Обычные файлы
* Каталоги
* Специальные файлы
* Именованные конвейеры
* Символьные связи
VFS не ориентируется на какую-либо конкретную файловую систему, механизмы реализации файловой системы полностью скрыты как от пользователя, так и от приложений. В ОС нет системных вызовов, предназначенных для работы со специфическими типами файловой системы, а имеются абстрактные вызовы типа open, read, write и другие, которые имеют содержательное описание, обобщающее некоторым образом содержание этих операций в наиболее популярных типах файловых систем. VFS также предоставляет ядру возможность оперирования файловой системой, как с единым целым: операции монтирования и демонтирования, а также операции получения общих характеристик конкретной файловой системы (размера блока, количества свободных и занятых блоков и т. п.) в единой форме. Если конкретный тип файловой системы не поддерживает какую-то абстрактную операцию VFS, то файловая система должна вернуть ядру код возврата, извещающий об этом факте.
В состав VFS Linux входят два основных компонента:
* Набор определений, характеризующих объект типа файл;
* Программный уровень, обеспечивающий работу с подобными объектами.
Основные типы объектов, выделяемых VFS:
* Индексы (inode, vnode) — представляют каждый элемент файловой системы;
* Файловые структуры (структура file) — представляют отдельные файлы;
* Файловая система (file system) — представляет файловую систему в целом.
Для каждого типа объектов VFS поддерживает свой набор разрешенных операций, ссылки на которые хранятся в таблице функций. По указателю конкретного объекта происходит обращение к требуемой области таблицы, хранящей фактические адреса функций, реализующих требуемые операции.
В VFS вся информация о файлах разделена на две части — не зависящую от типа файловой системы, которая хранится в специальной структуре ядра — структуре vnode, и зависящую от типа файловой системы — структуре inode, формат которой на уровне VFS не определен, а используется только ссылка на нее в структуре vnode. Имя inode не означает, что эта структура совпадает со структурой индексного дескриптора inode конкретной файловой системы. Это имя используется для обозначения зависящей от типа файловой системы информации о файле, как дань традиции.
Структура vnode используется ядром для связи файла с определенным типом файловой системы и конкретными реализациями файловых операций. Одно из полей vnode используется для указания на таблицу физических страниц памяти в случае, когда файл отображается в физическую память. В vnode также содержится тип файла и указатель на зависимую от типа файловой системы часть описания характеристик файла — структуру inode, обычно содержащую адресную информацию о расположении файла на носителе и о правах доступа к файлу. Кроме этого, vnode используется ядром для хранения информации о блокировках (locks), примененных процессами к отдельным областям файла.
Сами операции над объектом реализуются на программным уровне VFS, который непосредственно вызывает необходимую функцию через таблицу функций. При этом не имеет значения, представляет ли индекс сетевой файл, файл на диске, сетевое гнездо, либо каталог.
При каждом открытии процессом файла ядро создает в системной области памяти новую структуру типа file, которая описывает как открытый файл, так и операции, которые процесс собирается производить с файлом (например, чтение). Структура file содержит такие поля, как определение режима открытия (только для чтения, для чтения и записи и т. п.); указатель на структуру vnode; смещение в файле при операциях чтения/записи; указатель на структуру, содержащую права процесса, открывшего файл; а также указатели на предыдущую и последующую структуру типа file, связывающие все такие структуры в список.
В функции объекта file входит:
* отслеживание последовательного ввода/вывода в файл;
* учет запросов от процессов на разрешение записи при открытии файла;
* отслеживание действий процессов при необходимости упреждающего чтения.
В отличие от структур типа file структуры типа vnode заводятся операционной системой для каждого активного (открытого) файла в единственном экземпляре, поэтому структуры file могут ссылаться на одну и ту же структуру vnode.
Структуры vnode не связаны в какой-либо список. Они появляются по требованию в системном пуле памяти и присоединяются к структуре данных, которая инициировала появление этого vnode, с помощью соответствующего указателя.
Все операции с файлами производятся с помощью связанной с файлом структуры vnode. Когда процесс запрашивает операцию с файлом (например, операцию open), то независимая от типа файловой системы часть ОС передает управление зависимой от типа файловой системы части ОС для выполнения операции. Если зависимая часть обнаруживает, что структуры vnode, описывающей нужный файл, нет в оперативной памяти, то зависимая часть заводит для него новую структуру vnode.
Файловая система представляет собой множество файлов, объединенных в единую иерархическую структуру при помощи каталогов. Такое объединение файлов представляет объект «файловая система». Каждое дисковое устройство смонтированное как файловая система трактуется как отдельный объект «файловая система» .
Термин «файловая система», по сути, имеет два значения. С одной стороны это составная часть файлового дерева, а с другой — все файловое дерево и алгоритмы, с помощью которых ОС управляет им. Как правило, значение термина становится ясным из контекста.
В широком смысле понятие «файловая система» включает:
* Совокупность всех файлов на диске;
* Наборы структур данных, используемых для управления файлами, такие, например, как каталоги файлов, дескрипторы файлов, таблицы распределения свободного и занятого пространства на диске;
* Комплекс системных программных средств, реализующих управление файлами, в частности: создание, уничтожение, чтение, запись, именование, поиск и другие операции над файлами.
Обработка директорий (файлов-каталогов) имеет свои особенности. При выполнении операций считывания/записи файл должен быть предварительно открыт. Однако этого не требуется в случае переименования либо удаления файла в каталоге. Всю информацию о подобных операциях VFS хранит в объекте inode, а не в объекте file.
2.2 Файловая система Ext2fs (Linux ext2 File System)
файловый сервер операционный программный
Linux поддерживает несколько типов файловых систем. Наиболее важные из них рассмотрены ниже.
* minix Считается самой старой и самой надежной файловой системой, но достаточно ограниченной в своих возможностях (у файлов отсутствуют некоторые временные параметры, длина имени файла ограничена 30-ю символами) и доступных объемах (максимум 64 Мб на одну файловую систему).
* xia Модифицированная версия системы minix, в которой увеличена максимальная длина имени файла и размер файловой системы, хотя она не реализует никаких новых возможностей.
* ext2 Наиболее богатая функциональными возможностями файловая система из семейства совместимых с Linux. На данный момент считается самой популярной системой. Она разработана с учетом совместимости с последующими версиями, поэтому для установки новой версии кода системы не требуется устанавливать ее заново.
* ext Предыдущая версия системы ext2, не совместима с последующими версиями. В настоящее время она очень редко включается в пакеты новых поставляемых систем, т.к. большинство пользователей сейчас пользуются системой ext2.
* proc Эта система, которая обычно доступна через каталог /ргос, позволяет получить доступ к определенным структурам данных ядра, к таким, как список процессов (отсюда название). В действительности, она не является файловой системой, хотя по ее структуре сложно обнаружить разницу. Все эти структуры выглядят как файловая система и ими можно оперировать обычными средствами работы с файловой системой.
В дополнение к рассмотренным выше, в Linux включена поддержка еще некоторых файловых систем для обеспечения обмена файлами между другими операционными системами. Эти файловые системы работают также, как и описанные выше, кроме того, что их функциональные возможности могут быть значительно ограничены по сравнению с возможностями, обычно предоставляемыми файловыми системами UNIX.
> msdos Обеспечивается совместимость с системой MS-DOS (а также OS/2 и Windows 95/98/NT/2000).
> umsdos Расширяет возможности драйвера файловой системы MS-DOS для Linux таким образом, что при работе в Linux, имеется возможность работы с именами файлов нестандартной длины, просмотра прав доступа к файлу, ссылок, имени пользователя, которому принадлежит файл, а также оперирование с файлами устройств. Это позволяет использовать обычную систему MS-DOS, так, как если бы это была система Linux. Таким образом, исключается необходимость создания отдельного раздела для Linux.
> iso9660 Стандартная файловая система для CD-ROM. Довольно популярное развитие стандарта CD-ROM, выполненное Rock Ridge’M, которое обеспечивает автоматическую поддержку имен файлов нестандартной длины.
> nfs Сетевая файловая система, обеспечивающая разделение одной файловой системы между несколькими компьютерами для предоставления доступа к ее файлам со всех машин.
> hpfs Файловая система OS/2.
> xenix Файловая система Xenix
> coherent Файловая система Coherent
> sysv Файловые системы System V/386, Coherent и Xenix.
> ncpfs Сетевая файловая система, позволяющая монтировать тома файл-сервера Novell NetWare.
Ext2fs является стандартной дисковой файловой системой, принятой в среде Linux. С точки зрения Linux файлами являются:
* Обыкновенные файлы (собственно файлы на физическом носителе);
* Каталоги, директории (directory);
* Символьные устройства;
* Блочные устройства;
* Именованные каналы, конвейеры (named pipes);
* Гнезда, сокеты (sockets);
* Символьные ссылки, связи (symlinks).
3. ОБЛАСТЬ ПРИМЕНЕНИЯ LINUX — СЕРВЕРОВ
Операционная система Linux получает все большее распространение. В настоящее время Linux все чаще можно увидеть установленной на компьютерах домашних пользователей. Этому способствует дружественный интерфейс, надежность и быстродействие ОС Linux. Определенную роль, конечно, сыграла и лицензионная политика корпорации Microsoft — домашнему пользователю дешевле купить ОС Linux, чем покупать новый компьютер за $ 400 и Windows 98 за $ 60.
В этой главе мы не будем обсуждать преимущества Linux в качестве настольной системы, а поговорим о Linux-серверах. Microsoft Windows NT Server (и Windows 2000 Server), больше подходящих как сервер для небольшой рабочей группы. По своим параметрам Windows NT (2000) Server довольно надежна и быстра, но все же ей не хватает масштабируемости, несмотря на заявления Microsoft о своих серверах.
Чтобы понять, почему Linux целесообразно использовать именно в качестве Web-сервера, немного вспомним историю. Когда-то в далекие 80-е годы прошлого столетия, когда в кабинетах стояли «калькуляторы» под управлением DOS: неприятный интерфейс, однозадачность, отсутствие поддержки мультимедиа, а под термином «сеть» понималось соединение двух компьютеров через последовательный или параллельный порт с помощью Norton Commander. В начале 90-х годов (а именно в 1993 году) ситуация несколько изменилась: Microsoft выпустила рабочий вариант ОС Windows — Windows 3.1. Что же было новым в Windows 3.1?
Во-первых, это многозадачность, во-вторых, поддержка виртуальной памяти, и, конечно же, относительно удобный графический интерфейс. В операционной оболочке (системой ее назвать трудно) Windows 3.1 не были реализованы сетевые функции. Поддержка сети появилась в следующей редакции Windows — Windows for Workgroups.
В 1995 году появилась операционная система Windows 95, представленная Microsoft чуть ли не самой совершенной системой. Однако эта операционная система также не была сетевой, а лишь с поддержкой сетевых функций. Принципиальным отличием от Windows 3.1 была 32-разрядность этой системы. В следующем году Microsoft выпускает настоящую сетевую операционную систему — Windows NT 4 Server. В этой системе был реализован (и нормально функционировал) протокол TCP/IP, который является стандартом сети Интернет, но протоколом по умолчанию он не являлся, а устанавливался опционально, то есть по требованию администратора.
В 2000 году мы стали свидетелями появления новой сетевой серверной операционной системы от Microsoft — Windows 2000 Server. Помимо прочих достоинств Windows 2000 по сравнению с Windows NT 4 Server, нужно отметить службу управления каталогами Active Directory, поддержку по умолчанию протокола TCP/IP, а также средства для квотирования (ограничения дискового пространства).
Все кажется просто прекрасным, однако, если разобраться более детально, то в 2000 году Microsoft достигла того, что уже существовало в Unix еще в 80-х годах. Попробую сейчас все разъяснить. С самого своего начала (с 1979 года), операционная система Unix была:
· 32-разрядной.
· Многозадачной.
· Многопользовательской, а значит сетевой.
Достижения инженерной мысли, о которых мы узнали только в 1993 году — многозадачность и поддержка виртуальной памяти, были реализованы в Unix еще в далеком 1979 году. К тому же, протокол TCP/IP включен в состав ядра системы по умолчанию, а это говорит о многом. Хотя бы о том, что благодаря поддержке ядром протокола TCP/IP достигается высокое быстродействие программ, использующих этот протокол. Квотированием, которое появилось в Windows совсем недавно, настоящих юниксоидов тоже не удивишь. А службу Active Directory можно заменить на Network Information Service.
Графическая система X Window создана достаточно давно и существует множество Linux-приложений, использующих графический интерфейс. А благодаря таким графическим средам как KDE и Gnome, Linux стал еще более дружелюбным. Но в нашем случае графический интерфейс не столь существенен — мы же будем с вами настраивать сервер. Например, компания Novell поначалу вообще отказалась от использования графического интерфейса в своей операционной системе, чтобы не задействовать дополнительные системные ресурсы. А поскольку Linux является прямым потомком Unix, то ей присущи все вышеописанные качества. К тому же, операционная система Linux совершенно бесплатна — об этом я уже упоминал немного раньше. Если вы считаете себя серьезным администратором, то выбор между надежностью, производительностью.
Еще один важный аспект — документация системы. Все без исключения Unix-подобные системы очень хорошо документированы и поэтому вся необходимая информация для настройки сервера по сути уже есть в вашем компьютере. Моя же задача при этом сводится к тому, чтобы научить вас использовать эту документацию, а также на практике рассмотреть ее применение.
Итак, что же получается, что мы, используя программное обеспечение от Microsoft, отстали на двадцать лет в развитии, использовали, мягко говоря, не совсем надежное программное обеспечение и еще платили за это деньги? Ребятам из маркетингового отдела Microsoft нужно памятник поставить за их профессиональные качества.
Где же применяются Linux-серверы? Прежде всего, это Интернет-серверы. Вы можете спросить, почему именно Linux (Unix)? Почему не какая-нибудь другая операционная система, например, не Windows? В начале 60-х годов по приказу Министерства обороны США была создана сеть Arpanet, которая и послужила в дальнейшем прототипом для создания Интернет. Как можно использовать NT-сервер в качестве Web-сервера, если он был выпущен в 1996 году? А Интернет-то существовал с 70-х годов. И существовал именно благодаря Unix-системам. Так почему же не использовать для предоставления Webт-услуг родную операционную систему? Linux (Unix) для Интернет — абсолютно родная система. Использование других систем допустимо и кому-то может показаться более удобным, но только на том уровне, как будто бы вы действительно в автомобиль одной хорошей марки вставили бы деталь от автомобиля другой хорошей марки. Обе марки автомобилей хороши, но детали одной из них не предназначены для другой. Например, относительно недавно был открыт сайт президента России. Так вот этот сайт, к которому предъявляются повышенные требования надежности, безопасности и производительности, базируется именно на основе Red Hat Linux.
Многие правительственные и финансовые организации всего мира, например, Министерство иностранных дел Германии, используют Linux (SuSE Linux), а немецкий Dresdner Bank совместно с американской компанией CollabNet объявил о новой банковской информационной системе, построенной на основе Linux. И тут, как вы видите, дело не в деньгах — платить или не платить за Linux, а в заботе организаций о своей информационной безопасности и надежности своих серверов. Второй отраслью применения Linux-серверов является создание кластеров для произведения параллельных вычислений. По определению кластер — это несколько компьютеров, объединенных вместе для совместного решения одной задачи. Объединение компьютеров, как правило, производится с помощью высокоскоростной сети. На сегодняшний день создано специальное программное обеспечение, позволяющее собрать кластер даже в домашних условиях, например, PVM (Parallel Virtual Machine).
Помимо всего вышеуказанного, существует еще множество направлений, где используются Linux-серверы: Web-серверы, РТР-серверы, почтовики, шлюзы, Х-серверы, можно даже эмулировать домен NT с помощью пакета Samba.
3.1 Перед настройкой сервера
Перед тем как перейти к настройке сервера, нужно решить пару организационных вопросов. Например, где расположить наш сервер и какое железо предпочтительнее использовать. Предварительно произведена базовая настройка операционной системы, будущий сервер прекрасно работает в локальной сети. Теперь самое время решить, где его расположить и кто будет иметь доступ к нему. Очень важно правильно расположить сервер. Теперь это не рабочая станция, практически не представляющая для злоумышленника никакого интереса, а СЕРВЕР ВАШЕЙ СЕТИ!
Во-первых, сервер должен быть размещен в отдельном помещении, доступ в которое ограничен. В идеальном случае в серверную комнату никто, кроме администратора и, возможно, его помощника, не должен входить. Простое нажатие на «Reset» может вызвать простой сервера (а значит и всей сети) от одной-двух минут до двух-трех часов.
В некоторых материнских платах можно программно отключить кнопку перезагрузки (например, Chaintech CT 6ATA2). Приведенный пример несколько некорректен, так как серверы обычно работают в бесперебойном режиме и не выключаются даже ночью, но это зависит от специфики вашего предприятия. Например, если сервер используется только для выхода в Интернет сотрудников сети, то его работа ночью просто не имеет смысла.
В условиях наших электросетей ИБП быстро себя окупит. Существует несколько типов ИБП:
1. Резервные (backup).
2. Линейно-интерактивные.
3. Онлайновые.
Именно онлайновые ИБП обеспечивают бесперебойную работу сервера, а также различного чувствительного оборудования, например, измерительного. Стоимость таких ИБП примерно в два-три раза выше резервных ИБП такой же мощности.
Теперь перейдем ко второму вопросу — аппаратному обеспечению. Сразу нужно отметить, что комплектовать сервер нужно, исходя из тех задач, которые он должен выполнять. Если настраивается шлюз для доступа к Интернет вашей локальной сети, в которой несколько пользователей, то подойдет и такая минимальная конфигурация: Pentium 166/200 (или PPRO 200) 128MB ОЗУ/4−6Gb HDD. А если планируется быть провайдером, то есть предоставлять доступ к Интернет на коммерческой основе другим организациям, такой конфигурации явно будет маловато. Прежде всего, нужно увеличить объем ОЗУ, установить быстродействующий жесткий диск или даже несколько дисков для обеспечения высокой скорости операций прокси-сервера.
При конфигурировании сервера баз данных крупной организации, например, банка, не обойтись без двухпроцессорной машины. Поэтому рассмотрим «максимальную» конфигурацию.
Основным компонентом любого компьютера является материнская плата. В свою очередь, основным компонентом материнской платы является ее чипсет.
Теперь перейдем к «мозгу» сервера — процессору. Рекомендуется использовать именно процессоры Intel, которые обеспечивают более высокую степень надежности по сравнению с процессорами других производителей.
Лучше всего подойдет жесткий диск с интерфейсом SCSI, обеспечивающий 10 000 rpm (rotates per minute). В крайнем случае подойдет и АТА/ 100(133) на 7200 rpm и двумя мегабайтами кэша. Если вы заботитесь о сохранности своих данных, нужно позаботиться об обеспечении должного уровня избыточности.
Не покупайте дешевые сетевые платы для сервера. Такую роскошь, как пятидолларовую плату Realtek, можно установить разве что на рабочей станции. Серверу приходится обрабатывать запросы многочисленных пользователей, поэтому нужно покупать сетевой адаптер со встроенным процессором. При этом снижается нагрузка на центральный процессор и повышается производительность системы.
4. КОНФИГУРИРОВАНИЕ СЕРВЕРА
Установка Apache в .deb-based дистрибутивах (Debian, Ubuntu и т. п.):
sudo apt-get install apache2
Установка в rpm-based система (RHEL, openSuSE, AltLinux, Fedora Core и т. п.). В этом примере использован установщик zypper:
aag@stilo.asoiu:~$ sudo zypper install apache2
Проверка установки (на примере .deb-дистрибутива, с отображением связанных пакетов) [15]:
aag@stilo.asoiu:~$ dpkg —list apache2*
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Cfg-files/Unpacked/Failed-cfg/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status, Err: uppercase=bad)
||/ Имя Версия Описание
++±=================================================
ii apache2 2.2.12−1ubuntu2 Apache HTTP Server metapackage
un apache2-common <�нет> (описание недоступно)
un apache2-doc <�нет> (описание недоступно)
un apache2-mpm <�нет> (описание недоступно)
un apache2-mpm-event <�нет> (описание недоступно)
un apache2-mpm-itk <�нет> (описание недоступно)
ii apache2-mpm-prefork 2.2.12−1ubuntu2 Apache HTTP Server — traditional non-threaded model
un apache2-mpm-worker <�нет> (описание недоступно)
un apache2-suexec <�нет> (описание недоступно)
un apache2-suexec-cust <�нет> (описание недоступно)
ii apache2-utils 2.2.12−1ubuntu2.1 utility programs for webservers
ii apache2.2-bin 2.2.12−1ubuntu2 Apache HTTP Server common binary files
ii apache2.2-common 2.2.12−1ubuntu2 Apache HTTP Server common files
aag@stilo.asoiu:~$
В приведенном примере apache2-mpm-prefork и apache2-mpm-worker — различные сборки apache2, поддерживающие мультипотоковую обработку, реализованную посредством подключаемых модулей MPM (multy-processing modules, модули мультипоточной обработки).
Apache2 worker при запуске создаёт несколько дочерних процессов, по несколько нитей в каждом (количество задаётся в файле httpd. conf). Такая конфигурация снижает потребление памяти и рекомендуется для высоконагруженных веб-серверов.
Apache2 prefork создаёт заданное количество дочерних процессов, по одной нити в каждом. Т. е. каждый процесс обрабатывает только одно соединение. Worker требует меньше памяти, работает быстрее, но с другой стороны, многонитевую конфигурацию намного сложнее отлаживать.
В общем случае выбор необходимой конфигурации определятся решаемыми задачами, но модель prefork является более стабильной.
Ниже приведены выборочные данные из реального тестирования:
Apache Bench results for prefork:
——————————————————————————————;
…
Server Software: Apache/2.2.4
…
Requests per second: 20.91 [#/sec] (mean)
…
Transaction rate: 20.12 trans/sec
——————————————————————————————;
Apache Bench results for worker:
——————————————————————————————;
…
Server Software: Apache/2.2.4
…
Requests per second: 40.94 [#/sec] (mean)
…
Transaction rate: 36.72 trans/sec
4.1 Запуск Apache
Запуск установленного (и настроенного) web-сервера Apache вручную выполняется такой командой (если используется init. d) [16]:
sudo /etc/init.d/apache2 start
либо:
sudo invoke-rc.d apache2 start
Для остановки и перезапуска web-сервера используются, соответственно, следующие команды:
sudo /etc/init.d/apache2 stop, sudo /etc/init.d/apache2 restart, sudo invoke-rc.d apache2 stop.
Если в системе используется скрипт service, то для запуска Apache нужно выполнить такую команду:
sudo service apache2 start
Автоматический запуск Apache2 в качестве системного сервиса на 3 и 5 уровнях устанавливается такой командой:
sudo chkconfig apache2 -s 35
Проверка результов установки:
aag@stilo.asoiu:~$ sudo service apache2 status
* Apache is running (pid 1867).
aag@stilo.asoiu:~$ chkconfigl apache2
apache2 0: off 1: off 2: on 3: on 4: on 5: on 6: off
Если установка прошла успешно, то Apache в базовой конфигурации уже можно использовать: в этом можно убедиться, открыв в браузере адрес http://localhost (рисунок 2)
Рисунок — 2 Проверка установки веб-сервера Apache
4.2 Настройка веб-сервера Apache
Редкий случай, когда веб-сервер используется с дефолтными настройками. Обычно, перед запуском его требуется настроить под конкретные задачи. Для этого нужно отредактировать конфигурационный файл httpd. conf, в котором хранятся все настройки веб-сервера Apache.
На самом деле httpd. conf &mdash это основной, но не единственный файл настроек. Дело в том, что последние версии Apache поддерживают модульную структуру httpd. conf и позволяют гибко управлять настройками путем подключения к httpd. conf дополнительных файлов. Более того, httpd. conf это обычное, но не обязательное название. Например, в Apache2.2 из дистрибутива Ubuntu 9.10 файл настроек называется apache2.conf.
Структура файла httpd. conf проста и подробнео описана в самом файле, здесь приведем очень короткий его фрагмент (строки, начинающиеся со знака # («решетка») — комментарии):
# Директивы конфигурации веб-сервера разделены на три основные группы:
# 1. Директивы управления веб-сервером как таковым («глобальное окружение»);
# whole (the 'global environment').
# 2. Директивы, определяющие поведение «главного» сервера, к которому выполняются все обращения, если
# отсутствуют виртуальные хосты. Эти директивы определяют значения по умолчанию для всех виртуальных
# серверов
# 3. Настройки виртуальных хостов, которые позволяют управлять запросами, входящими на различные сетевые
# адреса, или с различными доменными именами
# …
Все директивы конфигурации задаются парами вида:
<�параметр><�разделитель><�значение>
Здесь:
<�параметр>
Строка, определяющая имя параметра.
<�разделитель>
Один или несколько последовательных разделителей (пробелы, символы табуляции).
<�значение>
Фактическое значение параметра.
Несколько директив могут быть заключены в контейнеры вида:
<�имя_блока />
<�список_директив>
</имя_блока>
Примером такого блока является контейнер Directory.
Приведенные ниже описания некоторых параметров конфигурации веб-сервера не являются исчерпывающими инструкциями по настройке веб-сервера, однако затрагивают те изменения, которые, возможно, придется внести, чтобы заставить сервер работать как требуется. Подробное описание всех директив веб-сервера см. в официальной документации.
4.3 Директивы конфигурации Apache
ServerType
Для этой директивы значением по умолчанию является ServerType standalone. Серверы, работающие в автономном режиме (standalone), запускаются из загрузочных сценариев при запуске системы. Такая установка рекомендуется для улучшения производительности.
В качестве альтернативы режиму standalone можно воспользоваться режимом inetd, который обеспечивается демоном inetd.
Port
В этой директиве задается номер сетевого порта, на котором будет работать ваш сервер, если он запущен в автономном режиме (если используется inetd, то номер порта следует задать в файле /etc/services). Значением по умолчанию для этой директивы является Port 80. Этот порт является стандартным для протокола HTTP и рекомендуется для использования на основном сервере вашего Web-узла.
HostnameLookups
Директива HostnameLookups указывает, записывается ли в журнальный файл имя компьютера (например, example.org) или только его IP-адрес. По умолчанию сервер сохраняет имя компьютера, но если ожидаемый объем трафика очень велик, отключение опции HostnameLookups позволит уменьшить нагрузку на сервер. Это делается простым изменением строки на HostnameLookups off.
User и Group
Эти параметры задают действительные идентификаторы пользователя и группы, которые присваиваются серверу, работающему в автономном режиме. По умолчанию в качестве имени пользователя принимается nobody, что является превосходным выбором с точки зрения защиты информации. Ни в коем случае нельзя запускать сервер с привилегиями суперпользователя (root).
В качестве идентификатора группы следует использовать идентификатор какой-нибудь нейтральной группы, имеющейся в системе. Часто используется группа news. Либо можно специально создать для сервера новую группу. Если указанные пользователь и группа не существуют в системе, сервер не будет работать.
ServerRoot
В этой директиве задается базовый каталог, в котором будет установлено программное обеспечение HTTP-сервера Apache.
BindAddress
Эта директива используется только для компьютеров, имеющих более одного IP-адреса. С ее помощью можно устанавливать прослушивание сервером еще какого из IP-адресов компьютера. По умолчанию эта директива закомментирована, и сервер производит прослушивание всех адресов компьютера.
ErrorLog /usr/local/apache/logs/error_log и CustomLog /usr/local/apache/logs/access_log common
При помощи этих двух директив задается путь к log-файлам, в которых регистрируются ошибки и попытки доступа к серверу соответственно. В файле, указанном в директиве ErrorLog, сервер сохраняет сообщения диагностики, включая сообщения об ошибках, выдаваемые сценариями CGI. В файле, указанном в директиве CustomLog, сервер сохраняет все запросы клиентов. Если включена описанная выше опция HostnameLookups, то вместе с запросами регистрируются имена компьютеров.
ServerName
Директива ServerName позволяет задать имя хоста, возвращаемое клиенту. Имя, которое вы определяете здесь, должно быть действительным именем DNS для вашего хоста. Если ваш хост не имеет зарегистрированного имени DNS, вы можете указать здесь его адрес IP. В таком случае вам придется обращаться к нему по адресу (например, http://192.168.0.1/) и это может сильно осложнить переадресацию ресурсов.
Timeout
Это промежуток времени в секундах (по умолчанию &mdash 300), в течение которого сервер ждет продолжения недополученного запроса или продолжает попытки возобновления приостановленной передачи ответа. Если у вас медленное соединение с Интернетом или вам приходится передавать большие файлы, увеличьте это значение.
KeepAlive
KeepAlive является свойством протокола HTTP 1.1, позволяющим ускорить обработку запросов путем удержания соединения и выполнения нескольких запросов. В HTTP 1.0 передача Web-страницы с четырьмя встроенными изображениями потребовала бы пять отдельных соединений, а с использованием KeepAlive все последовательные запросы производятся в рамках одного соединения. По умолчанию &mdsh; KeepAlive On
MaxClients
Директива MaxClients устанавливает максимальное число копий сервера, которые могут выполняться одновременно. Когда достигается этот предел (по умолчанию — 150), новые запросы получают отказ. Если вам не хочется отказывать пользователям, не устанавливайте слишком маленькое значение. Медленный ответ все-таки лучше, чем отказ от обслуживания.
Listen
Эта директива позволяет привязать Apache к конкретному адресу IP, и/или порту, в дополнение к порту, определенному по умолчанию.
DocumentRoot
В этой директиве задается каталог, из которого берутся передаваемые клиентам документы. Можно предоставлять клиентам и файлы, находящиеся в других каталогах, — для этого используются символьные ссылки.
UserDir public_html
Название каталога, которое прибавляется к именам пользовательских домашних каталогов при получении запроса ~user (напр." http://www.example.com/~user"). Если не требуется использовать возможность пользовательских каталогов, следует указать UserDir DISABLED.
DirectoryIndex index. html
Эта директива позволяет задать название документа, возвращаемого по запросу, который не содержит в строке URL названия документа. Если вы указываете несколько имен, разделяйте их пробелами. Пример:
DirectoryIndex index. html index.php index. htm default.html
Сервер будет искать перечисленные файлы в соответствующем порядке.
IndexOptions FancyIndexing
При получении запроса на передачу каталога сервер Apache:
· находит файл, указанный в директиве DirectoryIndex (если таковой существует), и передает его клиенту;
· если файл DirectoryIndex не существует, передает клиенту оглавление каталога.
Если выбрана опция Fancylndexing, то в оглавлении используются значки и описания файлов. Если эта опция отключена, сервер представляет оглавление в более простом виде.
AccessFileName
Имя файла, который сервер ищет в каждом каталоге для определения прав доступа. По умолчанию — .htaccess (с точкой в начале).
Чтобы подсказать браузеру, какие файлы ему предстоит обрабатывать, сервер формирует определенный код типа документа, основываясь на спецификации MIME — Multipurpose Internet Mail Extensions — многоцелевые почтовые расширения Internet) и передает этот код в заголовке HTTP-протокола.
DefaultType
Директива DefaultType определяет MIME-тип, который будет использоваться для какого-либо документа, если сервер не сможет определить его по иным признакам, например по расширению. По умолчанию значение DefaultType — text/plain. Если большая часть файлов бинарники (программы, картинки и т. п.) стоит изменить значение на «application/octet-stream», чтобы предотвратить попытку браузера показать содержимое двоичного файла.
AddEncoding x-compress Z и AddEncoding x-gzip gz tgz
Эти директивы позволяют сжимать отдаваемые документы перед отправкой, что экономит трафик и ускоряет загрузку. Браузеры, поддерживающие эту возможность (Mozilla, SeaMonkey, FireFox), распаковывают полученные файлы «на лету».
Redirect
Директива Redirect позволяет переадресовать запрос к ранее существовавшему в именном пространстве сервера документу на его новый адрес. Пример:
Redirect http://example.com/old-location/test.html http://example.com/new-location/test.html
Alias
Директивы Alias дают возможность предоставлять доступ к документам, находящимся не только в корневом каталоге сервера (DocumentRoot) и его подкаталогах, но и в других каталогах. По умолчанию в директиве Alias задан только один псевдоним — /icons, используемый директивами Addlcon и AddIconByType. Обратите внимание, что если вы включаете завершающий слэш в «псевдоним», то сервер потребует его присутствия и в URL. Пример:
Alias /icons/ «/usr/local/apache/icons/»
ScriptAlias
Директива указывает каталог, который содержит серверные скрипты. Свойства ScriptAlias-ов такие же, как и у просто Alias-ов, кроме того, что документы в заданном директивой каталоге считаются приложениями и выполняются на сервере, а не отправляются клиенту. К директиве ScriptAlias применяются те же правила в отношении завершающего «/», что и к Alias. Разрешается добавлять неограниченное число директив ScriptAlias. Примеры:
ScriptAlias /cgi-bin/ «/usr/local/apache/cgi-bin/»
ScriptAlias /user1/ «/usr/home/user1/public_html/cgi-bin/»
AddType
Директива AddType позволяет добавить описания типов файлов (помимо MIME-types) и порядок их обработки. Примеры:
#файлы с расширением. shtml должны обрабатываться как html файлы
AddType text/html .shtml
#файлы с расширением .php должны запускаться как php файлы
AddType application/x-httpd-php .php
#файлы с расширением .html должны запускаться и как php файлы
AddType application/x-httpd-php .html
#файлы с расширением .pl должны запускаться как cgi файлы
AddType application/x-httpd-cgi .pl
AddHandler
Сервер Apache имеет возможности модификации файлов определенных типов перед отправкой их пользователю. Директива AddHandler ставит в соответствие расширению файла определенное действие. Например:
AddHandler server-parsed .shtml
включает поддержку технологии SSI (Server-side Includes) и Apache выполняет разбор файлов .shtm на предмет поиска в них директив SSI. Если изменить параметр так:
AddHandler server-parsed .html
то Apache будет парсить и .html-файлы.
Функция, указанная в директиве AddHandler, не обязательно должна являться встроенной функцией сервера. Директива Action может ставить в соответствие функции из AddHandler сценарий CGI. Например, следующие строки в файле srm. conf сначала указывают серверу, что функция foo поставлена в соответствие сценарию bar. pl, который всякий раз запускается при обращении к файлам с расширением .ext:
Action foo /user/cgi-bin/bar.pl
AddHandler foo .ext
ErrorDocument
Эта директива позволяет переопределить сообщения об ошибках, сопоставив в соответствие кодам ошибок HTTP-сервера текстовые сообщения и/или адреса URL на том же сервере. Например:
ErrorDocument 404 «Этого файла нет, не было и не будет на сервере!»
Options
Эта директива перечисляет список опций, применяемых к указанному каталогу. Опции могут иметь значения «None», «All» или любую комбинацию из «Indexes», «Includes», «FollowSymLinks», «ExecCGI» или «MultiViews». Например, такая конфигурация определяет порядок отображения индексной страницы, разрешает серверные включения (SSI) и переход по символьным ссылкам:
Options Indexes Includes FollowSymLinks
AllowOverride
С параметром none блокирует использование файла. htaccess, с параметром all — разрешает перекрывать дефолные настройки директивами из.htaccess.
Order
Директива, вместе с директивами Allow и Deny, определяющая порядок обращения к ресурсам в соответствии с правами доступа. Пример:
Order allow, deny
Allow from all
4.4 Управление Web-сервером
Пользователь должен уметь запустить и остановить Web-сервер после его установки. Кроме того, нужно время от времени выполнять некоторые служебные операции, чтобы убедиться в том, что сервер работает без инцидентов. Необходимо добавлять и удалять пользователей и группы, защищать каталоги при помощи управления доступом и осуществлять контроль протоколов сервера.
4.5 Запуск и остановка Apache
Если Apache установлен при установке Red Hat, то загрузочные файлы во время старта системы уже настроены на запуск Apache. Эти настройки находятся в файле /etc/re. d/ init. d/ httpd. Данный файл является исполняемым сценарием, которому передаются два возможных параметра: start и stop. Если планируется использовать версию Apache, поставляемую с дистрибутивом Red Hat и расположение конфигурационных файлов не будет изменяться, то можно запускать и останавливать Web-сервер вручную, используя команду
# /etc/re.d/init.d/httpd start
для запуска сервера и команду для останова сервера.
# /etc/re. d/init.d/httpd stop
Примечание Запуск и останов Web-сервера производятся пользователем root, чтобы главный процесс сервера мог изменять пользователей для запуска дочерних процессов при прослушивании соединений.
Если устанавливаются собственные исполняемые модули или скомпилированные из исходников новые двоичные файлы, или необходимо изменить расположение конфигурационных файлов, то нужно уметь вручную запускать команду httpd.
Обычно httpd находится в /usr/sbin/. Допустимы два ключа.
· - f указывает на положение файла httpd. conf.
· -d указывает на корневой каталог сервера, переназначая файл конфигурации.
Обычно достаточно использовать флаг — f, поскольку ServerRoot указан в файле httpd. conf. Например, если файлы конфигурации находятся в /home/httpd/conf, то запустить сервер можно с использованием следующей команды [22, 23].
# /uar/sbin/httpdf /etc/httpd/conf/httpd.conf
Если сервер запущен самостоятельно, без использования /etc/re. d/init. d/httpd, и его надо остановить вручную, то нужно знать правильный ID процесса (PID) для сервера. PID сервера можно определить, используя команду ps.
# psaux | grep httpd
Эта команда выдает список процессов подобный следующему.
Заметьте: все процессы принадлежат apache за исключением одного, принадлежащего root. Это родительский процесс всех процессов httpd, как раз тот, который нужно остановить командой
# kill 544
ЗАКЛЮЧЕНИЕ
В наши дни популярность ОС Линукс стремительно растет. Уже сформировалось сообщество айтишников и программистов, которые используют и постоянно усовершенствуют эту систему. Разрабатываются все новые разновидности и версии, пишутся всевозможные программы, работающие под Linux.
Linux заслуженно считается самой сильной операционной системой в области серверного обслуживания. Изначально ОС Linux получила свое распространение как серверная система. Позднее в неё были портированы различные прикладные приложения, которые позволяют и в наше время комфортно работать в интернете, слушать музыку общаться, играть, просматривать видео, записывать диски CD и DVD, набирать тексты и многое другое.
Linux — наиболее выгодная система. Вы можете иметь всего лишь один дистрибутив Линукс, его можно устанавливать по всему предприятию, даже, если в организации задействованы десятки и сотни компьютеров. Операционная система позволит экономить немыслимые денежные средства. В данной работе мы рассмотрели основную структуру ОС Linux. Описана файловая система данной ОС. Рассмотрены базовые настройки сервера на примере Apache. Заметим, что представленный перечь настроек является далеко не полным. Полное описание всех возможностей настройки можно найти в специализированной литературе и сайтах. В работе кратно описана сетевая поддержка OC Linux
СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ
1. Морис Дж. Бах Архитектура операционной системы UNIX — http://linuxland.itam.nsc.ru/book.html [Электронный ресурс], режим доступа — свободный
2. С. Д. Кузнецов Операционная система UNIX — http://linuxland.itam.nsc.ru/book/unix08/contents.html [Электронный ресурс], режим доступа — свободный
3. Эви Немеет Unix и Linux. Руководство системного администратора. Для профессионалов.3-е изд. -СПб.: Питер; К.: Издательская группа BHV, 2007. — 925 с.
4. Построение собственного Web-сервера — http://lib.qrz.ru/book/export/html/16 929 [Электронный ресурс], режим доступа — свободный
5. OpenNet Безопасность http://www.opennet.ru/docs/RUS/fs_secure/node4.html [Электронный ресурс], режим доступа — свободный
6. Концепция Unix System V — http://citforum.ru/operating_systems/sos/glava21.shtml [Электронный ресурс], режим доступа — свободный
7. А. М. Робачевский Операционная система Unix. — 2 изд., перераб. и доп. — СПб.: БХВ — Петербург, 2010. — 656 с.
8. Linux Center http://www.linuxcenter.ru/news/2009/02/07/9168/ [Электронный ресурс], режим доступа — свободный
9. Область применения Linux-серверов http://www.e-reading.org.ua/chapter.php/1 002 799/5/Kolisnichenko_Denis_-_Linux-_server_svoimi_rukami.html [Электронный ресурс], режим доступа — свободный
10. Параллельные вычисления http://cluster.linux-ekb.info/ [Электронный ресурс], режим доступа — свободный
11. Идеальный сервер — http://www.mini-server.ru/ [Электронный ресурс], режим доступа — свободный
12. Руководство по настройке Web-севера Linux http://www.wikireality.ru/wiki [Электронный ресурс], режим доступа — свободный
13. Укрепление защиты сервера под Linux — http://www.ibm.com/developerworks/ru/edu/l-harden-server/index.html [Электронный ресурс], режим доступа — свободный
14. Серверные платы Intel — http://www.intel.ru/content/www/ru/ru/motherboards/server-motherboards/server-board.html [Электронный ресурс], режим доступа — свободный
15. Установка и настройка Apache — http://www.4stud.info/networking/work9.html [Электронный ресурс], режим доступа — свободный
16. Книги и руководство по Unix — http://linuxland.itam.nsc.ru/bookh.html [Электронный ресурс], режим доступа — свободный
17. RusOpen Source — http://opensourcerules.net/files_katalogs.html [Электронный ресурс], режим доступа — свободный
18. Linux сервер своими руками — http://lib.rus.ec/b/173 845/read [Электронный ресурс], режим доступа — свободный
19. База знаний Clodo — http://lib.clodo.ru/web-server/lamp-web-server/ [Электронный ресурс], режим доступа — свободный
20. Web-сервер Apache для систем Linux — http://www.compress.ru/article.aspx?id=18 173&iid=842 [Электронный ресурс], режим доступа — свободный
21. Создание Web-сервера (Apache, Mysql, PHP) под Slackware Linux (linux web mysql php install apache slackware) — http://www.opennet.ru/base/net/lamp_slackware.txt.html [Электронный ресурс], режим доступа — свободный