Тарифы Услуги Сим-карты

Настройка Apache: пошаговая инструкция. Apache: установка и настройка веб-сервера

Apache - это популярнейший свободный веб-сервер. Состоянием на 2016 год он используется на 33% всех сайтов интернета, а это приблизительно 304 миллиарда сайтов. Этот веб-сервер был разработан в далеком 1995, как замена для популярного того сервера NCSA и исправил множество его проблем. Ходят слухи что его имя походит от a patchy, заплатка, так как он исправлял ошибки NCSA. Сейчас же, это кроссплатформенная программа, поддерживающая Windows, Linux и MacOS и обеспечивающая достаточную гибкость, настраиваемость и функциональность. Программа имеет модульную структуру, что позволяет расширять ее функциональность почти до бесконечности с помощью модулей.

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

На данный момент, самая новая версия программы 2.4 поэтому и будет рассмотрена настройка apache 2.4. Как я уже говорил, в Linux программа устанавливается буквально в пару команд. Для установки в Ubuntu сначала обновим систему до самой новой версии:

sudo apt update
$ sudo apt upgrade

Затем установка apache2:

sudo apt install apache2

В других дистрибутивах пакет программы называется либо так, либо httpd и его установка у вас не вызовет трудностей.

После завершения установки нужно добавить веб-сервер в автозагрузку, чтобы не запускать его вручную после включения компьютера:

sudo systemctl enable apache2

Настройка Apache

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

