Руководство FreeBSD
Пред. | Глава 25. Сетевые серверы | След.

# 25.7. Apache HTTP сервер

Предоставил Murray Stokely.

## 25.7.1. Обзор

FreeBSD используется в качестве платформы для многих из самых нагруженных серверов в мире. Большинство серверов в интернет используют Apache HTTP сервер. Пакеты Apache должны быть включены в поставку FreeBSD. Если вы не установили их во вместе с системой, воспользуйтесь портами `www/apache13` или `www/apache20`.

Как только Apache был успешно установлен, его необходимо настроить.

> Замечание: В этом разделе рассказывается о версии 1.3.X Apache HTTP сервера, поскольку эта версия наиболее широко используется в FreeBSD. Apache 2.X содержит много новых технологий, но здесь они не обсуждаются. За дополнительной информацией о Apache 2.X, обращайтесь к http://httpd.apache.org/.

## 25.7.2. Настройка

В FreeBSD основной файл настройки Apache HTTP сервера устанавливается в `/usr/local/etc/apache/httpd.conf`. Это обычный текстовый UNIX® файл настройки с строками комментариев, начинающимися с символа `#`. Исчерпывающее описание всех возможных параметров настройки находится за пределом рассмотрения этой книги, поэтому здесь будут описаны только наиболее часто модифицируемые директивы.

`ServerRoot "/usr/local"`

  Указывает верхний каталог установки Apache по умолчанию. Бинарные файлы находятся в `bin` и `sbin`, подкаталоги расположены относительно корневого каталога сервера, файлы настройки находятся в `etc/apache`.

`ServerAdmin you@your.address`

  Адрес, на который должны будут отправляться сообщения о проблемах с сервером. Этот адрес выводится на некоторые генерируемые сервером страницы, например с сообщениями об ошибках.

`ServerName www.example.com`

  `ServerName` позволяет вам устанавливать имя хоста, которое отправляется обратно клиентам, если оно отличается от того, с которым настроен хост (например, использование `www` вместо реального имени хоста).

`DocumentRoot "/usr/local/www/data"`

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

Хорошей идеей будет сделать резервные копии настроек Apache перед внесением изменений. Как только вы будете удовлетворены первоначальной настройкой, можно запускать Apache.

## 25.7.3. Запуск Apache

Apache не запускается из inetd, как это делают многие другие сетевые серверы. Он настроен для автономного запуска, чтобы обеспечивать большую производительность при обработке HTTP запросов от браузеров клиентов. Для упрощения запуска, остановки и перезапуска сервера существует shell скрипт. Для запуска Apache в первый раз просто выполните:

    # /usr/local/sbin/apachectl start

Вы можете остановить сервер в любой момент, выполнив:

    # /usr/local/sbin/apachectl stop

После внесения любых изменений в файл настроек, вам потребуется перезапустить сервер:

    # /usr/local/sbin/apachectl restart

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

    # /usr/local/sbin/apachectl graceful

Дополнительная информация находится на странице справочного руководства apachectl(8).

Для запуска Apache при старте системы, добавьте в `/etc/rc.conf` следующую строку:

    apache_enable="YES"

Если вы хотите передать программе Apache `httpd` дополнительные параметры командной при загрузке системы, они могут быть помещены в дополнительную строку `rc.conf`:

    apache_flags=""

Теперь, когда веб сервер запущен, вы можете просмотреть свой веб сайт, задав в строке браузера адрес `http://localhost/`. По умолчанию отображается веб страница `/usr/local/www/data/index.html`.

## 25.7.4. Виртуальный хостинг

Apache поддерживает два различных типа виртуального хостинга (Virtual Hosting). Первый метод основан на именах (Name-based Virtual Hosting). Он использует полученные от клиента заголовки HTTP/1.1 для определения имени хоста. Это позволяет многим различным доменам использовать один и тот же IP адрес.

Для настройки Apache на использование этого типа хостинга добавьте в `httpd.conf` запись подобную следующей:

    NameVirtualHost *

Если веб сервер назывался `www.domain.tld` и вы хотите настроить виртуальный домен для `www.someotherdomain.tld`, необходимо добавить в `httpd.conf` следующие записи:

    <VirtualHost *>
    ServerName www.domain.tld
    DocumentRoot /www/domain.tld
    </VirtualHost>

    <VirtualHost *>
    ServerName www.someotherdomain.tld
    DocumentRoot /www/someotherdomain.tld
    </VirtualHost>

