apache web server

Для работы DSPAM WebUI, PostfixAdmin и web-интерфейса RoundCube нам потребуется web-сервер с поддержкой suexec и MySQL аутентификации (для DSPAM WebUI), и поддержкой PHP (для RoundCube и PostfixAdmin). В качестве web-сервера мы будем использовать apache 1.3, собранный с поддержкой suexec и модули к нему: mod_auth_mysql_another и mod_php. Использование apache версии 1.3 связано исключительно с личной привычкой, которая выработалась на основании рекомендаций человека имеющего опыт работы с высоко нагруженными системами. По большому счету в данной задаче без разницы какую версию использовать, при желании можно использовать и ветку 2.х, но просто так сложилось, что 1.3 мне ближе, о ней и пойдет речь.

Приступим к установке apache с поддержкой suexec. Включим поддержку suexec и ограничим ее деревом каталогов, где будут находится скрипты. Для этого добавим в /etc/make.conf:

WITH_APACHE_SUEXEC=yes
APACHE_SUEXEC_DOCROOT=/home

Собираем порт:

# cd /usr/ports/www/apache13
# make install clean

Устанавливаем mod_auth_mysql_another:

# cd /usr/ports/www/mod_auth_mysql_another
# make install clean

Устанавливаем mod_php:

# cd /usr/ports/lang/php5
# make config

Отмечаем требуемые опции:

[X] CLI        Build CLI version
[X] CGI        Build CGI version
[X] APACHE     Build Apache module
[Х] SUHOSIN    Enable Suhosin protection system (not for jails)

И собираем порт:

# make install clean

Теперь соберем некоторые расширения PHP, которые понадобятся нашим web-интерфейсам:

# cd /usr/ports/lang/php5-extensions
# make config

Отмечаем следующие опции:

[X] IMAP        IMAP support
[X] MBSTRING    multibyte string support
[X] MYSQL       MySQL database support
[X] SESSION     session support

Собираем порт:

# make install clean

Разрешаем запуск apache, для этого добавляем в /etc/rc.conf:

apache_enable="YES"

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

# mkdir /usr/local/etc/apache/vhosts

Теперь можно заняться конфигурированием apache. Редактируем файл /usr/local/etc/apache/httpd.conf:

#
# Раздел 1: Общие настройки
#
ServerType standalone
ServerRoot "/usr/local"
PidFile /var/run/httpd.pid
ScoreBoardFile /var/run/httpd.scoreboard
Timeout 300
KeepAlive Off
MinSpareServers 5
MaxSpareServers 10
StartServers 5
MaxClients 150
MaxRequestsPerChild 100

# Модули. Лишние модули закоментированы.
# Если они Вам потребуются - можете раскоментировать.
LoadModule config_log_module  libexec/apache/mod_log_config.so
LoadModule mime_module        libexec/apache/mod_mime.so
LoadModule dir_module         libexec/apache/mod_dir.so
LoadModule cgi_module         libexec/apache/mod_cgi.so
LoadModule access_module      libexec/apache/mod_access.so
LoadModule auth_module        libexec/apache/mod_auth.so
LoadModule unique_id_module   libexec/apache/mod_unique_id.so
LoadModule mysql_auth_module  libexec/apache/mod_auth_mysql.so
LoadModule php5_module        libexec/apache/libphp5.so
#LoadModule mmap_static_module libexec/apache/mod_mmap_static.so
#LoadModule vhost_alias_module libexec/apache/mod_vhost_alias.so
#LoadModule env_module         libexec/apache/mod_env.so
#LoadModule mime_magic_module  libexec/apache/mod_mime_magic.so
#LoadModule negotiation_module libexec/apache/mod_negotiation.so
#LoadModule status_module      libexec/apache/mod_status.so
#LoadModule info_module        libexec/apache/mod_info.so
#LoadModule includes_module    libexec/apache/mod_include.so
#LoadModule autoindex_module   libexec/apache/mod_autoindex.so
#LoadModule asis_module        libexec/apache/mod_asis.so
#LoadModule imap_module        libexec/apache/mod_imap.so
#LoadModule action_module      libexec/apache/mod_actions.so
#LoadModule speling_module     libexec/apache/mod_speling.so
#LoadModule userdir_module     libexec/apache/mod_userdir.so
#LoadModule alias_module       libexec/apache/mod_alias.so
#LoadModule rewrite_module     libexec/apache/mod_rewrite.so
#LoadModule anon_auth_module   libexec/apache/mod_auth_anon.so
#LoadModule db_auth_module     libexec/apache/mod_auth_db.so
#LoadModule digest_module      libexec/apache/mod_digest.so
#LoadModule proxy_module       libexec/apache/libproxy.so
#LoadModule cern_meta_module   libexec/apache/mod_cern_meta.so
#LoadModule expires_module     libexec/apache/mod_expires.so
#LoadModule headers_module     libexec/apache/mod_headers.so
#LoadModule usertrack_module   libexec/apache/mod_usertrack.so
#LoadModule log_forensic_module libexec/apache/mod_log_forensic.so
#LoadModule setenvif_module    libexec/apache/mod_setenvif.so

ClearModuleList
AddModule mod_log_config.c
AddModule mod_mime.c
AddModule mod_dir.c
AddModule mod_cgi.c
AddModule mod_access.c
AddModule mod_auth.c
AddModule mod_unique_id.c
AddModule mod_so.c
AddModule mod_auth_mysql.c
AddModule mod_php5.c
#AddModule mod_mmap_static.c
#AddModule mod_vhost_alias.c
#AddModule mod_env.c
#AddModule mod_mime_magic.c
#AddModule mod_negotiation.c
#AddModule mod_status.c
#AddModule mod_info.c
#AddModule mod_include.c
#AddModule mod_autoindex.c
#AddModule mod_asis.c
#AddModule mod_imap.c
#AddModule mod_actions.c
#AddModule mod_speling.c
#AddModule mod_userdir.c
#AddModule mod_alias.c
#AddModule mod_rewrite.c
#AddModule mod_auth_anon.c
#AddModule mod_auth_db.c
#AddModule mod_digest.c
#AddModule mod_proxy.c
#AddModule mod_cern_meta.c
#AddModule mod_expires.c
#AddModule mod_headers.c
#AddModule mod_usertrack.c
#AddModule mod_log_forensic.c
#AddModule mod_setenvif.c

#
# Раздел 2: Настройки по-умолчанию для главного хоста и вирт. хостов.
#
Port 80
User www
Group www
ServerAdmin [email protected]
DocumentRoot "/usr/local/www/data"
<Directory />
    Options FollowSymLinks
    AllowOverride All
</Directory>
DirectoryIndex index.html index.php index.cgi
AccessFileName .htaccess
<Files ~ "^.ht">
    Order allow,deny
    Deny from all
    Satisfy All
</Files>
UseCanonicalName On
TypesConfig /usr/local/etc/apache/mime.types
DefaultType text/plain
HostnameLookups Off
ServerSignature On
ErrorLog /var/log/httpd-error.log

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
AddType application/x-tar .tgz
AddEncoding x-compress .Z
AddEncoding x-gzip .gz .tgz
AddHandler cgi-script .cgi

LogLevel warn
LogFormat "%h %l %u %t "%r" %>;s %b "%{Referer}i" "%{User-Agent}i"" combined
LogFormat "%h %l %u %t "%r" %>;s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
CustomLog /var/log/httpd-access.log combined

#
# Раздел 3: Виртуальные хосты
#
NameVirtualHost *:80
Include /usr/local/etc/apache/vhosts/*.conf


Дополнительные записи: