#
# Если вы прочитали статью "Установка APACHE+PHP(модуль) за 2 минуты",
# то вам не нужно это ни читать, ни редактировать. 
#
# Однако, этот файл содержит исчерпывающую информацию по *основным* 
# настройкам конфигурационного файла Апача
#

#
# (c) Дмитрий Бородин, dima@php.spb.ru (http://php.spb.ru)
#
# PHP в интернете: www.php.spb.ru, www.phpclub.net, www.php.net
#


# Примечание для windows версий Апача: 
#   1. писать C:\WWW, C:/WWW либо "C:/WWW" (с кавычками) - все равно
#   2. регистр имен файлов не важен
#   3. скачать оригинальный Апач можно по адресу:
#   http://www.filesearch.ru/cgi-bin/s?q=apache_1_3_12_win32.exe&w=a&t=f&m=300

# каталог, в котором лежат файлы для апача. Например, в c:\www\apache
# должен быть apache.exe, а в c:\www\apache\bin - htpasswd.exe
ServerRoot "c:/www/Apache"

ServerName myserver
ServerType standalone

# путь, где будет храниться номер процесса. По числу из этого файла очень
# удобно в последствии прибить апач, используюя спец утилиту (не поставляется
# в дистрибутиве) прямо из командного файла.
PidFile logs/httpd.pid

ScoreBoardFile logs/apache_status
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15
MaxRequestsPerChild 0
ThreadsPerChild 50

# Примечание для начинающих пользователей: если вам когда либо 
# программа на ПХП напишет "программа прервана, т.к. истекли 30 секунд,
# положенные на выполнение программы" то НЕ ТРОГАЙТЕ приведенные выше 
# цифры. Это касается вообще всех, кто не читал их описания в документации.
# К ПХП отношения не имеют. 
# ... (с) из жизни


#LoadModule anon_auth_module modules/ApacheModuleAuthAnon.dll
#LoadModule cern_meta_module modules/ApacheModuleCERNMeta.dll
#LoadModule digest_module modules/ApacheModuleDigest.dll
#LoadModule expires_module modules/ApacheModuleExpires.dll
#LoadModule headers_module modules/ApacheModuleHeaders.dll
#LoadModule proxy_module modules/ApacheModuleProxy.dll
#LoadModule rewrite_module modules/ApacheModuleRewrite.dll
#LoadModule speling_module modules/ApacheModuleSpeling.dll
#LoadModule status_module modules/ApacheModuleStatus.dll
#LoadModule usertrack_module modules/ApacheModuleUserTrack.dll

DirectoryIndex index.phtml index.php index.html 
AccessFileName .htaccess

# запретить доступ к файлам ".htaccess"
<Files .htaccess>
    Order allow,deny
    Deny from all
</Files>

# запретить доступ к файлам "любое_название.inc"
<Files ~ "\\.inc$">
    Order allow,deny
    Deny from all
</Files>

UseCanonicalName On
TypesConfig conf/mime.types
DefaultType text/plain
<IfModule mod_mime_magic.c>
    MIMEMagicFile conf/magic
</IfModule>
HostnameLookups On
ErrorLog logs/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 "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
CustomLog logs/access.log common
#CustomLog logs/referer.log referer
#CustomLog logs/agent.log agent
#CustomLog logs/access.log combined
ServerSignature On
Alias /icons/ "c:/www/Apache/icons/"

AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
AddIconByType (TXT,/icons/text.gif) text/*
AddIconByType (IMG,/icons/image2.gif) image/*
AddIconByType (SND,/icons/sound2.gif) audio/*
AddIconByType (VID,/icons/movie.gif) video/*
AddIcon /icons/binary.gif .bin .exe
AddIcon /icons/binhex.gif .hqx
AddIcon /icons/tar.gif .tar
AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
AddIcon /icons/a.gif .ps .ai .eps
AddIcon /icons/layout.gif .html .shtml .htm .pdf
AddIcon /icons/text.gif .txt
AddIcon /icons/c.gif .c
AddIcon /icons/p.gif .pl .py
AddIcon /icons/f.gif .for
AddIcon /icons/dvi.gif .dvi
AddIcon /icons/uuencoded.gif .uu
AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
AddIcon /icons/tex.gif .tex
AddIcon /icons/bomb.gif core
AddIcon /icons/back.gif ..
AddIcon /icons/hand.right.gif README
AddIcon /icons/folder.gif ^^DIRECTORY^^
AddIcon /icons/blank.gif ^^BLANKICON^^
DefaultIcon /icons/unknown.gif
#AddDescription "GZIP compressed document" .gz
#AddDescription "tar archive" .tar
#AddDescription "GZIP compressed tar archive" .tgz
ReadmeName README
HeaderName HEADER
IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
AddEncoding x-compress Z
AddEncoding x-gzip gz tgz
AddLanguage da .dk
AddLanguage nl .nl
AddLanguage en .en
AddLanguage et .ee
AddLanguage fr .fr
AddLanguage de .de
AddLanguage el .el
AddLanguage it .it
AddLanguage pt .pt
AddLanguage ltz .lu
AddLanguage ca .ca
AddLanguage es .es
AddLanguage sv .se
AddLanguage cz .cz
LanguagePriority en da nl et fr de el it pt ltz ca es sv
AddType application/x-tar .tgz
#AddType text/html .shtml
#AddHandler server-parsed .shtml
BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
BrowserMatch "RealPlayer 4\.0" force-response-1.0
BrowserMatch "Java/1\.0" force-response-1.0
BrowserMatch "JDK/1\.0" force-response-1.0

#############################################################################
#############################################################################
#
# Выбор типа ПХП (выбирать любой _один_ вариант):
#
#  1. внешняя программа (другое название: "CGI")
#  2. модуль (это то, что встроено в Апач)
#
# Перед запуском, убедитесь, что вы уже переписали php.ini из 
# дистрибутива в c:\windows (c:\winnt)
#

#
# ============= PHP в качестве внешней программы =============
#
# Примечание: файлы от PHP лежат в каталоге c:/www/php
#
#AddType application/x-httpd-php phtml php
#<Directory "c:/www/php">
#  Options ExecCGI
#</Directory>
#ScriptAlias "/__php_dir__/" "c:/www/php/"
#Action application/x-httpd-php "/__php_dir__/php.exe"
#
# ============================================================


#
# =================== PHP в качестве модуля ==================
#
# Примечение:
#  1. файл php4apache.dll должен быть в c:/www/apache/modules/php4apache.dll
#  2. файл php4ts.dll - в c:/www/apache/php4ts.dll
#
AddType application/x-httpd-php phtml php php3
LoadModule php4_module modules/php4apache.dll 
#
# ============================================================

# ***
# *** Как видно, из 2х вариантов раскомментирован второй, т.е. Апач настроен
# *** на использование ПХП как модуля.
# ***




#############################################################################
#############################################################################
#
# Настройка виртульльных хостов
#


# не надо разрешать выполнение .exe/.dll/etc, если вы не продвинутый юзер
#AddHandler cgi-script .exe
#AddHandler cgi-script .bat

# Перечисляем на каких IP-адресах и каких портах Апача будет ловить соединения
# Ниже (NameVirtualHost) все адреса с вирт. хостами должны быть так описаны
Listen 127.0.0.1:80
Listen 127.0.0.2:1234

# ниже нужно продублировать тот же список, не указывая порты:
NameVirtualHost 127.0.0.1:*
NameVirtualHost 127.0.0.2:*


# Начало описания виртуаного сервера на IP 127.0.0.1.
# Несколько вир.сер-в (у нас их два), висящих на одном IP различаются
# по полям ServerName & ServerAlias

# Если вы хотите, чтобы один и тот же вирт. сервер был доступен с разных 
# ип-адресов, то вместо "127.0.0.1:*" (см. ниже) пишите "*:*". Писать звездочки
# или полный адрес? Решите сами. Очевидно:
#  - дома или для тестов: только 127.0.0.1, чтобы никто, кроме как с локального
#    компьютера, не мог попасть на сервер
#  - на реальном сервере: "*:*". Какая разница, на какой IP адрес придет 
#    запрос? Никакой. Апач различает все вирт.хосты по ИМЕНИ, а не по IP
#    (хотя можно и только по IP, тогда укажите в вирт.хосте: "ServerAlias *")


<VirtualHost 127.0.0.1:*>

    # Мыло админа. Вываливается на экран в случае зверских ошибок сервера :)
    ServerAdmin webmaster@host.some_domain.com

    # Тут "начало" веб-сервера с .html файлами, конень веб-пространства
    DocumentRoot c:/www/www1
    
    # Имя сервера
    ServerName dima
    
    # Дополнительные имена - алиасы. Таких записей м.б. много. Как пример
    # можно использовать звездочку в описании - ServerAlias *.test.ru
    # (только не забываем описывать все имена за * в файле HOSTS)
    ServerAlias localhost
    
    # куда писать логи
    # logs - это подкаталог в основном каталоге апача (относит. путь)
    ErrorLog logs/dima-error.log
    CustomLog logs/dima-access.log common

    #   Если хочется, чтобы работали адреса типа http://host/~dir (с ~),
    #   то говорим, куда пересылать: http://host/~dir --> C:\WWW\WWW1-users\dir
    #   Для этого надо раскомментировать:
    #UserDir "c:/www/www1_users/"

    #   Чтобы сделать некоторые фичи над некоторыми каталогами, используют
    #   <Locatio ..> .... команды ...... </Location>
    #   Пример запрещения доступа к каталогу 'include'.
    #   Теперь там можно хранить пароли, inc-файлы и другие ценности - 
    #   их никто не получит, обратившись к http://dima/include
    #<Location /include>
    #deny from all
    #</Location

    # ВНИМАНИЕ! Если вы в вит.хосте будете использовать хоть один location,
    # эта команда уничтожит опцию запрета доступа к *.inc & .htaccess файлам.
    # К сожалению, LOCATION выполняется ПОСЛЕ <files> и <directory>, и
    # даже после .htaccess! Есть разные решения данной проблемы, однако 
    # у меня пока нет статьи на эту тему (как _проще_ всего сделать, без 
    # многократного дублирования <files>). Временное решение: читайте статьи
    # к апачу, размещенные на php.spb.ru. Это одна из частых ошибок вебмастеров.
    # Если раскомментировать приведенный выше пример, то в каталоге 
    # перестанет работать опция запрещения доступа к *.inc файлам (но сама 
    # LOCATION закроет доступ ко всему каталогу целиком).

</VirtualHost>

# конец описания ПЕРВОГО вирт. серевера! Далее идут лишь аналогичные описания.


# этот вир.сервер работает на том же 127.0.0.1 IP-адресе, но с другим именем!
<VirtualHost 127.0.0.1:*>
    ServerAdmin webmaster@host.some_domain.com
    DocumentRoot c:/www/www2
    ServerName test
    ErrorLog logs/test-error.log
    CustomLog logs/test-access.log common
</VirtualHost>

# другой IP:PORT (см.выше - 127.0.0.2:1234) и другое имя
<VirtualHost 127.0.0.2:*>
    ServerAdmin webmaster@host.some_domain.com
    DocumentRoot c:/www/www3
    ServerName test2
    ErrorLog logs/test2-error.log
    CustomLog logs/test2-access.log common

    # запрещаем применение PHP в данном вирт. сервере, превращаем PHP
    # в обычный html файл. Это ограничение можно снять, создав соотв. файл
    # .htaccess в c:\www\www3
    AddType text/html phtml php
</VirtualHost>

