Web сервер Apache 1.3 с поддержкой php5 и mod_perl (русский перевод httpd.conf)


Я понимаю, что материала на эту тему в Сети хоть отбавляй, но я хочу написать свою публикацию, изложить свои мысли и идеи. Просто записать для себя то, что знаю. Поэтому предлагаю всем желающим ознакомиться с моим вариантом создания виртуального веб хостинга на основе операционной системы FreeBSD с использованием известного всем программного обеспечения.
Краткое оглавление
Установка Apache 1.3
Конфигурация Apache. Русский перевод httpd.conf
Подключение модулей PHP5 и mod_perl

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

Установка Apache 1.3

[В начало]

В первую очередь, следует установить веб сервер. Для этих целей задействуем наиболее распространенное программное обеспечение - Apache, проекта Apache Software Foundation. Если взглянуть на статистику использования веб серверов с августа 1995 года по январь 2008-го, можно увидеть, что Apache используется почти на 50% серверов по всему миру.

Apache по традиции, как открытое программное обеспечение, входит в стандартную коллекцию портов FreeBSD. Существует два направления разработки проекта: Apache 1.x и Apache 2. Во втором случае используется более современный вариант, однако я использую на своих машинах проверенную временем первую ветку. На сегодняшний день последняя актуальная версия 1.3.39_2.
root# cd /usr/ports
root# make search name="apache-1.3"
Port: ru-apache-1.3.37+30.23_1
Path: /usr/ports/russian/apache13
Info: The extremely popular Apache http server. Very fast, very clean
Maint: lev@FreeBSD.org
B-deps: perl-5.8.8_1
R-deps: perl-5.8.8_1
WWW: http://apache.lexa.ru/

Port: apache-1.3.39_2
Path: /usr/ports/www/apache13
Info: The extremely popular Apache http server. Very fast, very clean
Maint: ache@freebsd.org
B-deps: expat-2.0.0_1 perl-5.8.8_1
R-deps: expat-2.0.0_1 perl-5.8.8_1
WWW: http://httpd.apache.org/

Первый вариант я не жалую. Это проект под названием "русский Apache" и попробовав его однажды года три назад я к нему больше не вернулся. Даже сейчас и не вспомню точно в чем именно была проблема, но связана она была с неправильно отображаемыми кодировками. Как обстоят дела нынче я не знаю. Мне это неинтересно. Если Вас этот проект заинтересовал - попробуйте. Второй вариант - обычный Апач. И его то мы и задействуем.

Собираем из исходных кодов.
root# cd /usr/ports/www/apache13
root# make install clean

Cписок дополнительных опций для сборки:
# Подключить возможности suEXEC?
# По-умолчанию "no". Данная возможность дает запускать пользовательские CGI скрипты от имени
# пользователей, которым они принадлежат. Может пригодиться в целях безопасности.
WITH_APACHE_SUEXEC=yes

# Указать имя пользователя, которому будет позволено использовать возможности suEXEC.
# По-умолчанию, это пользователь www
APACHE_SUEXEC_CALLER=user

# Указать корневую папку в которой можно будет применить возможности suEXEC.
# По-умолчанию это /usr/local/www/data
APACHE_SUEXEC_DOCROOT=dir

# Указать путь к лог-файлу, в котором будет отображаться работа suEXEC.
# По дефолту /var/log/httpd-suexec.log
APACHE_SUEXEC_LOG=file

# Пользовательские каталоги для работы suEXEC. По-умолчанию public_html
APACHE_SUEXEC_USERDIR=dir

# Минимальный идентификатор системного пользователя для которого будет разрешено использование suEXEC.
# По-умолчанию, 1000
APACHE_SUEXEC_UIDMIN=uid

# Аналогично - група. По-умолчанию 1000
APACHE_SUEXEC_GIDMIN=gid

# "Безопасные" пути suEXEC. По умолчанию
# /bin:/usr/bin:/usr/local/bin
APACHE_SUEXEC_SAFE_PATH=path

