Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

Установка и настройка apache

Web сервер apache

Web сервер хранит web ресурсы, а также осуществляет доступ к ним. Он также необходим и для разработки и отладки web-приложений. Apache – самый распространенный web-сервер в мире. Это открытая бесплатная программа, предназначенная для открытых операционных Unix-систем (FreeBSD, Linux и др.). Разработаны также версии Apache для Windows. Apache по своим функциональным возможностям и надежности не уступает коммерческим серверам, а широкие возможности конфигурирования позволяют настроить его для работы практически с любой конкретной системой. Существуют локализации сервера для различных языков, в том числе и для русского.

Дистрибутив Apache

Дистрибутив Apache можно получить с официального сайта Apache по адресу http://www. apache. org/dist/httpd/.

Существует два способа установки Apache: установка из пакета (в этом случае необходимо управлять пакетом, иначе программа устанавливается «своим» способом), и компиляция из исходных текстов. В данном руководстве будет рассмотрен второй способ установки.

В настоящее время последняя вышедшая версия Apache - 2.0.43. Однако, мы познакомимся с версией 1.3.26, как наиболее простой и отработанной. Работа с этой версией web сервера Apache позволяет получить базовое представление о нем, основные навыки его установки и настройки.

Как и большинство программных продуктов, дистрибутив Apache заархивирован с помощью gzip. Для того, чтобы начать устанавливать программу, её необходимо сохранить на своём сервере, например, в каталоге /usr/distrib/ и распаковать в текущий каталог:

НЕ нашли? Не то? Что вы ищете?

tar xvzf apache_1_3_19_tar. gz

При распаковке будет создан каталог /usr/distrib/apache_1_3_26/ (УТОЧНИТЬ!), с файлами и каталогами дистрибутива.

Установка apache

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

Пример файла конфигурации myconfig

#! /bin/sh

./configure \

“--with-layout=Apache” \

“--prefix=/usr/local/apache” \

“--enable-rule=SHARED_CORE” \

“--enable-module=info” \

“--enable-module=so” \

“--disable-shared=so” \

“$@”

Основные строки ––prefix=/usr/local/apache

--with-layout=Apache

--enable-module=info

Элемент prefix содержит путь к каталогу, с которого начинается дерево Apache. Варьируя это значение, можно устанавливать Apache в различные каталоги.

Элемент with-layout определяет структуру каталогов дерева Apache (см. рис. 1).

Элемент enable-module разрешает прикомпилировать указанные модули. Необходимо разрешить модуль info, содержащий информацию о конфигурации Apache, чтобы после установки и настройки сервера можно было проверить правильность его установки.

Перед установкой Apache необходимо убедиться, что каталог, содержащий дистрибутив (в нашем случае /usr/distrib/apache_1_3_19/), является текущим, и запустить сценарий конфигурации сервера:

$ ./configure

Происходит конфигурирование будущего сервера.

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

$ make

В результате работы команды make должен быть создан исполняемый файл httpd.

Последний этап – установка сервера в каталоги согласно конфигурации, произведенной на первом этапе.

$ make install

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

Если ошибок не было, то сервер установлен, однако, запускать его пока рано, т. е. необходимо произвести настройку сервера. На рис. 1 показано дерево каталогов apache, созданное в результате установки сервера.


Рис.1. Дерево Apache

Упражнение 1. Установка apache в стандартный каталог (/usr/local/apache/)

Установите Apache в каталог /usr/local/apache/, выполнив все описанные выше действия.

Убедитесь, что ни на одном из этапов установки не было ошибок, и в результате установки создана структура каталогов, показанная на рис. 1.

Упражнение 2. Установка apache в другой каталог

Самостоятельно установите Apache в другой каталог.

Убедитесь, что требуемая структура каталогов создана.

Настройка apache

4.1.Конфигурационные файлы (все в httpd. conf)

Конфигурационные файлы Apache находятся в каталоге <PREFIX>/conf (в рассматриваемом примере это каталог /usr/local/apache/conf/). По смысловой нагрузке директивы настройки сервера распределены по трем конфигурационным файлам:

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

·  srm. conf – файл, содержащий настройки структуры каталогов сервера, особенно web-пространства, к которому будет обращаться пользователь.

·  access. conf – файл, описывающий права доступа к каталогам и файлам web-сервера.

Рассмотрим пример, когда все директивы настройки включены в один основной файл httpd. conf, а файлы srm. conf и access. conf не используются.

Для этого в файле httpd. conf необходимо написать все директивы и закомментировать ссылки на два других файла:

# ResourceConfig conf/srm. conf

# AccessConfig conf/access. conf

Рассмотрим кратко основные директивы.

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

User и Group – имя пользователя и группы, задающие администратора web-сервера.

ServerRoot – корневой каталог сервера, в котором хранятся конфигурационные файлы apache, журналы ошибок, и т д.