Все настройки содержатся в папке /etc/apache/:

  • Файл /etc/apache2/apache2.conf отвечает за основные настройки
  • /etc/apache2/conf-available/* - дополнительные настройки веб-сервера
  • /etc/apache2/mods-available/* - настройки модулей
  • /etc/apache2/sites-available/* - настойки виртуальных хостов
  • /etc/apache2/ports.conf - порты, на которых работает apache
  • /etc/apache2/envvars

Как вы заметили есть две папки для conf, mods и site. Это available и enabled. При включении модуля или хоста создается символическая ссылка из папки available (доступно) в папку enable (включено). Поэтому настройки лучше выполнять именно в папках available. Вообще говоря, можно было бы обойтись без этих папок, взять все и по старинке свалить в один файл, и все бы работало, но сейчас так никто не делает.

Сначала давайте рассмотрим главный файл конфигурации:

vi /eta/apache2/apache2.conf

Timeout - указывает как долго сервер будет пытаться продолжить прерванную передачу или прием данных. 160 секунд будет вполне достаточно.

KeepAlive On - очень полезный параметр, позволяет передавать несколько файлов, за одно соединение, например, не только саму html страницу, но и картинки и css файлы.

MaxKeepAliveRequests 100 - максимальное количество запросов за одно соединение, чем больше, тем лучше.

KeepAliveTimeout 5 - таймаут соединения, обычно для загрузки страницы достаточно 5-10 секунд, так что больше ставить не нужно, но и рвать соединение раньше чем загрузились все данные тоже не нужно.

User, Group - пользователь и группа, от имени которых будет работать программа.

HostnameLookups - записывать в логи вместо ip адресов доменные имена, лучше отключить, чтобы ускорить работу.

LogLevel - уровень логирования ошибок. По умолчанию используется warn, но чтобы логи заполнялись медленнее достаточно включить error

Include - все директивы include отвечают за подключение рассмотренных выше конфигурационных файлов.

Директивы Directory отвечают за настройку прав доступа к той или иной директории в файловой системе. Синтаксис здесь такой:


Параметр значение

Здесь доступны такие основные опции:

AllowOverride - указывает нужно ли читать.htaccess файлы из этой директории, это такие же файлы настроек и таким же синтаксисом. All - разрешать все, None - не читать эти файлы.

DocumentRoot - устанавливает из какой папки нужно брать документы для отображенияа пользователю

Options - указывает какие особенности веб-сервера нужно разрешить в этой папке. Например, All - разрешить все, FollowSymLinks - переходить по символическим ссылкам, Indexes - отображать содержимое каталога если нет файла индекса.

Require - устанавливает, какие пользователи имеют доступ к этому каталогу. Require all denied - всем запретить, Require all granted - всем разрешить. можно использовать вместо all директиву user или group чтобы явно указать пользователя.

Order - позволяет управлять доступом к директории. Принимает два значения Allow,Deny - разрешить для всех, кроме указанных или Deny,Allow - запретить для всех, кроме указанных..ru.

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

У нас остался файл /etc/apache2/ports.conf:

В нем только одна директива, Listen, которая указывает программе на каком порту нужно работать.

Последний файл /etc/apache2/envvars, его вы вряд ли будете использовать, в нем указанны переменные, которые можно использовать в других конфигурационных файлах.

Настройка сервера Apache через htaccess

Файлы.htaccess позволяют настраивать веб-сервер на Ubuntu для поведения в определенной директории. Все инструкции, указанные в этом файле выполняются как бы они были обвернуты в тег если бы находились в основном файле.

Важно заметить, что для того, чтобы сервер читал инструкции из.htaccess настройки для этой папки в основном файле или файле виртуального хоста не должны содержать AllowOverride None , чтобы могли работать все настройки нужно AllowOverride All .

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

Order Deny,Allow
Deny from all

Запрещает всем доступ к этой папке, важно применить, для папок с конфигурацией. Чаще всего.htaccess используется для работы с модулем mod_rewrite, который позволяет изменять запросы на лету:

RewriteEngine on
RewriteRule ^product/([^/\.]+)/?$ product.php?id=$1 [L]

Но это очень обширная тема и выходит за рамки этой статьи.

Настройка модулей Apache

Как я уже говорил, Apache - модульная программа, ее функциональность можно расширять с помощью модулей. Все доступные модули загрузчики и конфигурационные файлы модулей находятся в папке /etc/apache/mods-available. А активированные в /etc/apache/mods-enable.

Но вам необязательно анализировать содержимое этих папок. Настройка Apache 2.4 с помощью добавления модулей выполняется с помощью специальных команд. Посмотреть все запущенные модули можно командой:

Включить модуль можно командой:

sudo a2enmod имя_модуля

А отключить:

sudo a2dismod имя_модуля

После включения или отключения модулей нужно перезагрузить apache:

sudo systemctl restart apache2

Во время выполнения одной из этих команд создается или удаляется символическая ссылка на файл модуля с расширением load в директории mods-available. Можете посмотреть содержимое этого файла, там только одна строка. Например:

vi /etc/apache2/mods-available/deflate.load

Это к тому, что активировать модуль можно было просто добавив эту строчку в файл apache2.conf. Но принято делать именно так, чтобы избежать путаницы.

Настройки модулей находятся в той же папке, только в файле с расширением.conf вместо load. Например, посмотрим настройки того же модуля для сжатия deflate:

vi /etc/apache2/mods-available/deflate.conf

Файлы в папке conf-available, это такие же модули, только они установлены отдельно от apache, это может быть конфигурационные файлы для включения модуля php или любого другого языка программирования. Здесь работает все точно так же, только команды для включения и отключения этих модулей немного другие:

a2enconf имя_модуля

a2disconf имя модуля

Как вы убедились, включать модули очень просто. Давайте включим несколько необходимых, но не включенных по умолчанию модулей:

sudo a2enmod expires
$ sudo a2enmod headers
$ sudo a2enmod rewrite
$ sudo a2enmod ssl

Модули expires и headers уменьшают нагрузку на сервер. Они возвращают заголовок Not Modified, если документ не изменился с последнего запроса. Модуль expiries позволяет устанавливать время, на которое браузер должен кэшировать полученный документ. Rewrite позволяет изменять запрашиваемые адреса на лету, очень полезно при создании ЧПУ ссылок и т д. А последний для включения поддержки шифрования по SSL. Не забудьте перезагрузить apache2 после завершения настроек.

Настройка виртуальных хостов Apache

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

Настройки хостов Apache расположены в папке /etc/apache2/hosts-available/. Для создания нового хоста достаточно создать файл с любым именем (лучше кончено с именем хоста) и заполнить его нужными данными. Обернуть все эти параметры нужно в директиву VirtualHost. Кроме рассмотренных параметров здесь будут использоваться такие:

  • ServerName - основное имя домена
  • ServerAlias - дополнительное имя, по которому будет доступен сайт
  • ServerAdmin - электронная почта администратора
  • DocumentRoot - папка с документами для этого домена

Например:

vi /etc/apache2/sites-available/test.site.conf

Конфигурационные файлы Apache

В большинстве пакетов основной конфигурационный файл Apache носит имя httpd.conf . В зависимости от версии системы этот файл может находиться в разных каталогах, но формат его остается неизменным. В системах Caldera и SuSE файл httpd.conf содержится в каталоге /etc/httpd ; в Debian и Slackware он размещается в /etc/apache (Slackware предоставляет файл-образец /etc/apache/httpd.conf.default ; для обеспечения работы сервера надо лишь переименовать данный файл и внести в него необходимые изменения); в Red Hat и TurboLinux файл httpd.conf размещается в каталоге /etc/httpd/conf/ .

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

Директива Значение

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

Options FollowSymLinks

AllowOverride None

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

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

Access.conf . Ссылка на этот файл формируется с помощью директивы AccessConfig и содержится в файле httpd.conf . В файле access.conf чаще всего задаются директивы , определяющие особенности доступа к указанным в них каталогам. В настоящее время этот файл обычно остается пустым, а иногда в качестве значения AccessConfig задается /dev/null , что запрещает использование access.conf .

Mime.types . Для того чтобы сообщить Web-броузеру о том, как должны обрабатываться данные, Web-сервер использует стандарт MIME (Multipurpose Internet Mail Extensions - многоцелевые почтовые расширений Internet). Например, MIME-тип text/plain означает, что данные представляют собой обычный текст, а image/jpeg определяет графические данные в формате JPEG (Joint Photographic Experts Group - объединенная группа экспертов по обработке фотоснимков). Файл mime.types содержит информацию о соответствии между MIME-типами и расширениями файлов. Например, имена файлов, оканчивающиеся.txt и.asc , связываются с MIME-типом text/plain . Если такое соответствие задано неправильно, Web-броузер будет испытывать затруднения при обработке некоторых типов файлов. Файл, поставляемый в составе пакета, обеспечивает обработку практически любых типов данных, которые могут быть помещены на Web-страницу. Если же вам надо использовать редко встречающиеся типы, вам придется добавить в этот файл новые записи.

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

Из книги Linux для пользователя автора Костромин Виктор Алексеевич

8.2.2. Основные конфигурационные файлы Если вы прочитали разд. 8.2.1 (или если смотрели файл /etc/inittab), то представляете, что в обычной ситуации процесс init помимо запуска процессов getty выполняет 2 основных действия: запускает скрипт rc.sysinit из каталога /etc/rc.d; запускает скрипт rc

Из книги Linux-сервер своими руками автора

12.5. SSL и Apache 12.5.1. Установка SSL SSL (Secure Sockets Layer) является методом шифрования, разработанным компанией Netscape для обеспечения безопасности в Интернет. Этот метод поддерживает несколько способов шифрования и обеспечивает аутентификацию как на уровне клиента, так и на уровне

Из книги Asterisk™: будущее телефонии Второе издание автора Меггелен Джим Ван

Из книги Сетевые средства Linux автора Смит Родерик В.

Из книги Linux: Полное руководство автора Колисниченко Денис Николаевич

Конфигурационные файлы DHCP Большинство дистрибутивных пакетов Linux содержит сервер DHCP, разработанный Internet Software Consortium (http://www.isc.org/products/DHCP/). Internet Software Consortium (ISC) в конце 2000 г. выпустил версию 3.0 DHCP, но в начале 2002 г. многие версии Linux все еще поставлялись со старой версией 2.0

Из книги Ubuntu 10. Краткое руководство пользователя автора Колисниченко Д. Н.

Из книги Язык Си - руководство для начинающих автора Прата Стивен

Конфигурационные файлы Exim Главный конфигурационный файл Exim называется exim.conf. Обычно он располагается в каталоге /etc. В состав этого файла входят записи, представленные в следующем формате:опция = значениеКак обычно, строки, содержащие комментарии, начинаются с символа #.

Из книги Linux глазами хакера автора Флёнов Михаил Евгеньевич

Из книги Разработка ядра Linux автора Лав Роберт

16.1. Установка Apache В зависимости от дистрибутива, пакет, из которого устанавливается веб-сервер Apache, может называться apache или httpd, а пакет с документацией - apache-docs или httpd-manual соответственно. В первом случае вам понадобится установить еще пакет apache-common, содержащий

Из книги автора

16.2. Настройка Apache. Файлы конфигурации После установки Apache следует отредактировать следующие файлы:? /etc/httpd/conf/httpd.conf - основной файл конфигурации. Для Apache 2.x. этот файл может также называться httpd2.conf;? /etc/logrotate.d/apache или /etc/logrotate.d/httpd (в версии 2.0) - файл ротации

Из книги автора

16.10. SSL и Apache 16.10.1. Установка SSL SSL (Secure Sockets Layer) является методом шифрования, разработанным компанией Netscape для обеспечения безопасности передачи данных. Этот метод поддерживает несколько методов шифрования и обеспечивает аутентификацию как на уровне клиента, так и на

Из книги автора

19.2. Конфигурационные файлы загрузчика В листинге 19.1 приведен основной конфигурационный файл GRUB2 - /boot/grub/grub.cfg. Он не поддается редактированию вручную. Для его создания используется утилита /usr/sbm/grub-mkconfig, которая генерирует этот конфигурационный файл на основе шаблонов,

Из книги автора

26.2.3. Конфигурационные файлы сервера Файлы конфигурации сервера находятся в каталоге /etc/apache2. Основной файл конфигурации называется apache2.conf. По умолчанию его настройки устроят большинство пользователей. Если вы планируете использовать Web-сервер не только локально (для

Из книги автора

Исходные файлы и выполняемые файлы Наша замечательная программа, несмотря на свою лаконичность и простоту, для компьютера является совершенно бессмысленным набором символов, так как он "не понимает" директив типа #include или printf. Он понимает только специальный язык,

Из книги автора

5.3.1. Конфигурационные файлы Все настроечные файлы протокола SSH находятся в директории /etc/ssh. Здесь можно увидеть следующий перечень:? файл конфигурации SSH-сервера - sshd_config;? файл конфигурации SSH-клиента - ssh_config;? файлы ключей для различных

Из книги автора

Конфигурационные параметры отладки ядра Существует несколько конфигурационных параметров, которые помогают в отладке и тестировании кода ядра и которые включаются во время компиляции. Эти параметры доступны в пункте Kernel hacking меню редактора конфигурации ядра. Все эти

Конфигурирование Apache

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

C:\usr\local\apache\conf\

Это обычный текстовый файл, и для его редактирования подойдет любой текстовый редактор - тот же «Блокнот», к примеру. Я не буду подробно рассказывать о каждой строчке в этом файле, а лишь о самых необходимых и нужных нам директивах. Отметьте, что знак ‘#’ является комментарием, и если вы хорошо читаете по-английски, то без труда сможете их разобрать, что, правда, не очень поможет, если у вас нет хотя бы общего представления о принципах функционирования Web-серверов и об Интернете в целом. А потому позвольте мне предложить вам свою помощь в настройке Apache. Вместе у нас получится быстрее и, что самое важное - правильно.

Файл конфигурации Apache состоит из трех больших секций:

  • Global Environment - директивы, управляющие настройками Apache в целом;
  • Main server configuration - директивы, управляющие настройками главного сервера;
  • Virtual Hosts - директивы, управляющие виртуальными серверами.

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

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

ServerAdmin [email protected] - электронный адрес администратора, используемый в некоторых автоматически генерируемых сообщениях об ошибках Web-сервера, таких как отсутствие странички, к примеру. Параметр должен быть определен как минимум для главного сервера, иначе Apache также откажется запускаться.

ServerRoot “c:/usr/local/apache” - каталог, в котором был размещен Apache при установке. Если вы пожелаете переместить его в другое место, то данную строчку нужно будет скорректировать, как, впрочем, и все остальные строчки в файле, указывающие на данный каталог. Если вы установили Apache так, как я описывал выше, то данная строчка уже будет сконфигурирована верно и станет указывать на c:/usr/local/apache.

Port 80 - порт, по которому Apache будет отслеживать HTTP-запросы. По умолчанию он равен стандартному значению для Web-серверов, и у вас вряд ли возникнет необходимость в его изменении.

DocumentRoot “с:/usr/local/apache/htdocs” - адрес каталога, используемого для хранения HTML-страничек. По умолчанию данный параметр указывает на документацию Apache, поставляемую в дистрибутиве и расположенную в вышеуказанном каталоге.

UserDir “c:/usr/local/apache/users/” - каталог, используемый для хранения страничек пользователей, доступ к которым будет возможен по адресу:

Http://www.domain.com/~user/

Поскольку мы ставим Web-сервер для локальной отладки сайтов, а не для реальной работы в Интернете, то данную строчку вам менять не нужно.

DirectoryIndex index.html index.htm - параметр, определяющий имя файла, который будет искать Apache, если указан не полный URL. То есть такой, который заканчивается именем каталога, а не адресом конкретной странички. В том числе это относится и к файлу, который открывается по умолчанию при наборе основного URL. Например, если вы набрали в адресной строке:

Http://www.domain.com/links/,

то на самом деле Apache откроет страничку:

Http://www.domain.com/links/index.htm

Полный список файлов, которые могут быть найдены в директории, как раз и определяется этим параметром. Имена файлов отделяются друг от друга пробелом. При этом имеет значение порядок, в котором перечислены альтернативные имена: если в каталоге есть файлы с именем и index.htm, и index.html, то Apache откроет именно вторую страничку, поскольку в списке index.html стоит раньше, чем index.htm.

Alias /icons/ “c:/usr/local/apache/icons/” - команда создания алиасов, то есть ссылок, для любых каталогов. Например, вышеприведенная команда делает доступным содержимое каталога “c:/usr/local/apache/icons/” по адресу:

Http://www.domain.com/icons/

При этом сам каталог может находиться в любом месте файловой структуры и не обязательно являться подкаталогом ранее определенного каталога для размещения HTML-документов.

ScriptAlias /cgi-bin/ “c:/usr/local/apache/cgi-bin/” - данная команда аналогична предыдущей с той лишь разницей, что определяет реальное местоположение каталога с выполняемыми CGI-скриптами.

AddType text/html .html .htm - команда, определяющая тип mime для файла с заданным расширением. В данном случае мы присваиваем расширениям.html и.htm тип обычного гипертекста, и Apache будет интерпретировать его как html-код. Точнее, интерпретировать-то придется браузеру - Web-сервер лишь выдаст ему указание о том, что это гипертекст. А вот если этой строчки не будет, то Apache выдаст странички с таким расширением за обычные текстовые файлы.

AddHandler server-parsed .shtml - команда, определяющая обработчик (автоматически запускаемую программу) для файла с указанным расширением. В данном случае мы связываем расширение.shtml со встроенным обработчиком SSI-директив. И следовательно, все файлы, имеющее данное расширение, перед тем, как выдать страничку пользователю, будут проходить предварительную обработку. Если говорить более конкретно, то Apache заменит все SSI-вставки на соответствующие им значения.

ErrorDocument 404 /error404.html - директива, определяющая страничку, которая будет отослана пользователю при возникновении ошибки. В данном случае была определена страничка для самой распространенной 404-й ошибки. Данная директива не обязательна, и в случае ее отсутствия Apache сгенерирует стандартную страничку. Но согласитесь, что определить свою собственную страничку ошибки и, кроме того, сделать ее в едином стиле сайта гораздо привлекательнее. Путь к страничке ошибки может быть указан либо локально (тогда он должен обязательно начинаться от корня сайта), либо с приведением полного URL-странички.

ErrorLog logs/error.log - команда, определяющая имя файла, куда будут записываться все ошибки, возникающие при загрузке страничек или выполнении CGI-скриптов. При локальной отладке Web-сайтов - вещь крайне полезная. Так что если что-либо не ладится - Apache не запускается, Perl-скрипты не работают, графика на страничках не грузится, - этот файл может помочь вам разобраться в проблеме.

CustomLog logs/access.log common - директива, аналогичная предыдущей, но с тем отличием, что используется для протоколирования всех запросов к Web-серверу. На основе его анализа можно получить полный отчет о посещаемости сайта и популярности отдельных разделов.

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

Для каталога:

Здесь перечисляются все директивы, управляющие доступом и опциями каталога

Для файла(ов):

Здесь перечисляются все директивы, управляющие доступом к файлу(ам)

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

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

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

  • Options option_list - директива, определяющая дополнительные опции для конкретного каталога. Опции отделяются друг от друга пробелами. Основные из них следующие:
  • None - дополнительные опции для данного каталога не определены.
  • All - определены все возможные опции, за исключением MultiViews.
  • Indexes - опция, позволяющая использовать файлы по умолчанию - при неполном наборе адреса. Список файлов по умолчанию задается директивой DirectoryIndex, которая была описана в этой статье несколько выше. При отсутствии в данном каталоге файла по умолчанию Apache выдаст браузеру содержимое каталога.
  • Includes - опция, относящаяся к функционированию SSI и разрешающая использовать директиву Include. Для полноценного функционирования SSI опция должна быть включена.
  • IncludesNOEXEC - опция, подобная предыдущей, но запрещающая использовать во включениях SSI-команды запуска CGI-скрипта и .
  • ExecCGI - опция, разрешающая в данном каталоге запуск CGI-программ.
  • FollowSymLinks - опция, позволяющая Apache переходить по символьным ссылкам в системах UNIX. То есть страничка может находиться вне основного дерева, определенного для хранения html-документов.
  • AllowOverride - директива, разрешающая переопределять параметры доступа для нижележащих каталогов. То, о чем я говорил ранее. После данной команды должен быть указан список директив, разрешенных к переопределению. Например, AllowOverride All - разрешает переопределение любых прав, AllowOverride Options - разрешает переопределение опций для каталога, AllowOverride None - запрещает переопределение прав.
  • Order allow, deny - порядок наложения прав доступа к файлу или каталогу с определенных IP-адресов или доменных имен. Может использоваться маска для отсеивания целых сегментов сети. В данном случае вначале определяются сайты, доступ к которым разрешен, а потом те, к которым запрещен. В случае команды Order deny, allow - все наоборот.
  • Allow from - список IP-адресов или доменных имен, доступ с которых разрешен. Может быть использована маска - для разрешения доступа к сайту целой группе доменов. Например, Allow from .com - разрешает доступ со всех доменов, имеющих окончание.com. Allow from all - разрешает доступ к сайту из любой точки Интернета.
  • Deny from - список IP-адресов или доменных имен, доступ с которых запрещен. Так же, как и в предыдущем случае, может быть указана группа доменов или маска IP-адресов.

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

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

AddType text/html .shtml AddHandler server-parsed .shtml

Добавьте в секцию Document type файла конфигурации две эти строчки (или просто раскомментируйте их) и скорректируйте список файлов по умолчанию, добавив туда имя index.shtml:

DirectoryIndex index.htm index.html index.shtml

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

Options Indexes Includes AllowOverride All

Больше для поддержки технологии SSI ничего не требуется, так что перейдем к конфигурированию виртуального сервера.

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

Но перед тем как конфигурировать виртуальный сервер, давайте создадим все необходимые каталоги. Я рекомендую для Интернет-проектов использовать структуру каталогов, представленную ниже. Вы можете в качестве основного выбрать любой другой диск, но я для объяснений по-прежнему буду использовать диск C.

  • c:\web\ - каталог, используемый для Интернет-проектов;
  • c:\web\project\ - каталог для нашего проекта, который мы так и назовем - project;
  • c:\web\project\website\ - здесь будут размещены странички сайта;
  • c:\web\project\cgi-bin\ - здесь могут размещаться CGI-скрипты на Perl;
  • c:\web\project\logs\ - этот каталог будет содержать лог-файлы Web-сервера.

Как уже было сказано выше, директивы, определенные в секции виртуального хоста, переопределяют глобальные значения. Но для начала нужно разобраться, каким образом определить сам виртуальный хост. Это делается при помощи одноименной директивы VirtualHost. Ниже приведен фрагмент, описывающий виртуальный сервер для нашего проекта. Добавьте его в самый конец конфигурационного файла - именно там находится секция для определения виртуальных хостов. А затем я дам подробные разъяснения по каждой строчке:

ServerAdmin [email protected] ServerName project DocumentRoot “c:/web/project/website” ScriptAlias /cgi-bin/ “c:/web/project/cgi-bin/” ErrorLog c:/web/project/logs/error.log CustomLog c:/web/project/logs/access.log common

Сделали? Прекрасно, переходим к комментариям! Итак, в первой строчке я определил IP-адрес, по которому будет осуществляться доступ к виртуальному хосту. Поскольку локальный Web-сервер привязан к IP-адресу 127.0.0.1, то логично для виртуальных хостов воспользоваться следующими по порядку IP-адресами: 127.0.0.2, 127.0.0.3, 127.0.0.4 и т.д.

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

Далее следует важная строчка, определяющая местоположение документов для нашего сайта. Формат записи полностью аналогичен базовому серверу. Точно так же переопределены алиасы к CGI-скриптам и пути к лог-файлам. Заметьте, что в качестве значений мы использовали каталоги, которые создали несколькими абзацами выше.

После добавления виртуального хоста Apache необходимо перезапустить - чтобы изменения вступили в силу. Наш виртуальный хост теперь будет доступен по адресу 127.0.0.2. Если что-либо не получается и сервер отказывается запускаться, то посмотрите, что написано в файле error.log. Скорее всего, там будет указано на ошибку в синтаксисе конфигурационного файла.

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

C:\windows\ - для машин с сиcтемой Win9x/Mе

C:\windows\system32\driver\etc\ - для машин с системой WinNT/2000

В этом каталоге также может находиться файл hosts.sam (расширение от слова sample - «пример»), который можно переименовать в hosts, если последний отсутствует. Файл hosts является обычным текстовым файлом в формате ASCII и имеет очень простой формат: каждая строчка состоит из локального IP-адреса и соответствующего ему доменного имени. Для нашего случая данный файл должен выглядеть следующим образом:

127.0.0.1 localhost apache 127.0.0.2 project

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

Для тестирования нашего виртуального сервера и сконфигурированной технологии SSI нам необходимо написать тестовую страничку. Для этого в любом текстовом редакторе создайте файл следующего содержания:

Тестирование технологии SSI

и сохраните его под именем index.shtml. Также создайте файл test.inc со следующим содержимым:

Поздравляю, технология SSI работает!

Перепишите оба файла в каталог с:\web\project\website\, который сконфигурирован как каталог для документов нашего проекта, и наберите в адресной строке браузера:

Http://project/

Если вы увидели в браузере поздравление, то все в порядке: SSI работает, а кроме того, функционирует и новое расширение по умолчанию - index.shtml. Если у вас что-то работает некорректно, еще раз внимательно перечитайте последние несколько абзацев и убедитесь, что вы все сделали правильно.

Apache установлен и настроен - переходим к инсталляции и конфигурированию PHP.

Установка PHP4 под Windows

Устанавливать будем последнюю доступную на момент написания данной статьи версию PHP, а именно PHP4.0.4pl1. Адрес, по которому ее можно скачать, указан в конце данной статьи. Архив с данным дистрибутивом PHP также расположен на компакт-диске, прилагаемом к журналу.

Дистрибутив представляет собой обычный ZIP-архив, и его достаточно распаковать в нужную папку. Руководствуясь теми же соображениями, которые я приводил при создании каталога для установки Apache, распакуем дистрибутив PHP в папку:

C:\usr\local\php4\

Перейдите в указанный каталог, найдите там файл php.ini-dist и, переименовав его в php.ini, скопируйте в корневой каталог Windows (обычно это c:\windows). Данный файл содержит все настройки, управляющие поведением PHP, и представляет собой обычный текстовый файл. Поскольку конфигурация по умолчанию вполне нам подходит, то на данный момент в этом файле ничего исправлять не нужно.

Теперь необходимо настроить Apache и PHP для совместной работы. Есть два основных способа установки PHP - как обычной CGI-программы и как модуля Apache. Мы рассмотрим оба и начнем с конфигурирования PHP как обычной CGI-программы.

Установка PHP как CGI-программы

Основную работу по настройке придется провести над файлом конфигурации Apache. Если вы уже успели закрыть файл httpd.conf, то откройте его снова и добавьте туда несколько строчек, относящихся к функционированию PHP. Вначале нам необходимо определить новый тип файла и сопоставить его с расширениями, используемыми PHP. Для этого добавляем в секцию «Document types» следующую строчку:

Теперь необходимо назначить обработчик для данного типа файлов, поэтому добавьте сразу после определения типа следующий фрагмент:

Options ExecCGI

И наконец, мы добавим в список индексных файлов значение index.php. Для этого найдите и подкорректируйте следующую строчку:

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

Тестирование технологии PHP

и сохраним его под именем test.php в каталоге с:\web\project\website\, который мы ранее определили для хранения HTML-файлов нашего проекта. Теперь, набрав в браузере строчку:

Http://project/test.php

Http://127.0.0.2/test.php,

мы должны увидеть текст поздравления. Если все в порядке, то с конфигурированием PHP можно закончить. В противном случае внимательно проверьте описанные выше директивы в файле httpd.conf. И еще не забудьте перезапустить Apache перед проверкой.

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

Установка PHP как модуля Apache

Первым делом нам необходимо найти скомпилированный модуль PHP для подключения его к Apache. Если вы ставили PHP так, как я описывал ранее, то нужный нам файл расположен по адресу:

C:\usr\local\php4\sapi\php4apache.dll

Скопируйте этот файл уровнем выше - в основной каталог PHP:

C:\usr\local\php4\

Теперь нужно настроить некоторые переменные в конфигурационном файле Apache. Как и при установке PHP в виде CGI-программы, необходимо добавить в секцию Document types определение нового типа документа:

AddType application/x-httpd-php .phtml .php

А также подкорректировать строчку, содержащую список индексных файлов:

DirectoryIndex index.html index.htm index.shtml index.php

Теперь самое важное - конфигурируем загрузку модуля. Найдите в конфигурационном файле секцию “Dynamic Shared Object (DSO) Support” и добавьте в нее следующую строчку:

LoadModule php4_module “с:/usr/local/php4/php4apache.dll”

Конфигурирование можно считать оконченным. Осталось только протестировать работоспособность PHP. Не забудьте только сначала сохранить файл и перезапустить Apache. Для тестирования можно воспользоваться уже написанным ранее скриптом test.php. Наберите в браузере строчку:

Http://project/test.php

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

И небольшое замечание для тех, кто уже конфигурировал PHP как CGI-программу, а теперь пробует установить его как модуль, не забудьте удалить из конфигурационного файла Apache секцию, связывающую обработчик типа файла с CGI-программой. Ведь в данном случае всей обработкой php-файлов занимается уже внешний модуль. Я имею в виду вот этот фрагмент:

ScriptAlias “/__php_dir__/” “c:/usr/local/php4/” Action application/x-httpd-php “/__php_dir__/php.exe” Options ExecCGI

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

КомпьютерПресс 7"2001

Apache – самый популярный веб-сервер в сети Интернет, который обслуживает больше половины активных сайтов.

В этой статье мы рассмотрим общие конфигурационные файлы и основные параметры Apache в системе Ubuntu/Debian

Примечание : Файлы Apache отличаются в зависимости от дистрибутива, потому эта статья не подходит пользователям RHEL.

Установка Apache в Ubuntu/Debian

Если веб-сервер Apache ещё не установлен, используйте команды:

sudo apt-get update
sudo apt-get install apache2

Чтобы убедиться, что установка прошла успешно, откройте в браузере IP-адрес своего сервера. На экране должна появиться приветственная страница Apache:

It works!
This is the default web page for this server.
The web server software is running but no content has been added, yet.

Иерархия файлов Apache

В Ubuntu и Debian Apache хранит конфигурационные файлы в папке /etc/apache2.

cd /etc/apache2
ls -F
apache2.conf envvars magic mods-enabled/ sites-available/
conf.d/ httpd.conf mods-available/ ports.conf sites-enabled/

Эта папка содержит ряд простых текстовых файлов и подкаталогов. Наиболее важные из них:

  • apache2.conf: главный конфигурационный файл сервера. В нём можно выполнить почти все конфигурации.
  • ports.conf: этот файл задаёт порты, которые прослушиваются виртуальными хостами. Проверьте этот файл при настройке SSL.
  • conf.d/: этот каталог управляет отдельными аспектами конфигурации Apache. К примеру, с его помощью часто определяется конфигурация SSL и стандартная политика безопасности.
  • sites-available/: этот каталог хранит все доступные виртуальные хосты, которые определяют, какой контент будет обслуживаться на сайте. Эти хосты не активны.
  • sites-enabled/: этот каталог определяет активные виртуальные хосты. Как правило, он содержит символические ссылки на файлы, определенные в каталоге sites-available.
  • mods-/: эти каталоги работают по тому же принципу, что и sites-available и sites-enabled. Они хранят модули.

Как видите, конфигурации Apache не ограничены главным конфигурационным файлом, они распределены между несколькими файлами и каталогами. Такую структуру конфигураций можно расширить при помощи новых файлов.

Конфигурационный файл Apache

Основные настройки Apache хранятся в /etc/apache2/apache2.conf.

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

В Ubuntu и Debian большая часть файла отведена под глобальные настройки, а конфигурация сервера по умолчанию и настройки виртуальных хостов обрабатываются в конце файла с помощью директивы Include.

В конце файла вы найдёте множество настроек Include. Они определяют модули, добавляют документ ports.conf, определённые файлы из каталога conf.d/ и настройки виртуальных хостов из каталога sites-enabled/.

Сосредоточимся на глобальных настройках веб-сервера Apache.

Глобальные настройки Apache

Данный раздел рассматривает важные параметры глобальных настроек Apache.

Timeout

По умолчанию этот параметр имеет значение 300. Это значит, что на выполнение каждого запроса у сервера есть максимум 300 секунд. В большинстве случаев это значение очень большое, и его рекомендуют уменьшить до 30-60 секунд.

KeepAlive

Если этот параметр имеет значение On, сервер позволит клиенту запрашивать несколько объектов в рамках одного соединения. Если параметр имеет значение Off, то каждый новый запрос будет создавать индивидуальное соединение. Такое поведение может привести к перенагрузке сайта с большим трафиком.

MaxKeepAliveRequests

Этот параметр позволяет определить максимальное количество запросов для одного соединения. Это позволяет увеличить производительность Apache.

Значение 0 позволит веб-серверу обрабатывать неограниченное количество запросов в рамках одного соединения.

KeepAliveTimeout

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

Настройки MPM

Чтобы узнать, с помощью каких модулей был скомпилирован Apache, откройте терминал и наберите:

apache2 -l
Compiled in modules:
core.c
mod_log_config.c
mod_logio.c
prefork.c
http_core.c
mod_so.c

Как видите, в данном случае веб-сервер скомпилирован с модулем prefork.c и файлом apache2.conf.

Конфигурации виртуальных хостов

Стандартный виртуальный хост находится в файле default в каталоге sites-available.

Чтобы ознакомиться с общим форматом виртуального хоста, откройте этот файл:

sudo nano /etc/apache2/sites-available/default

ServerAdmin webmaster@localhost
DocumentRoot /var/www

Options FollowSymLinks
AllowOverride None


Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all

. . .

По умолчанию виртуальный хост обрабатывает запросы на порте 80.

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

Настройки виртуального хоста высшего уровня

Эти параметры устанавливаются в разделе Virtual Host и применяются ко всему виртуальному хосту.

Параметр ServerAdmin указывает контактный адрес электронной почты, который будет использоваться в случае возникновения проблем на сервере. Этот адрес можно вставить на страницу ошибки. Для этого параметр ServerSignature (в файле /etc/apache2/conf.d/security) должен иметь значение Email.

Директива ServerName задаёт доменное имя или IP-адрес сервера. Это индивидуальный параметр каждого виртуального хоста, который может переопределить настройки по умолчанию, если он совпадает со значением ServerName.

Параметр ServerAlias позволяет добавить алиасы сайта – альтернативные имена и пути, ведущие к одному контенту. Так, например, часто устанавливается алиас домена с www.

DocumentRoot задаёт каталог, в котором веб-сервер хранит контент данного виртуального хоста. В Ubuntu для этого по умолчанию используется /var/www.

Настройки каталогов

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

Сначала виртуальный хост предлагает набор правил для каталога / (root-каталог). Этот раздел обеспечит базовую конфигурацию виртуального хоста, поскольку он относится ко всем файлам, которые обслуживаются в файловой системе.

По умолчанию Ubuntu не накладывает никаких ограничений на файловую систему. Apache рекомендует добавить несколько стандартных ограничений доступа, например:


Options FollowSymLinks
AllowOverride None
Order Deny,Allow
Deny from All

Это заблокирует доступ ко всему контенту, если в последующих определениях каталогов не указано иное.

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

Настройки Alias и ScriptAlias

Иногда перед разделом Directory идут параметры Alias и ScriptAlias.

Директива Alias позволяет добавлять к обслуживаемому контенту каталоги вне DocumentRoot.

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

К примеру, такая строка в виртуальном хосте для сайта example.com откроет доступ к контенту в каталоге /path/to/content/ при запросе example.com/content/.

Alias /content/ /path/to/content/

Помните, что открывая доступ к дополнительным каталогам, нужно устанавливать ограниченные привилегии на них.

Включение сайтов и модулей в Apache

Создав файл виртуального хоста, вы можете включить его. Для этого нужно создать символическую ссылку на файл в каталоге sites-enabled:

sudo a2ensite файл_виртуального_хоста

Включив сайт, перезапустите Apache, чтобы веб-сервер перечитал конфигурации:

sudo service apache2 reload

Чтобы отключить виртуальный хост, нужно удалить символьную ссылку из sites-enabled:

sudo a2dissite файл_виртуального_хоста

После этого нужно снова перезапустить веб-сервер:

sudo service apache2 reload

Включить и отключить модуль Apache можно с помощью следующих команд (соответственно):

a2enmod
a2dismod

Они работают так же, как и ранее упомянутые команды a2ensite иa2dissite. После включения или отключения модуля нужно перезапускать веб-сервер.

Заключение

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

Если вам нужна дополнительная информация о веб-сервере, обратитесь к

andew

2016-07-23T17:54:43+00:00

2017-08-25T04:44:37+00:00

6254

В статье представлен обзор конфигурации web сервера Apache в Ubuntu server при стандартном варианте инсталляции LAMP в Ubuntu. Приведена логика и структура организации конфигурационных файлов веб сервера. Описаны назначения основных конфигов сервера. Даны базовые Linux Ubuntu команды для манипуляции конфигурацией, настройки и управления веб сервером Apache. Рассмотрен сайт по умолчанию, который создается в процессе установки Apache. Статья вам будет полезна при настройке и администрировании своего LAMP сервера.

Как добавить поддержку PHP как обработчика сценариев в Apache на Ubuntu или Windows детально описано в статье Установка PHP7 на Windows в разделе Настройка .

Apache Default WEB Page

В процессе выполнения стандартной инсталляции web сервера Apache в Ubuntu server создается тестовый сайт, который служит для проверки работоспособности веб сервера после его установки. Этот сайт, по умолчанию, сконфигурирован так, что разрешает обращения из браузера только к файлам и каталогам внутри /var/www директории Ubuntu server. Если, по завершению инсталляции Apache , вы откроете в браузере веб страницу по адресу IP вашего web сервера, то увидите стартовую страницу сервера - Apache2 Ubuntu Default Page . Это будет, в первую очередь, говорить о том, что Apache удачно установился и работает. Эта страница физически располагается на сервере в файле /var/www/html/index.html и за ее настройку и вывод в браузере отвечает конфиг виртуального хоста по умолчанию (/etc/apache2/sites-available/000-default.conf ), который определяет виртуальный хост(сайт) для каталога /var/www/html и создается в ходе инсталляции сервера Apache . Соответственно, если вы разместите ваши файлы в этой папке, то они будут обрабатываться web сервером. Также на этой Default Page в секции Configuration Overview вы увидите схематическое представление структуры конфигурационных файлов сервера. Здесь нужно понимать, что структура, названия и расположения конфигов Apache в Ubuntu отличаются от общепринятой схемы, что сделано для удобства управления сервером. Но тут есть один нюанс, который заключается в том, что если вы ранее не были знакомы с организацией каталогов в домашней директории Apache на Ubuntu , то эта схема может вас только запутать, т.к. в ней представлены не все папки, а только каталоги, в которых располагаются символьные ссылки на активированные файлы конфигурации. Поэтому, для более правильного понимания, смотрите полную схему каталогов и фалов домашней директории web сервера Apache расположенную ниже в этой статье. Из ценного в секции веб страницы Apache - это ссылки на man Debian для команд a2enmod , a2dismod , a2ensite , a2dissite , a2enconf , a2disconf , которые используется для активации и деактивации тех или иных видов файлов конфигурации и будут детально описаны . Так же здесь сказано, что для передачи команд web серверу ( started/stopped etc. ) нужно обращаться к /etc/init.d/apache2 или к apache2ctl , что так же является особенностью сервера в Ubuntu. На сервере Ubuntu в файле /usr/share/doc/apache2/README.Debian.gz вы сможете найти полную документацию по Apache .

Домашний каталог Apache в Ubuntu

По умолчанию, домашний каталог web сервера Apache в Ubuntu находиться по /etc/apache2/ пути в файловой системе. В этом каталоге и его подкаталогах располагаются все конфигурационные файлы Apache . Изменить значение пути домашней директории web сервера можно директивой ServerRoot "/etc/apache2" в главном конфиге apache2.conf . Там, по умолчанию, директива ServerRoot закомментирована, что равносильно ее значению как "/etc/apache2" (завершающего слеша не должно быть в этой директиве! ). Значение пути домашней директории Apache (ServerRoot ) необходимо серверу, что бы он знал, в каком месте файловой системы ему следует искать свои конфигурационный файлы. Так же значение ServerRoot может подставляться сервером в некоторых директивах, ожидающих в качестве аргумента путь в файловой системе Ubuntu . Поэтому, в таких случаях, если путь указать без начального слеша, то Apache воспримет это как относительный путь по отношению к своей домашней директории. Так, например, если указать директиву AuthUserFile .htpasswd , то в таком варианте Apache будет интерпретировать указанный путь как относительный и превратит его в /etc/apache2/.htpasswd , подставив спереди значение пути своей домашней директории.

Структура домашней директории Apache в Ubuntu

В процессе стандартной установки WEB сервера Apache в Ubuntu создается следующая структура файлов и каталогов домашней директории веб сервера:

/etc/apache2/ ...............................Домашняя директория Apache в Ubuntu - ServerRoot |-- conf-available ......................директория, содержит разные конфиги | `-- charset.conf ...................файл для указания кодировок | `-- localized-error-pages.conf .....файл для задания страниц ошибок | `-- other-vhosts-access-log.conf ...файл для задания логов виртуальных хостов | `-- security.conf ..................файл для директив безопасности | `-- serve-cgi-bin.conf .............файл для директив конфигурации CGI |-- conf-enabled активированные конфиги из conf-available | `-- @ ..............................ССЫЛКИ на активированные конфиги из conf-available |-- mods-available ......................директория, содержит конфиги установленных модулей Apache | `-- ... ........................доступные конфиги модулей Apache |-- mods-enabled ........................директория, содержит ССЫЛКИ на активированные конфиги модулей из mods-available | `-- @ ..............................ССЫЛКИ на активированные конфиги модулей Apache |-- sites-available .....................директория содержит доступные конфиги виртуальных хостов | `-- 000-default.conf ...............файл виртуального хоста по умолчанию для 80 порта, создан при инсталляции Apache | `-- default-ssl.conf ...............файл виртуального хоста по умолчанию для порта 443, создан при инсталляции Apache |-- sites-enabled .......................директория, содержит ССЫЛКИ на активированные конфиги виртуальных хостов из sites-enabled | `-- @000-default.conf ..............ссылка на активированный конфиг виртуального хоста |-- apache2.conf ........................ГЛАВНЫЙ конфиг web сервера Apache в Ubuntu |-- envvars .............................файл с настройками путей для окружения Apache |-- magic ...............................Файл скриптов для модуля mime_magic (этот модуль не активен по умолчанию) |-- ports.conf ..........................файл для задания портов на которых будет принимать подключения Apache

Приведенные примеры представлены из OS Ubuntu server 16.04 LTS, однако тоже самое будет и в других версиях и дистрибутивах Ubuntu как в сервером варианте, так и в desktop варианте.

Логика организации конфигурации Apache

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

Во-первых , в Ubuntu , конфигурация Apache разбита на множество разных конфигов по их функциональному назначению. Например, директивы, задающие порт для сервера, вынесены в отдельный файл ports.conf . Директивы, ответственные за те или иные параметры безопасности сервера, вынесены в файл security.conf . Тем самым, директивы как бы сгруппированы по своему смыслу в отдельные конфигурационные файлы. Это достаточно логично и удобно при чтении, правке, активации и деактивации конфигов. При таком подходе каждый, отдельно взятый файл, становиться меньше и является узкоспециализированной частью конфигурации. Однако, нужно понимать, что такое дробление сделано исключительно для удобства и автоматизации настройки и технически, если вы захотите, вы можете записать все директивы и настройки в один файл, просто работать с таким файлом будет не так удобно.

Во-вторых : центром всей конфигурации выступает главный конфиг Apache веб сервера - apache2.conf файл. Именно этот файл в первую очередь ищет и читает web сервер Apache при старте или перезагрузке. А уже в этом файле при помощи директив Include , в месте их указания, выполняется подключение и загрузка всех остальных заданных конфигов. Таким образом, все конфигурационные файлы объединяются в единую конфигурацию web сервера и происходит это, когда Apache читает файлы по порядку их подключения, начиная с главного конфига. Из этого следует важное замечание - порядок следования директив в конфигурации Apache и, соответственно, порядок подключения файлов конфигов имеет значение, так как директивы, прочитанные сервером позднее могут переопределять директивы прочитанные им ранее. Об этом нужно помнить при настройке сервера.

В-третьих : если вы посмотрите на структуру каталогов домашней директории Apache , то увидите три пары директорий с названиями вида: префикс_каталога -available/enabled . Такая логическая структура призвана для распределения ваших конфигов на три группы , исходя из префикса названия каталога, где conf-* это каталоги для ваши прочих конфигов, mods-* это каталоги для конфигов модулей Apache и sites-* это каталоги для конфигов ваших виртуальных хостов. Вторая часть имени этих каталогов -available/-enabled логически указывает на доступные вообще и только активные в настоящий момент момент конфиги. Так в директориях *-available хранятся все доступные для использования файлы конфигурации, а уже в директориях вида *-enabled расположены символьные ссылки (ярлыки ) только на те конфиги из *-available директории, которые должны быть прочитаны web сервером при загрузке конфигурации. Apache читает только каталоги вида *-enabled , поэтому применяться только те конфиги, на которые в этих каталогах есть ссылки . Такой подход дает еще дополнительный уровень удобства тем, что позволяет вам хранить все ваши конфиги в каталогах домашней директории сервера, а задействовать только необходимые в текущий монет.

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

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

Виды контекста директив:

  • server config - глобальный уровень директивы для применения в файлах общей конфигурации сервера вне и вне контейнеров и вне файла .htaccess ;
  • virtual host - уровень виртуального хоста для применения директивы в контейнере;
  • directory - уровень каталога , директива должна использоваться внутри контейнеров , , , ;
  • .htaccess - уровень локального каталога сайта, директива может применяться в файле .

Команды управления конфигурацией

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

Команды включения/выключения конфигурации

Для активации и деактивации тех или иных конфигов в Ubuntu предоставляются команды помощники созвучные с available /enabled и префиксом каталога. Например, команда a2enconf , которую можно расшифровать как apache2-enable-conf , выполняет активацию указанного в ее аргументе конфигурационного файла из conf-available каталога путем создания на него символьной ссылки в каталоге conf-enabled . Команда a2disconf выполняет обратное действие, т.е. удаляет эту ссылку. Подобная логика применима и к остальным командам: a2enconf /a2disconf , a2enmod /a2dismod , a2ensite /a2dissite . Но вы так же можете и вручную создать/удалить символьные ссылки на нужные вам конфиги в директориях вида *-enabled .

Внимание : для вступления измений конфигов в силу нужно выполнить перезагрузку конфигурации WEB сервера Apache .

a2enconf/a2disconf

Для включения или выключения нужного конфига из каталога conf-available в конфигурацию сервера используйте команды:

Включить конфиг :

sudo a2enconf

Выключить конфиг :

sudo a2disconf

a2enmod/a2dismod

Для активации установленного модуля Apache из каталога mods-available

Включить модуль Apache

sudo a2enmod

Выключить модуль Apache

sudo a2dismod

a2ensite/a2dissite

Для активации конфигурации виртуального хоста из каталога sites-available и деактивации его используйте команды:

Включить виртуальный хост в Apache

sudo a2ensite

Выключить виртуальный хост в Apache

sudo a2dissite

Команды управления Apache

В Ubuntu , благодаря использованию переменных среды, для обращения к демону httpd web сервера можно применять вызовы вида: /etc/init.d/apache2 или apache2ctl или apache2 :

sudo /etc/init.d/apache2 sudo apache2ctl sudo apache2