Установка и настройка сервера Apache. Обзор конфигурации Apache в Ubuntu

Как настроить сервер Apache? Что такое файл httpd.conf? В этом уроке я дам ответы на эти вопросы и покажу основные директивы для настройки сервера.

Файлы конфигураци сервера

Сервер Apache имеет три конфигурационных файла: httpd.conf , srm.conf , access.conf . Обычно эти файлы находятся в каталоге /etc/httpd/conf (linux). Вся настройка сервера заключается в редактировании этих трех файлов. Рассмотрим, какие функции выполняют эти файлы:

  1. Файл httpd.conf - это основной файл конфигурации сервера. В нем содержится техническое описание работы сервера.
  2. В файле srm.conf задаются параметры документов, которые размещены на сервере.
  3. Файл access.conf содержит параметры доступа к серверу.

Файл httpd.conf

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

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

ServerType - директива, которая определяет тип сервера. По умолчанию используется значение standalone. Если вы хотите достичь максимальной производительности вашего Web-сервера, не изменяйте эту опцию.

ServerType standalone

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

ServerRoot "D:/MyFolder/usr/local/Apache"

PidFile - с помощью этой директивы указывается имя файла, в котором исходный процесс сервера будет регистрироваться. Этот файл содержит свой идентификатор процесса (PID). Данную информацию можно использовать для останова или перезапуска сервера при написании собственных сценариев. Данный файл будет создан, только если сервер Apache запущен в автономном режиме.

PidFile logs/httpd.pid

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

Timeout 300

KeepAlive - разрешает постоянные соединения, то есть такие соединения, в которых производится более одного запроса за один раз.

KeepAlive On

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

MaxKeepAliveRequests 100

KeepAliveTimeout - определяет тайм-аут для постоянного соединения.

KeepAliveTimeout 15

ServerAdmin - Задает электронный адрес вебмастера вашего Web-узла. В случае возникновения ошибок именно по этому адресу будет отправлено сообщение.

ServerAdmin root@localhos

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

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

MinSpareServers 8

MaxSpareServers – Задает максимально число неиспользуемых дочерних процессов, которые ожидают в готовности принят запрос. Опять же, если создано много дополнительных процессов, то система будет нагружаться сильно даже при минимальном количестве клиентов.

MaxSpareServers 20

ServerLimit – Эта директива устанавливает максимальное значение MaxClients. Рекомендуется устанавливать это значение равным значению в директиве Maxclients.

MaxClients - следует обратить внимание, что это самый важный параметр настройки Prefork MPM. Директива устанавливает максимальное количество параллельных процессов, создаваемых для обработки запросов. Чем больше значение, тем больше одновременно может быть обработано запросов и тем больше будет израсходовано памяти. При использовании динамических страниц с PHP на процесс может быть выделено 16-32МБ. Чтобы определить точнее необходимо через SSH-соединение выполнить команду ‘ps -ylC httpd --sort:rss ‘. На выходе мы получим табличку, где в колонке RSS и будут находится искомые значения занятой памяти, для получения значений в мегабайтах их нужно разделить на 1024. Для получения общей информации о памяти можно выполнить команду ‘free -m‘. Теперь можно рассчитать примерное значение самого параметра по любой из формул:

MaxClients ≈ (RAM – размер_загруженных_приложений)/(размер_процесса), либо
MaxClients ≈RAM* 70% / Max_размер_памяти_под_процесс.

MaxRequestsPerChild – Задает количество запросов, которые может обработать дочерний процесс до перезапуска. Значение должно быть достаточно большим, чтобы все время не создавать новые процессы. Но рекомендуется все же его ограничить (0 – неограниченно), чтобы при длительной работе Apache, в случае “утечки памяти”, процесс был принудительно завершен.

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 можно значительно расширить с помощью модулей.

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

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

Хостинг сайтов