ErrorLog – файл журналирования ошибок работы сервера. Может указываться полный путь к файлу, или путь относительно ServerRoot.

PidFile – полный путь к файлу, содержащему pid процесса apache.

ServerName – имя сервера, необходимое для переадресации URL.

DocumentRoot – каталог, в котором хранятся сценарии, передаваемые пользователям сервера. Так называемое web-пространство пользователя.

DyrectoryIndex – файл индекса каталога сервера – файл, который будет передан клиенту при обращении к каталогу. Может быть указано несколько имен файлов.

Две следующие директивы позволяют включить на сервере поддержку cgi-сценариев.

ScriptAlias – задает каталог, в котором хранятся исполняемые программы

AddHandler cgi-script .cgi – указывает, что файлы с расширением. cgi должны обрабатываться как сценарии

Пример конфигурационного файла httpd. conf

# ServerType – тип сервера, может быть inetd, или standalone. Если apache создаёт и уничтожает порождённые процессы по одному, то тип сервера – inetd. Standalone позволяет создать много порождённых ожидающих серверов.

ServerType standalone

# Порт, который прослушивает сервер apache при обращении клиента.

Port 80

# HostnameLookups: может быть on или off. Если on, то при обращении клиента осуществляется обратное преобразование имен DNS, что замедляет работу сети.

HostnameLookups off

# User/Group: имя пользователя и группы, которая от имени которого будет # запускаться сервер apache.

User nobody

Group nobody

# ServerAdmin: адрес администратора, по которому сервер может прислать сообщение о своих сбоях.

ServerAdmin root@localhost

# ServerRoot: корневой каталог сервера, где хранятся конф. файлы apache, журналы ошибок, и т д.

ServerRoot /usr/local/apache

# Пути (относительно ServerRoot) к конфигурационным файлам srm и access (если они используются). Если они не используются и вся конф. информация хранится в файле httpd. conf, то эти директивы не задаются, или в них вместо имен файлов используется параметр devnull. Apache просматривает конф. файлы в след. порядке: httpd. conf, srm. conf, access. conf

# ResourceConfig conf/srm. conf

# AccessConfig conf/access. conf

# Имя файла-журнала ошибок (м. указываться относительно ServerRoot, или абсолютно)

ErrorLog /usr/local/apache/logs/error_log

# LogLevel: уровень выдачи контрольных сообщений (error, info, debug и т. д.)

LogLevel warn

# Определение формата имени для использования директивы CustomLog

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

LogFormat "%h %l %u %t \"%r\" %>s %b" common

LogFormat "%{Referer}i -> %U" referer

LogFormat "%{User-agent}i" agent

# Полное имя файла-журнала с отчетом о попытках доступа и директива # выполнения

CustomLog /usr/local/apache/logs/access_log common

# PidFile: полное имя файла, содержащего ID процесса apache(PId)

PidFile /usr/local/apache/logs/httpd. pid

# ScoreBoardFile: полное имя файла, содержащего внутреннюю информацию сервера

ScoreBoardFile /var/run/httpd.scoreboard

# UseCanonicalName: Если on, то apache для формирования имени для обратных ссылок на себя использует значения ServerName и Port, если off, то apache для обращения использует имя hostname:port.

UseCanonicalName on

# Timeout: время в секундах, в теч. которого ожидается ответ

Timeout 300

# KeepAlive: Позволяет (on), запрещает (off) постоянное соединение (более чем один запрос за одно соединение)

KeepAlive On

# MaxKeepAliveRequests: Максимальное число запросов за одно соединение

MaxKeepAliveRequests 100

# KeepAliveTimeout: Время (в секундах)ожидания следующего запроса

KeepAliveTimeout 15

# Пул серверов, задаётся, чтобы apache мог динамически создавать лишние серверы # для обработки большого числа задач.

MinSpareServers 5

MaxSpareServers 10

# Количество серверов, запускаемых при старте apache

StartServers 5

# Максимальное количество клиентов, которые могут одновременно соединяться с сервером

MaxClients 150

# Максимальное количество запросов, которое может обработать каждый дочерний процесс

MaxRequestsPerChild 100

# Включение конфигурационного файла jserv для запуска jserv

Include /usr/local/apache/conf/jserv/jserv. conf

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

DocumentRoot /usr/local/apache/htdocs

# UserDir: домашний каталог пользователя

UserDir public_html

# DirectoryIndex: имена файлов, которые могут использоваться как индексные файлы

DirectoryIndex index. html index. shtml index. cgi

# FancyIndexing включено (on) если используется расширенная индексация, и # выключено (off) при использовании стандартной индексации

FancyIndexing on

# AddIcon говорит серверу, какие иконки используются для разных расширений файлов