# Маска файлов по-умолчанию для suEXEC скриптов.
# По-умолчанию совпадает с переменными процесса httpd
APACHE_SUEXEC_UMASK=umask

# Путь к каталогу для документов веб-сервера
# По-умолчанию традиционно /usr/local/www
APACHE_DATADIR=path

# Корневой каталог для cgi-bin скриптов
# По-умолчанию традиционно /usr/local/www/cgibin
APACHE_CGIBIN_ROOT=path

# Корневой каталог для документов.
# По-умолчанию /usr/local/www/data
APACHE_DOCUMENT_ROOT=path

# Установить путь к каталогу с изменяющимися
# данными. Вобщем то тут речь идет о
# лог-файлах, потому что в каталоге var именно
# логи и обычно хранятся.
APACHE_LOCALSTATE_DIR=path

# Путь к папке с логами. По-умолчанию
# прописывается путь /var/log
APACHE_LOGFILE_DIR=path

# Максимальное число процессов httpd
# По-умолчанию 512
APACHE_HARD_SERVER_LIMIT=nr

# Максимальное число одновременно открытых файлов. По-умолчанию 1024
APACHE_FD_SETSIZE=nr

# Можно заставить Апаче буферизировать логи, тоесть держать их какое-то время в памяти,
# перед тем как записать на диск в файл. При большом количестве запущенных дочерних
# процессов (children), включение опции может обернуться ошибочной статистикой сайтов на
# основе анализа логов веб сервера. Потому, по-умолчанию значение "no"
APACHE_BUFFERED_LOGS=yes

# CFLAGS оптимизация. Включение данной опции может породить "битый код" (дословный перевод
# с английского), а потому не рекомендуется на рабочих серверах. По дефолту выключено.
WITH_APACHE_PERF_TUNING=yes

# Создавать "жесткую" ссылку на старый лог файл
WITH_APACHE_LATESTLOG=yes

# Поддержка IPv6. По-умолчанию "no".
WITH_APACHE_IPV6=no

# Подключение модуля mod_snmp - по дефолту нет.
WITH_APACHE_MODSNMP=yes

# Подключение модуля mod_accel - по дефолту нет.
WITH_APACHE_MODACCEL=yes

# Подключение модуля mod_deflate - по дефолту нет.
WITH_APACHE_MODDEFLATE=yes

Мы пока что никакие дополнительные опции выбирать не будем. А кроме того, многие из этих опций можно будет переопределить в последствии в конфигурационном файле. Тем не менее, если нам нужна, например, поддержка suexec, то в файл /etc/make.conf добавим перед компиляцией такие строки:
# Если следующей строчки в Вашем /etc/make.conf
# нет, добавьте ее.
PORTSDIR?= /usr/ports

.if ${.CURDIR} == ${PORTSDIR}/www/apache13
WITH_APACHE_SUEXEC=yes
APACHE_SUEXEC_CALLER=www
APACHE_SUEXEC_DOCROOT=/usr/local/www
APACHE_SUEXEC_LOG=/var/log/apache/httpd-suexec.log
APACHE_SUEXEC_USERDIR="/usr/local/www/users/*/*/cgi-bin"
APACHE_SUEXEC_UIDMIN=1001
APACHE_SUEXEC_GIDMIN=1001

# Можно дописать еще такие строки:
APACHE_HARD_SERVER_LIMIT=yes
WITH_APACHE_PERF_TUNING=yes
APACHE_HARD_SERVER_LIMIT=1024
.endif

Теперь можно сказать make install clean. Дожидаемся окончания процесса установки и приступаем к редактированию основного конфигурационного файла Apache, который называется httpd.conf и находится в папке по-умолчанию /usr/local/etc/apache. Точнее сказать, в этой папке находится файл httpd.conf-dist который Вам следует переименовать в httpd.conf.

Обновлено: 13.03.2015