Можно реализовать четырьмя способами:

    По умолчанию в папке /var/www/html. Доступом является http://localhost/

    Настройки основного хостинга. Например, http://localhost/phpmyadmin

    В любой папке с помощью модуля виртуальных хостов. Например, http://mysite/

    В папке пользователя public_html (модуль userdir). Например, http://localhost/~username

Установка

Для установки Apache выполните в терминале:

sudo apt-get install apache2

Настройка

Для применения изменений в настройках необходимо перезапустить демон Apache: sudo service apache2 restart

В Ubuntu конечный файл настройки (apache2.conf) расделён на несколько файлов, расположенных в разных поддиректориях. Подробней написано в комментариях файла apache2.conf .

/etc/apache2/ |-- apache2.conf | `-- ports.conf |-- mods-enabled | |-- *.load | `-- *.conf |-- conf-enabled | `-- *.conf `-- sites-enabled `-- *.conf

Настройки модулей расположены в директории /etc/apache2/mods-available . Для подключения или отключения модулей (настроек модулей) следует использовать соответствующие команды a2enmod или a2dismod . Пример подключения модуля:

sudo a2enmod < mod-name>

Свои настройки следует сохранять в файлы, расположенные в директории /etc/apache2/conf-available . Для подключения или отключения своих настроек следует использовать соответствующие команды a2enconf или a2disconf . Пример подключения файла со своими настройками:

sudo a2enconf < config-name>

Настройки виртуальных хостов следует сохранять в файлы, расположенные в директории /etc/apache2/sites-available . Для подключения виртуальных хостов следует использовать соответствующие команды a2ensite или a2dissite . Пример подключения виртуального хоста:

sudo a2ensite < site-name>

Кодировка по умолчанию

Для указания кодировки по умолчанию следует использовать директиву AddDefaultCharset в файле /etc/apache2/conf-available/charset.conf (или раскомментировать соответствующую строку):

AddDefaultCharset UTF-8

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

Файлы настроек виртуальных хостов хранятся в /etc/apache2/sites-available/*.conf . По умолчанию в Apache уже настроен один виртуальный хост. Его настройки лежат в файле 000-default.conf . Вы можете использовать этот виртуальный хост в качестве примера.

Пример настройки виртуального хоста:

#Имя хоста ServerName host1.server1 #Корневая папка хоста DocumentRoot /var/www/host1.server1 #Разрешение на перезапись всех директив при помощи.htaccess AllowOverride All

Назовите файл настройки именем вашего хоста host1.server1.conf и сохраните.

После создания файла настроек допишите в /etc/hosts имя вашего хоста:

127.0.0.1 host1.server1

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

sudo a2ensite host1.server1

Отключается хост аналогично утилитой a2dissite:

sudo a2dissite host1.server1

Модули

mod_userdir

Модуль mod_userdir позволяет использовать директории, находящиеся в домашних директориях пользователей для хранения веб страниц. По умолчанию Apache ищет запрашиваемые страницы в директории ~/public_html

mkdir ~/ public_html

Чтобы включить mod_userdir , выполните:

sudo a2enmod userdir

и добавьте необходимого пользователя в группу www-data:

sudo adduser $USER www-data

после чего перезагрузите Apache:

Страницы будут доступны по адресу http://localhost/~username, где username - имя пользователя.

CGI

Если Вы хотите запускать на сервере cgi-скрипты, подключите модуль cgi командой

sudo a2enmod cgi

По умолчанию cgi-скрипты размещаются в директории /usr/lib/cgi-bin , но вы можете разместить их где угодно, указав это в настройках своего виртуального хоста, либо глобально для всех хостов в файле /etc/apache2/conf-enabled/serve-cgi-bin.conf .

Eсли ваш сервер работает во внешней сети, то в целях безопасности настоятельно рекомендуется размещать cgi-скрипты вне корневой директории виртуального хоста

Настройка HTTPS в Apache

Веб-сервер Apache полностью поддерживает работу по HTTPS. Чтобы активировать поддержку HTTPS на уже установленном Apache, необходимо выполнить следующее.

Создание ключа и ssl-сертификата

Использование самоподписанных сертификатов хоть и защищает от пассивного прослушивания, тем не менее не гарантирует клиентам, что сервер является именно тем сервером, который им нужен. Преимуществом самоподписанных сертификатов является их бесплатность. Сертификат, подписанный компанией-сертификатором (Certificate authority), стоит денег.

Для создания ключа и сертификата вводим команду:

Openssl req -new -x509 -days 30 -keyout server.key -out server.pem

На вопрос «Enter PEM pass phrase:» отвечаем паролем, подтверждаем и запоминаем.

На все последующие вопросы отвечаем произвольно, можно просто щелкать по Enter , соглашаясь с предложенными вариантами, только на вопрос «Common Name (eg, YOUR name) :» отвечаем именем сайта, для которого создаем сертификат, например www.example.com.

После ответа на все вопросы в директории должны появиться два новых файла - server.pem (ключ) и server.crt (сертификат).

Чтобы использовать сгенерированный ключ, нужно знать пароль, введённый нами, и Apache будет спрашивать его у нас при загрузке, а к чему нам лишние вопросы от демонов? :) Поэтому снимаем пароль с ключа:

cp server.key{ ,.orig} openssl rsa -in server.key.orig -out server.key rm server.key.orig

Скопируем их в /etc/ssl и назначим файлу ключа права чтения только администратору:

sudo cp server.pem / etc/ ssl/ certs/ sudo cp server.key / etc/ ssl/ private/ sudo chmod 0600 / etc/ ssl/ private/ server.key

Настройка Apache

Для начала необходимо активировать mod_ssl:

sudo a2enmod ssl

А затем включить настройки HTTPS сайта по умолчанию:

sudo a2ensite default-ssl

Теперь необходимо отредактировать файл с настройками HTTPS сайта по умолчанию, указав в нём пути к вашим сертификатам. Сам файл называется /etc/apache2/sites-enabled/default-ssl (или /etc/apache2/sites-enabled/default-ssl.conf).

SSLEngine on

добавить строчку

SSLProtocol all -SSLv2

чтобы запретить использование устаревшего протокола SSLv2.

# Публичный сертификат сервера SSLCertificateFile /etc/ssl/certs/server.pem # Приватный ключ сервера SSLCertificateKeyFile /etc/ssl/private/server.key

Теперь просто перезагрузите Apache:

sudo service apache2 restart

И если все параметры указаны верно, ваши сайты станут доступны по HTTPS.

Протокол HTTPS работает по 443 порту, поэтому если сервер находится за шлюзом, то необходимо на нём пробросить данный порт.

Перенаправление HTTP запросов на HTTPS

Если вы хотите запретить использование HTTP , то самым разумным будет перенаправлять все HTTP запросы к страницам на их HTTPS адрес. Сделаем это с помощью mod_alias . Если он не включён - включаем:

sudo a2enmod alias sudo service apache2 restart

Затем изменяем файл /etc/apache2/sites-enabled/000-default , отвечающий за виртуальный хост по умолчанию для HTTP запросов. В этот файл добавляем директиву

Redirect / https://example.com/

При этом все настройки директорий можно удалить, поскольку по HTTP на ваши сайты всё равно будет не попасть.

Всё, теперь ещё раз перезапустите Apache и убедитесь, что при заходе по HTTP вы автоматически перенаправляетесь на HTTPS-страницу.

Установка и настройка локального web-сервера Apache, PHP, MySQL под операционную систему Windows

учебное пособие

2.3. Настройка файла конфигурации Apache

Apache по праву считается одним из лучших веб-серверов, однако заставить его правильно работать не каждому под силу. В лучших традициях *nix-программ все настройки осуществляются редактированием текстового файла httpd.conf. Значительно облегчить конфигурирование может графическая оболочка ApacheConf 3.3: http://apache-gui.com, http://www.zecos.com, [email protected]. ApacheConf 3.3 позволяет редактировать файл httpd.conf, используя графический интерфейс (GUI):

Все параметры сервера в утилите удобно разбиты на разделы (глобальные параметры, виртуальные хосты и т.п.), имеет мастера по установки SSI, PHP и множество дополнительных функций. Начинающие администраторы смогут улучшить свои знания Apache - многие директивы снабжены комментариями, имеются подсказки на русском языке. Опытным пользователям программа поможет сэкономить время при настройке. Поддерживаются версии сервера Apache 2 и 1.3. Редактировать можно как локальный файл httpd.conf, так и расположенный на FTP-сервере.

Конфигурирование Apache -- непростое занятие. К счастью, все директивы сервера подробно описаны в сопроводительной документации, включенной в дистрибутив. Существует и online-версия руководства. Она доступна по адресу http://httpd.apache.org/docs/ . Главное достоинство документации на сайте в том, что по ней можно проводить поиск, что недоступно при использовании руководства из дистрибутива.

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

Создайте в папке home папку localhost:

В папке localhost будет храниться содержимое главного хоста Apache-того, который будет доступен по адресу http://localhost.

В папке localhost следует создать папки cgi-bin и www:

В папке cgi-bin будут храниться CGI-сценарии, а в папке www - программы на PHP и разные документы. Обратите внимание CGI-сценарии - это не совсем то же самое, что PHP - скрипты. Поэтому они должны располагаться раздельно.

Для настройки Apache необходимо открыть файл D:usrApacheconfhttpd.conf при помощи Блокнота или Notepad++. Это единственный файл, который нужно настроить. Прежде чем начать редактирование данного файла рекомендуется сделать его резервную копию (например, с названием: httpd.conf рез коп исх).

Приступим к настройке.

1. Первую опцию, которую мы установим, будет путь к Apache. Измените ее следующим образом: ServerRoot "/usr/Apache"

3. Директиву BindAddress использовать не рекомендуется, поэтому оставьте ее закомментированной:

4. Раскомметируйте строку подключения модуля: LoadModule rewrite_module modules/mod_rewrite.so

5. В конец списка загружаемых модулей добавьте строку: LoadModule php4_module "/usr/php/sapi/php4apache.dll"

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

6. После подключения модуля PHP добавьте две строчки:

#For the module mod_rewrite

# Reconstruction of the complete module list from all available modules

# (static and shared ones) to achieve correct module execution order.

AddModule mod_setenvif.c

поместите перед словами:

# Dynamic Shared Object (DSO) Support

Перейдем ко второму разделу файла httpd.conf - конфигурация сервера по умолчанию.

8. В опции ServerAdmin следует указать адрес, на который следует направлять сообщения в случаи неправильной работы сервера:

ServerAdmin [email protected]

9. Опция ServerName задает имя сервера:

ServerName localhost

10. Опция DocumentRoot указывает каталог, в котором расположены web-страницы: DocumentRoot "/home"

11. Опция и используется для применения опций к конкретному каталогу. Замените следующий блок:

# doesnt give it to you.

Options Indexes FollowSymLinks MultiViews

# "AuthConfig", and "Limit"

AllowOverride None

Order allow,deny

# This may also be "None", "All", or any combination of "Indexes",

# "Includes", "FollowSymLinks", "ExecCGI", or "MultiViews".

# Note that "MultiViews" must be named *explicitly* --- "Options All"

# doesnt give it to you.

Options Indexes FollowSymLinks Includes MultiViews

# This controls which options the .htaccess files in directories can

# override. Can also be "All", or any combination of "Options", "FileInfo",

# "AuthConfig", and "Limit"

AllowOverride All

# Controls who can get stuff from this server.

Order allow,deny

В этом блоке была настроена папку home. Давайте разберем значения опций.

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

Indexes - если запрошенный URL соответствует папке, и в этой папке нет ничего соответствующего DirectoryIndex (например, index.html), то сервер выведет содержание данной папки;

FollowSymLinks - разрешить переходы по символическим ссылкам (создаваемым командой ln);

Includes - разрешить SSI (Server Side Includes);

MultiViews - разрешить поддержку многих языков.

Директива AllowOverride позволяет отменять, при помощи файлов.htaccess, ранее установленные директивы. Если данная директива установлена в None, то файл.htaccess игнорируется, если же в All, то все директивы.htaccess файла будут допускаться.

Директивы Order allow,deny и Allow from all определяют, кто может получать, что бы то ни было с данного сервера.

12. Закомментируйте следующий модуль:

#

# UserDir "D:/usr/Apache/users/"

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

14. В блоке:

Order allow,deny

16. Если вы желаете, чтобы в сообщениях об ошибке высвечивался e-mail администратора, то замените в следующей опции On на Email:

ServerSignature EMail

17. Находим такую строку:

ScriptAlias /cgi-bin/ "D:/usr/Apache/cgi-bin/"

и заменяем ее другой строкой: ScriptAlias /cgi-bin/ "/home/cgi-bin/"

Этот каталог cgi-bin, в котором должны располагаться ваши CGI - скрипты. Он был создан в директории home.

18. Установите следующие опции для папки cgi-bin:

AllowOverride All

19. Ищем строку AddType application/x-tar .tgz, она расположена после настроек приоритета языков. Перед этой строкой необходимо добавить блок подключения php:

#AddType application/x-httpd-php phtml php3 php

#ScriptAlias /__php_dir__/ "/usr/php/"

#Action application/x-httpd-php "/__php_dir__/php.exe"

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

Во второй строке связывается настоящий путь к PHP и псевдоним, а в третьей указывается файл интерпретатора.

Эти строки пока следует закомментировать, иначе могут возникнуть ошибки. После настройки PHP, комментарии нужно будет снять.

20. Далее настраивают SSI -- очень мощный и в то же время очень простой инструмент, способный помочь при создании и поддержке сайта. С помощью SSI-директив, их еще называют SSI-вставками, можно включать в страницу другие файлы, результаты работы программ, значения системных переменных и пр. Преимущества этой технологии особенно проявляются, когда нужно поддерживать достаточно большой по объему сайт, который имеет определенную структуру и повторяющиеся по всему сайту элементы. Для подключения SSI находят строки, снимают с них комментарии и изменяют, как показано ниже: AddHandler cgi-script .cgi

Затем надо раскомметировать и изменить:

AddType text/html .shtml .shtm

AddHandler server-parsed .shtml .shtm

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

И, естественно, нужно включить сам "механизм" вложения, а для этого добавить к команде Options слово Includes. Тогда строка с командой Options может принять вид: Options Indexes FollowSymLinks Includes

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

21. Для использования карт изображения и карт типов раскомметируйте следующие строки:

AddHandler imap-file map

AddHandler type-map var

22. В самый конец файла добавьте строку:

Include conf/vhosts.conf

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

23. Создайте в папке D:usrApacheconf файл vhosts.conf:

Допустим, что Вам придется работать с несколькими серверами. Разработчики Apache предусмотрели и этот вариант. При настройке Apache, изначально сделано так, чтобы с появлением нового сервера на Вашем компьютере его было легко подключить и настроить. Для этого при настройке Apache создают файл vhosts.conf и в конец файла httpd.conf добавляют строчку «Include conf/vhosts.conf», которая подключает этот файл.

Добавление нового сервера подробно описано в разделе 2.4.

24. Теперь перезапустите Apache: Пуск > Все программы > Apache HTTP Server > Control Apache Server > Restart.

Если все сделано верно, то откроется консольное окно:

В консольном окне сообщается, что Apache запущен, модуль PHP 4.3.9RC3 для правильной работы Apache с PHP установлен и работает.

Если же имеются ошибки, то в течение 30 секунд оно будет запущено и в нем будет написана ошибка, по которой Apache не может быть запущен, например:

Сообщается, что на линии 327 файла httpd.conf имеется ошибка. Ошибка часто возникает, если забыли скопировать файл php4ts.dll в каталог C:WindowsSystem32.

Ошибка может возникнуть также, если забыли создать файл vhosts.conf и хотя бы один виртуальный хост.

Автоматизированная настройка TCP/IP, BOOTP. Динамическая настройка (DHCP)

Протокол ВООТР проектировался для того, чтобы протоколы IP (Internet Protocol) и UDP (User Datagram Protocol) могли использоваться для передачи информации компьютерам, желающими настроить свою конфигурацию. Компьютер, сгенерировавший запрос...

Гнучка система інформаційної підтримки підвищення кваліфікації персоналу ДП № 9

Apache HTTP-сервер - відкритий веб-сервер Інтернет для UNIX-подібних, Microsoft Windows, Novell NetWare та інших операційних систем. На сьогодні є найуживанішим Веб сервером мережі Інтернет...

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

Инсталляция, настройка и сопровождение Web-сервера Linux

ServerType Для этой директивы значением по умолчанию является ServerType standalone. Серверы, работающие в автономном режиме (standalone), запускаются из загрузочных сценариев при запуске системы...

Файл конфигурации представляет собой XML - файл, в котором хранятся данные, необходимые для подсветки синтаксиса. Файл состоит из корневого элемента language, который в свою очередь содержит 3 дочерних элемента: style, keywords и types...

Написание текстового редактора с подсветкой синтаксиса

Для начала создадим 3 переменных типа xmlChar: xmlChar *uri; // используется для хранения атрибутов xmlChar *color; // используется для хранения значения цвета xmlChar *font; // используется для хранения значения шрифта Загрузка данных из XML файла происходит в функции...

Понятие и использование Network File System

В простейшем случае, файл /etc/exports является единственным файлом, требующим редактирования для настройки NFS-сервера...

Представление графических данных. Преобразование форматов. Использование специальных эффектов

Рисунок 2.1 - Схема открытия файла. На рисунке 2.2 приведен алгоритм открытия файла формата TGA. Рассмотрим его подробнее. Сначала происходит открытие файла с именем ИмяФайла. tga...

Проект разработки HTTP-сервера

Чтобы запустить установочный файл (install.php), необходимо зайти в Moodle используя веб-броузер или просто наберите http://localhost/install.php в строке адреса (Инсталлер будет использовать cookie. Если Вы увидете всплывающее окно с сообщением об этом...

Разработка Web-сайта для кафедры "Вычислительная техника и информационные технологии"

Самый распространенный Web-сервер в мире - это Apache. По данным компании Netcraft, общее число Web-узлов, работающих под его управлением, к концу 1998 г. достигло 2 млн. (55% общего числа узлов) и постоянно растет...

Разработка информационной модели взаимодействия пенсионного фонда с плательщиками взносов

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

Разработка системы сбора и обработки данных

Для моделирования системы в среде MAX+plusII необходимо разработать файл конфигурации на языке AHDL. В него войдут такие мега-функции, как: lpm_counter - счетчик, необходимый для деления частоты...

Файл конфигурации представляет собой XML-файл, в котором хранятся данные, необходимые для подсветки синтаксиса. Файл состоит из корневого элемента language, который в свою очередь содержит 3 дочерних элемента: style, keywords и types...

Разработка текстового редактора с подсветкой синтаксиса языков программирования

Для начала создадим 3 переменных типа xmlChar: xmlChar *uri;//используется для хранения атрибутов xmlChar *color;//используется для хранения значения цвета xmlChar *font;//используется для хранения значения шрифта Загрузка данных из XML файла происходит в функции...