DTop CMS - система управления контентом
Текущая версия: 3.4.1



© 2002-2013

Статья опубликована: 2012.12.23

FreeBSD, установка и настройка веб-сервера Apache версии 2.2 с mpm itk


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

На этой страничке описано как установить и настроить веб-сервер Apache, работающий на mpm (мультипроцессорном модуле) itk с использованием виртуалхостов.

  • Использованные версии ПО:
    # uname -sr
    FreeBSD 9.1-PRERELEASE
    # pkg_info | grep apache
    apache22-itk-mpm-2.2.23_3 Version 2.2.x of Apache web server with itk MPM.
    

  • Предварительная подготовка
    Проверяем наличие или добавляем строки в /etc/make.conf:
    PORTSDIR?=/usr/ports
    
    .if ${.CURDIR} == ${PORTSDIR}/www/apache22-itk-mpm
    THREADS=on
    THREADS_MODULES=on
    .endif
    

  • Установка
    # cd /usr/ports/www/apache22-itk-mpm
    # make install clean
    
    Конфигурация во время установки
    [ ] AUTH_BASIC            mod_auth_basic
    [ ] AUTH_DIGEST           mod_auth_digest
    [ ] AUTHN_ALIAS           mod_authn_alias
    [ ] AUTHN_ANON            mod_authn_anon
    [ ] AUTHN_DBD             mod_authn_dbd
    [ ] AUTHN_DBM             mod_authn_dbm
    [ ] AUTHN_DEFAULT         mod_authn_default
    [ ] AUTHN_FILE            mod_authn_file
    [ ] AUTHZ_DBM             mod_authz_dbm
    [ ] AUTHZ_DEFAULT         mod_authz_default
    [ ] AUTHZ_GROUPFILE       mod_authz_groupfile
    [*] AUTHZ_HOST            mod_authz_host
    [ ] AUTHZ_OWNER           mod_authz_owner
    [ ] AUTHZ_USER            mod_authz_user
    [ ] AUTHNZ_LDAP           mod_authnz_ldap
    [ ] LDAP                  connection pooling, result caching
    [ ] DBD                   Manages SQL database connections
    [ ] CACHE                 mod_cache
    [ ] DISK_CACHE            mod_disk_cache
    [ ] FILE_CACHE            mod_file_cache
    [ ] MEM_CACHE             mod_mem_cache
    [ ] DAV                   mod_dav
    [ ] DAV_FS                mod_dav_fs
    [ ] DAV_LOCK              mod_dav_lock
    [ ] ACTIONS               mod_actions
    [*] ALIAS                 mod_alias
    [*] ASIS                  mod_asis
    [*] AUTOINDEX             mod_autoindex
    [ ] CERN_META             mod_cern_meta
    [*] CGI                   mod_cgi
    [ ] CGID                  mod_cgid
    [ ] CHARSET_LITE          mod_charset_lite
    [ ] DEFLATE               mod_deflate
    [*] DIR                   mod_dir
    [ ] DUMPIO                mod_dumpio
    [*] ENV                   mod_env
    [*] EXPIRES               mod_expires
    [*] HEADERS               mod_headers
    [ ] IMAGEMAP              mod_imagemap
    [*] INCLUDE               mod_include
    [*] INFO                  mod_info
    [*] LOG_CONFIG            mod_log_config
    [*] LOGIO                 mod_logio
    [*] MIME                  mod_mime
    [*] MIME_MAGIC            mod_mime_magic
    [*] NEGOTIATION           mod_negotiation
    [ ] REWRITE               mod_rewrite
    [*] SETENVIF              mod_setenvif
    [*] SPELING               mod_speling
    [*] STATUS                mod_status
    [ ] UNIQUE_ID             mod_unique_id
    [ ] USERDIR               mod_userdir
    [ ] USERTRACK             mod_usertrack
    [*] VHOST_ALIAS           mod_vhost_alias
    [*] FILTER                mod_filter
    [ ] SUBSTITUTE            mod_substitute
    [*] VERSION               mod_version
    [*] SSL                   mod_ssl
    [ ] SUEXEC                mod_suexec
    [ ] SUEXEC_RSRCLIMIT      suEXEC rlimits based on login class
    [ ] SUEXEC_USERDIR        suEXEC UserDir support
    [*] REQTIMEOUT            mod_reqtimeout
    [ ] PROXY                 mod_proxy
    [ ] IPV4_MAPPED           Allow IPv6 socket to handle IPv4
    [ ] BUCKETEER             mod_bucketeer
    [ ] CASE_FILTER           mod_case_filter
    [ ] CASE_FILTER_IN        mod_case_filter_in
    [ ] EXT_FILTER            mod_ext_filter
    [ ] LOG_FORENSIC          mod_log_forensic
    [ ] OPTIONAL_HOOK_EXPORT  mod_optional_hook_export
    [ ] OPTIONAL_HOOK_IMPORT  mod_optional_hook_import
    [ ] OPTIONAL_FN_IMPORT    mod_optional_fn_import
    [ ] OPTIONAL_FN_EXPORT    mod_optional_fn_export
    [ ] PROXY_AJP             M(PROXY): mod_proxy_ajp
    [ ] PROXY_BALANCER        M(PROXY): mod_proxy_balancer
    [ ] PROXY_CONNECT         M(PROXY): mod_proxy_connect
    [ ] PROXY_FTP             M(PROXY): mod_proxy_ftp
    [ ] PROXY_HTTP            M(PROXY): mod_proxy_http
    [ ] PROXY_SCGI            M(PROXY): mod_proxy_scgi
    

  • Настройка
    Проверяем наличие или добавляем строку в /etc/rc.conf:
    apache22_enable="YES"
    
    Правим конфигурационный файл /usr/local/etc/apache22/httpd.conf
    ServerRoot "/usr/local"
    Listen 80
    ServerSignature Off
    ServerTokens Prod
    
    Timeout 300
    KeepAlive Off
    
    # Example:
    # LoadModule foo_module modules/mod_foo.so
    #
    LoadModule authz_host_module libexec/apache22/mod_authz_host.so
    LoadModule reqtimeout_module libexec/apache22/mod_reqtimeout.so
    LoadModule include_module libexec/apache22/mod_include.so
    LoadModule filter_module libexec/apache22/mod_filter.so
    LoadModule log_config_module libexec/apache22/mod_log_config.so
    LoadModule logio_module libexec/apache22/mod_logio.so
    LoadModule env_module libexec/apache22/mod_env.so
    LoadModule mime_magic_module libexec/apache22/mod_mime_magic.so
    LoadModule expires_module libexec/apache22/mod_expires.so
    LoadModule headers_module libexec/apache22/mod_headers.so
    LoadModule setenvif_module libexec/apache22/mod_setenvif.so
    LoadModule version_module libexec/apache22/mod_version.so
    LoadModule ssl_module libexec/apache22/mod_ssl.so
    LoadModule mime_module libexec/apache22/mod_mime.so
    LoadModule status_module libexec/apache22/mod_status.so
    LoadModule asis_module libexec/apache22/mod_asis.so
    LoadModule info_module libexec/apache22/mod_info.so
    LoadModule suexec_module libexec/apache22/mod_suexec.so
    LoadModule cgi_module libexec/apache22/mod_cgi.so
    LoadModule vhost_alias_module libexec/apache22/mod_vhost_alias.so
    LoadModule negotiation_module libexec/apache22/mod_negotiation.so
    LoadModule dir_module libexec/apache22/mod_dir.so
    LoadModule speling_module libexec/apache22/mod_speling.so
    LoadModule alias_module libexec/apache22/mod_alias.so
    
    User www
    Group www
    
    ServerAdmin root@localhost
    
    ServerName localhost
    
    <Directory />
        AllowOverride None
        Order deny,allow
        Deny from all
    </Directory>
    
    DirectoryIndex index.shtml
    
    <FilesMatch "^.ht">
        Order allow,deny
        Deny from all
        Satisfy All
    </FilesMatch>
    
    ErrorLog "/var/log/httpd-error.log"
    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 "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i" %I %O" combinedio
    
    DefaultType text/plain
    
    TypesConfig etc/apache22/mime.types
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
    AddType text/html .shtml
    AddOutputFilter INCLUDES .shtml
    
    # Virtual hosts
    Include etc/apache22/extra/httpd-vhosts.conf
    
    # Secure (SSL/TLS) connections
    #Include etc/apache22/extra/httpd-ssl.conf
    SSLRandomSeed startup builtin
    SSLRandomSeed connect builtin
    
    Include etc/apache22/Includes/*.conf
    Include etc/apache22/vhosts/*.conf
    
    Правим конфигурационный файл /usr/local/etc/apache22/extra/httpd-vhosts.conf, оставляем там только одну строчку:
    NameVirtualHost *:80
    
    Создаем директорию /usr/local/etc/apache22/vhosts где будут храниться конфиги виртуалхостов
    # mkdir -p /usr/local/etc/apache22/vhosts
    
    Добавляем виртуалхост по умолчанию, для этого создаем файл /usr/local/etc/apache22/vhosts/00.default.conf и записываем в него следующее:
    <VirtualHost *:80>
            ServerName     localhost
            ServerAdmin     root@localhost
    
            AssignUserID USER GROUP
    
            AddHandler cgi-script .pl
    
            DocumentRoot /home/_default/htdocs
            
                    Options Includes FollowSymLinks Indexes
    
                    AllowOverride All
                    Order allow,deny
                    allow from all
                    DirectoryIndex index.html index.shtml
            </Directory>
    
            ScriptAlias /cgi-bin/ "/home/_default/cgi-bin/"
            
                    AllowOverride None
                    Options None
                    Order allow,deny
                    Allow from all
            </Directory>
    
            ErrorLog "|/usr/local/sbin/rotatelogs /home/_default/logs/%Y-%m-%d-error 86400"
            CustomLog "|/usr/local/sbin/rotatelogs /home/_default/logs/%Y-%m-%d-access 86400" combined
    </VirtualHost>
    
    Создаем директории сайта по умолчанию:
    # mkdir -p /home/_default/htdocs
    # mkdir /home/_default/cgi-bin
    # mkdir /home/_default/logs
    # chown -R USER:GROUP /home/_default
    
    Запускаем
    # /usr/local/etc/rc.d/apache22 start
    
    Проверяем что сервер запустился и работает
    ps ax | grep httpd
    77131  ??  Ss     0:00,21 /usr/local/sbin/httpd -DNOHTTPACCEPT
    77134  ??  I      0:00,00 /usr/local/sbin/httpd -DNOHTTPACCEPT
    77135  ??  I      0:00,00 /usr/local/sbin/httpd -DNOHTTPACCEPT
    77136  ??  I      0:00,00 /usr/local/sbin/httpd -DNOHTTPACCEPT
    77137  ??  I      0:00,00 /usr/local/sbin/httpd -DNOHTTPACCEPT
    77138  ??  I      0:00,00 /usr/local/sbin/httpd -DNOHTTPACCEPT
    77149  ??  I      0:00,00 /usr/local/sbin/httpd -DNOHTTPACCEPT