AddIconByEncoding (CMP,/icons/compressed. gif) x-compress x-gzip

AddIconByType (TXT,/icons/text. gif) text/*

AddIconByType (IMG,/icons/image2.gif) image/*

AddIconByType (SND,/icons/sound2.gif) audio/*

AddIconByType (VID,/icons/movie. gif) video/*

# DefaultIcon определяет иконку для файлов, для которых не указаны иконки

DefaultIcon /icons/unknown. gif

# ReadmeName – имя файла, содержимое которого включается в нижний колонтитул # индекса (индекс - файл index. html, или индекс, который составляет apache при # отсутствии индексного файла). HeaderName - имя файла, содержимое которого # включается в заголовок индекса.

ReadmeName README

HeaderName HEADER

# IndexIgnore – множество имен файлов (отделенных пробелом), которые не должны # входить в список файлов и каталогов при индексации

IndexIgnore.??* *~ *# HEADER* README* RCS

# AccessFileName: имя файла в котором определяются полномочия пользователя

AccessFileName. htaccess

# TypesConfig – путь к файлу mime. types

TypesConfig /etc/mime. types

# DefaultType – MIME тип документов, расширения которых сервер не сможет найти в # списке

DefaultType text/plain

# AddEncoding позволяет иметь несколько архиваторов, которые могут # разархивировать информацию «на лету»

AddEncoding x-compress Z

AddEncoding x-gzip gz

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

AddLanguage en. en

AddLanguage fr. fr

AddLanguage de. de

AddLanguage da. da

AddLanguage el. el

AddLanguage it.it

# LanguagePriority устанавливает приоритет отображения документов на разных языках

LanguagePriority en fr de

# Aliases: позволяет использовать для обращения к какому-либо файлу или директории # не полный путь, а псевдоним, более короткий и удобный. Формат:

# Alias псевдоним реальный путь

Alias /icons/ /usr/local/apache/icons/

# ScriptAlias: алиас для каталога, содержащего cgi-скрипты

ScriptAlias /cgi-bin/ /usr/local/apache/cgi-bin/

# Добавляет тип файла к стандартным известным системе типам, чтобы система могла # сама обрабатывать файлы данного типа

AddType application/x-x509-ca-cert .cacert

# mime тип для hmcard файлов

AddType application/x-hmcard. hmw

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

# Формат: AddHandler обработчик расширение

# Для использования CGI скриптов:

AddHandler cgi-script. cgi

AddType text/html. shtml

AddHandler server-parsed. shtml

AddHandler imap-file map

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

BrowserMatch "Mozilla/2" nokeepalive

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

# Option Indexes позволяет apache создавать список файлов и каталогов при # индексации, если нет соответствующего индексного файла.

# Option FollowSymLinks позволяет следовать символическим ссылкам. Повторное # употребление директивы Options отменяет все предыдущие ее установки.

# AllowOverride AuthConfig позволяет индивидуально устанавливать UserFile, # AuthName, AuthType, AuthUserFile, require.

<directory />

Options Indexes Includes FollowSymLinks

AllowOverride AuthConfig FileInfo

</directory>

# allow (deny) позволяет разрешить (запретить)доступ с конкретного IP.

# order устанавливает порядок выполнения команд allow и deny. Доступ к серверу # разрешен клиенту, указанному в allow, если только он не указан в deny.

# require valid-user разрешает доступ всем пользователям, которые указаны в файле # паролей системы.

<directory /usr/local/apache/htdocs>

Options Indexes Includes FollowSymLinks

order allow, deny

allow from all

AllowOverride AuthConfig

</directory>

# Option ExecCGI позволяет выполнять CGI-сценарии в системе

<directory /usr/local/apache/cgi-bin>

Options ExecCGI

AllowOverride AuthConfig

</directory>

<directory /usr/local/apache/htdocs/tmp/bugzilla>

Options ExecCGI

AllowOverride AuthConfig

</directory>

<directory /usr/doc>

Options Indexes FollowSymLinks

order deny, allow

allow from localhost

deny from all

</directory>

# Location позволяет задавать отдельные параметры и опции доступа для отдельных # URL, по которым обращаются пользователи

# AuthType задает тип контроля полномочий,

# AuthName задаёт имя области (зоны), в которой имена и пароли пользователей # действительны.

# AuthUserFile задает имя файла имен пользователей и их зашифрованных паролей.

<Location /servlets/forum/auth>

AuthType Basic

AuthName "restricted_stuff"

AuthUserFile /usr/local/apache/conf/jserv/users

require valid-user

</Location>

<Location /servlet/forum/auth>

AuthType Basic

AuthName "restricted_stuff"

AuthUserFile /usr/local/apache/conf/jserv/users

require valid-user

</Location>

<Location /servlet/forum. auth. Forum>

AuthType Basic

AuthName "restricted_stuff"

AuthUserFile /usr/local/apache/conf/jserv/users

require valid-user

</Location>

<Location /servlets/forum. auth. Forum>

AuthType Basic

AuthName "restricted_stuff"

AuthUserFile /usr/local/apache/conf/jserv/users

require valid-user

</Location>

<Location /servlet/forum. auth. ForumAuth>

AuthType Basic

AuthName "restricted_stuff"

AuthUserFile /usr/local/apache/conf/jserv/users

require valid-user

</Location>

<Location /servlets/forum. auth. ForumAuth>

AuthType Basic

AuthName "restricted_stuff"

AuthUserFile /usr/local/apache/conf/jserv/users

require valid-user

</Location>

# Для выдачи информации о статусе сервера apache

<Location /server-status>

SetHandler server-status

Order deny, allow

Deny from all

Allow from 192.168.2.1

</Location>

# Для выдачи информации о статусе сервера apache

<Location /server-info>

SetHandler server-info

order deny, allow

Deny from all

allow from 192.168.2.1

</Location>

Если сервер установлен и настроен корректно, то с рабочей станции можно получить информацию о статусе и настройке сервера (status и info).

Рис. 2 Получение статуса Apache (server-status)

Рис. 3 Получение информации об Apache (server-info)

4.2. Аутентификация

<Location URL>

директивы, описывающие доступ и права работы с данным URL

</Location>

<Directory имя_каталога>

директивы, описывающие доступ и права работы с данным каталогом

</Directory>

<Files>

директивы, описывающие доступ и права работы с данным файлом

</Files>

В секции <Directory> обычно используются следующие директивы:

Options

AllowOverride

order

allow

deny

Возможные значения параметров Options:

    ExecCGI - разрешить выполнение CGI-сценариев в данном каталоге и его поддереве; FollowSymLinks - разрешить переходы по символическим ссылкам (создаваемым командой ln); Includes - разрешить SSI (Server Side Includes); Indexes - разрешить выдачу листинга
    каталога, если в нем нет файла index. html (или файла индекса, заданного директивой DirectoryIndex); MultiViews - разрешить поддержку многих языков; по умолчанию она отключена, и включать ее, как правило, не нужно; поддержка перекодирования "на лету" для русского языка устанавливается с помощью других директив All - установить сразу все перечисленные режимы кроме MultiViews.

При отсутствии специальных требований к безопасности вполне допустимо указать "Options All" в секции <Directory /www>; в противном случае нужно описать параметры каждого каталога отдельно.

AllowOverride [options...]

Большинство директив могут задаваться не только в конфигурационных файлах сервера, но и в файлах. htaccess в каталогах сервера. Директива AllowOverride определяет набор директив, допустимых в файлах. htaccess. Параметры могут быть указаны следующие:

AuthConfig - разрешить установку авторизации по имени пользователя и паролю;

FileInfo - разрешить директивы, отвечающие за типы документов;

Indexes - разрешить директивы, связанные с листингом каталогов;

Limit - разрешить команды allow и deny, которые ограничивают доступ к файлам в зависимости от адреса клиентского компьютера;

Options - разрешить описанную выше директиву Options.

<Location> - защита URL, по которым обращается пользователь

В секции Location обычно используются следующие директивы:

AuthType – задает тип контроля полномочий. Обычно используется basic.

AuthName – имя области, в которой имена и пароли пользователей действительны. Это имя области пользователь увидит в окне аутентификации при попытке доступа к серверу.

Рис.

AuthUserFile – файл, содержащий имена пользователей и их пароли в зашифрованном виде

require – список пользователей и групп, которым разрешен доступ к серверу. Для разрешения доступа всем пользователям, имена которых есть в файле паролей, используется значение require valid-user.

Упражнение 3. Защита каталогов и файлов.

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

При необходимости на одном сервере могут располагаться несколько web-узлов. Например, для работы разных отделов одной фирмы. Для организации такой работы запускают несколько виртуальных Apache (механизм виртуальных хостов), которые направляют запросы от пользователей по разным URL на разные наборы документов. Виртуальные хосты могут различаться IP-адресами или только доменными именами.

Если несколько виртуальных хостов, то используются директивы:

·  ServerName – имя основного сервера, корневой каталог которого задан в ServerRoot.

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

·  NameVirtualHost – IP-адрес виртуального хоста.

Для организации виртуального хоста используются следующие директивы:

<VirtualHost имя виртуального хоста>

</VirtualHost>

ПРИМЕР ОПИСАНИЯ ВИРТУАЛЬНОГО ХОСТА ИЗ HTTPD. CONF

Материалы по Apache

www. apache. org - официальный сайт Apache

www. ***** - сайт, содержащий аналитическую учебную информацию

www. apache. ***** - материалы по русскому Аpache с возможностью скачать его дистрибутив.