Замените адреса и пути к документам на те, что вы будете использовать.

За дополнительной информацией по настройке виртуальных хостов обращайтесь к официальной документации Apache: http://httpd.apache.org/docs/vhosts/.

## 25.7.5. Модули Apache

Существуют множество различных модулей Apache, которые добавляют функциональность к основному серверу. Коллекция портов FreeBSD предоставляет простой способ установки Apache с некоторыми наиболее популярными дополнительными модулями.

### 25.7.5.1. mod_ssl

Модуль mod_ssl использует библиотеку OpenSSL для сильной криптографии через протоколы Secure Sockets Layer (SSL v2/v3) и Transport Layer Security (TLS v1). Этот модуль содержит все необходимое для запроса подписанного сертификата из центра сертификации для защищенного веб сервера на FreeBSD.

Если вы еще не установили Apache, версия Apache 1.3.X с mod_ssl может быть установлена через порт `www/apache13-modssl`. Поддержка SSL также доступна для Apache 2.X через порт `www/apache20`, где она включена по умолчанию.

### 25.7.5.2. Построение динамических сайтов при помощи Perl и PHP

В последние годы все большее число компаний обращает внимание на Интернет как площадку для ведения и расширения бизнеса. Среди прочего, этот процесс подчеркивает потребность в интерактивном содержимом сайтов. Некоторые компании, такие как Microsoft®, представляют свои закрытые решения; сообщество разработчиков открытых программ отвечает на вызов. Два возможных пути решения проблемы динамического контента -- mod_perl и mod_php.

#### 25.7.5.2.1. mod_perl

Проект интеграции Apache/Perl объединяет мощь языка программирования Perl и HTTP сервера Apache. С модулем mod_perl возможно написание модулей Apache полностью на Perl. Кроме того, постоянно запущенный встроенный в сервер интерпретатор позволяет не тратить ресурсы на запуск внешнего интерпретатора и время на запуск Perl.

mod_perl можно использовать различными способами. Помните, что mod_perl 1.0 работает только с Apache 1.3, тогда как mod_perl 2.0 совместим только с Apache 2. mod_perl 1.0 доступен как порт `www/mod_perl`, а также в виде статически скомпилированной версии в `www/apache13-modperl`. mod_perl 2.0 доступен как `www/mod_perl2`.

#### 25.7.5.2.2. mod_php

Написал Tom Rhodes.

PHP, также известный как ''Препроцессор гипертекста'' (''Hypertext Preprocessor''), -- это скриптовый язык общего назначения, в основном предназначенный для веб разработки. Этот язык может быть встроен в HTML, его синтаксис заимствован из C, Java™ и Perl, и он позволяет веб разработчикам быстро писать динамически генерируемые страницы.

Добавление поддержки PHP5 к веб серверу Apache производится путем установки порта `www/mod_php5`.

Этот порт устанавливает и настраивает модули, необходимые для поддержки динамических PHP веб страниц. Убедитесь, что в файл `/usr/local/etc/apache/httpd.conf` были добавлены следующие секции:

    LoadModule php5_module        libexec/apache/libphp5.so

    AddModule mod_php5.c
        <IfModule mod_php5.c>
            DirectoryIndex index.php index.html
        </IfModule>
        <IfModule mod_php5.c>
            AddType application/x-httpd-php .php
            AddType application/x-httpd-php-source .phps
        </IfModule>

Для загрузки модуля PHP после этого просто вызовите команду `apachectl` с параметром graceful:

    # apachectl graceful

Поддержка PHP в FreeBSD построена по модульному принципу, поэтому базовая установка обладает очень ограниченной функциональностью. Дополнительная функциональность может быть легко добавлена при помощи порта `lang/php5-extensions`, управляющего набором расширений PHP через меню, либо просто путем установки дополнительных портов.

Например, для добавления поддержки MySQL к PHP5, просто установите порт `databases/php5-mysql`.

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

    # apachectl graceful

Пред. | Начало | След.
Domain Name System (DNS) | Уровень выше | Файл сервер и печать для Microsoft® Windows® клиентов (Samba)

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам, связанным с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам, связанным с русским переводом документации, пишите в рассылку <frdp@FreeBSD.org.ua>.
Информация по подписке на эту рассылку находится на сайте проекта перевода.