Софт

Apache http-сервер

Рейтинг: 4.6/5.0 (824 проголосовавших)

Категория: Windows: Web серверы

Описание

Bog BOS: Apache: HTTP сервер

Это очень старая статья. Новая статья про Apache 2 здесь .

Распространение и использование - бесплатное.

Текущая (6 марта 2000) версия 1.3.12, русификация 1.3.12 PL29.4 взята на Russian Apache.

Тестируем работоспособность (здесь не нужен mod_rcs, вместо него работает extra/mod_charset; прокси больше не используется)(Intel, RedHat Linux 6.0, ядро 2.11, egcs-2.91.66):
  1. сносим httpd из поставки RHL (пакеты: mod_php3-manual, mod_php3-pgsql, mod_php3-imap, mod_php3, mod_perl, apache)
  2. берем архив apache_1.3.12rusPL29.4 у Лехи, разархивируем его.
  3. выбираем новое место для сервера /usr/local/apache (классический Layout Apach)
  4. в src/Configuration.tmpl
    • OPTIM=-O2
    • Rule SHARED_CORE=no
    • Rule SHARED_CHAIN=no
    • раскоментируем модули info, rewrite, auth_dbm, expires, headers; закоментировать imap
  5. тащим webcounter (2.2.5 на 6 марта 2000)
    1. берем архив
    2. разворачиваем его
    3. копируем поддиректорию cntr в директорию apache/src/modules
    4. запоминаем, что configure надо запускать с ключом

    --activate-module=src/modules/cntr/mod_cntr.c

    или в src/Configuration.tmpl добавляем строку

    AddModule modules/cntr/mod_cntr.o
  6. В httpd.conf добавить (можно также в .htaccess)

    CounterFile имя-файла

    CounterTimeFmt строка-для-форматирования-даты # по умолчанию "%A, %d-%b-%y %T %Z"

    CounterFaceDir имя-директории-где-цифры-лежат

    # отныне цифр разворачиваются не через cgi-bin а внутри сервера, надо задать хендлер

    <Location /server-cntr>

    SetHandler server-cntr

    </Location>

    <Location /server-cntr-debug>

    SetHandler server-cntr-debug

    </Location>
  7. в поставку входит show-digits.cgi, который показывает список шрифтов. Его надо установить.
  8. в поставку входят шрифты default и tiny. Другие формы цифр можно было взять на www.digitimania.com и преобразовать с помощью renamegif.pl. У меня их достаточно осталось от предыдущей версии.
  9. преобразовать старые счетчики с помощью updatedbm.pl ( не работает )
  10. создать собственно файлы, в которых будут храниться счетчики, с соответствующими правами (nobody:nobody). Не давать же nobody возможность создавать файлы в этой директории.
  11. новый формат использования в html-тексте

    img src="http://www.bog.pp.ru/server-cntr/path-info?face=facename_%D0%B0%D0%BC%D0%BF%D0%B5%D1%80%D1%81%D0%B5%D0%BD%D0%B4_ndigit=n_%D0%B0%D0%BC%D0%BF%D0%B5%D1%80%D1%81%D0%B5%D0%BD%D0%B4_fcount=n_%D0%B0%D0%BC%D0%BF%D0%B5%D1%80%D1%81%D0%B5%D0%BD%D0%B4_trans%3C/p%%0D%0A%D0%B3%D0%B4%D0%B5%0D%0A%3CUL%%0D%0A%3Cli%path-info%20-%20%D0%B8%D0%BC%D1%8F%20%D1%84%D0%B0%D0%B9%D0%BB%D0%B0,%20%D1%81%D1%87%D0%B5%D1%82%D1%87%D0%B8%D0%BA%20%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D0%BE%D0%B3%D0%BE%20%D0%BD%D0%B0%D0%B4%D0%BE%20%D0%B2%D1%81%D1%82%D0%B0%D0%B2%D0%B8%D1%82%D1%8C%20(%D1%80%D0%B0%D0%BD%D1%8C%D1%88%D0%B5%20%D0%B1%D1%8B%D0%BB%D0%BE%20url=)%3C/li%%0D%0A%3Cli%face%20-%20%D0%B8%D0%BC%D1%8F%20%D1%88%D1%80%D0%B8%D1%84%D1%82%D0%B0%20(%D1%80%D0%B0%D0%BD%D1%8C%D1%88%D0%B5%20%D0%B1%D1%8B%D0%BB%D0%BE%20type=)%3C/li%%0D%0A%3Cli%ndigit%20-%20%D1%87%D0%B8%D1%81%D0%BB%D0%BE%20%D1%86%D0%B8%D1%84%D1%80%20(%D1%80%D0%B0%D0%BD%D1%8C%D1%88%D0%B5%20%D0%B1%D1%8B%D0%BB%D0%BE%20length=)%3C/li%%0D%0A%3Cli%fcount%20-%20%D1%84%D0%B8%D0%BA%D1%82%D0%B8%D0%B2%D0%BD%D0%BE%D0%B5%20%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5%20%D1%81%D1%87%D0%B5%D1%82%D1%87%D0%B8%D0%BA%D0%B0%20(%D1%80%D0%B0%D0%BD%D1%8C%D1%88%D0%B5%20%D0%B1%D1%8B%D0%BB%D0%BE%20count=)%3C/li%%0D%0A%3Cli%trans%20-%20%D0%BF%D1%80%D0%BE%D0%B7%D1%80%D0%B0%D1%87%D0%BD%D1%8B%D0%B9%20%D1%84%D0%BE%D0%BD%3C/li%%0D%0A%3C/UL%%0D%0A%3C/li%%0D%0A%3Cli%%D0%9F%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5%20%D0%B4%D0%BB%D1%8F%20SSI%20%D0%B8%20CGI%20(%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5:%20<!--#echo%20var="URL_COUNT"-->)

    • URL_COUNT - счетчик числа обращений к файл
    • URL_COUNT_RESET - время запуска счетчика
    • URL_COUNT_DB - имя счетчиков
    • URL_COUNT_TIMEFMT - формат для времен запуска
    • URL_COUNT_FACEDIR - директория со шрифтами
    • URL_COUNT_DINDEX - имя файла для индекса директорий (index.html)
  12. Есть версия count.cgi на perl (требуется GD.pm and URI::URL (comes with libwww) )
  13. Ручной доступ к базе данных счетчиков: countctl.pl ( не работает )

    countctl.pl [ -cdrv URL ] filename

    -c добавить URL

    -d удалить

    -r сбросить

    -s установить (берет с stdin или запрашивает в диалоге)

    -v посмотреть

    без флагов выдает дамп всей БД в формате: URL счетчик время-старта
  • если надо, то очистка от старой версии (make clean)
  • ./configure
  • make
  • make install (в /usr/local/apache), используется Layout Apache; нужны права root; не портит старые файлы настройки и т.п. (но запихивает образцовый сайт - свою документацию - в htdocs) =
    • bin
      • htpasswd - создание и изменение плоских файлов для базововой аутентификации (формат имя:шифрованный-пароль)
      • htdiggest - создание и изменение плоских файлов для digest аутентификации
      • dbmmanage - создает и изменяет файлы для аутентификации пользователей в формате DBM
      • ab - httpd benchmark
      • apachectl - управление сервером. Команды:
        • start
        • stop
        • restart
        • fullstatus (нужен lynx и mod_status)
        • status (-//-)
        • graceful (restart без обрывания текущих соединений, журнал закрываются не сразу)
        • configtest
        • help
      • logresolve - если журнал собирался без разрешения имен хостов по их IP адресам, эта утилита позволяет сделать это в фоновом режиме.
      • rotatelog - режет журнал, если задать: TransferLog "|rotatelogs /path/to/logs/access_log интервал-времени"
      • apxs - динамическое создание и загрузка модулей в apache сервер
      • httpd - собственно сервер (сигнал HUP - заново прочесть конфигурацию, TERM - завершить свою работу и всех сыновей - в версии 1.1 не работало )
        • -d ServerRoot
        • -f config
        • -C directive (выполнить директиву до чтения файла конфигурации)
        • -c directivе (-//- после -//- )
        • -D параметр (определение параметра для условно конфигурации)
        • -L (выдать список директив для каждого модуля)
        • -l (выдать список модулей)
        • -t (проверить конфигурацию)
        • -X (отладочный режим)
        • -v (выдача краткой информации о версии сервера)
        • -V (выдача полной информации о версии сервера)
        • -S (разбор конфигурации виртуальных хостов)
        • -h (выдать синтаксис командной строки)
    • libexec
    • man
      • man1 (htpasswd.1, htdiggest.1, dbmmanage.1)
      • man8 (httpd.8, ab.8, apachectl.8, logresolve.8, rotatelog.8, apxs.8)
    • conf
      • tables (табл перекодировки для Russian Apache)
        • czech
        • russian
        • russian2
      • access.conf - ныне пуст
      • httpd.conf - основной файл конфигурации
      • magic - для модуля mod_mime_magic (аналог команды file), не надо реедактировать
      • mime.types - добавил строчку для .bz2 (иначе происходит перекодировка из русского в русский)
      • srm.conf - ныне пуст
    • htdocs - пустой сервер предоставляет документацию по сервер
      • manual
        • images
        • misc
        • mod
        • vhosts
    • cgi-bin
      • printenv
      • test-cgi
    • icons - маленькие картинки
    • include - (.h для компиляции динамически загружаемых модулей)
      • xml
    • logs
    • proxy
  • конфигурируем сервер (все что по умолчанию, особенно всякие глупости типа имен файлов, не упоминается)
    • httpd.conf
      • глобальные параметры
        • ServerType standalone
        • ServerRoot "/usr/local/apache"
        • PidFile /usr/local/apache/log/httpd.pid
        • ResourceConfig /dev/null
        • AccessConfig /dev/null
        • Timeout 120
        • KeepAlive On
        • MaxKeepAliveRequests 100
        • KeepAliveTimeout 15
        • MinSpareServers 5
        • MaxSpareServers 10
        • StartServers 5
        • MaxClients 150
        • MaxRequestsPerChild 0 ( если будет отъедать память как в Solaris, то поставить 30 )
        • Listen адрес-хоста:80 (именно адрес, ибо у меня несколько IP-адресов на хост)
        • ExtendedStatus On
      • главный сервер (он же определяет параметры по умолчанию для виртуальных хостов)
        • #Port 80 (ибо есть Listen)
        • User nobody
        • Group nobody
        • ServerAdmin bog@deol.ru.
        • ServerName имя-без-точки-в-конце
        • DocumentRoot "/usr/local/apache/htdocs"
        • для директории / задаем Options FollowSymLinks и AllowOverride None
        • для основной директории задаем Options Indexes FollowSymLinks IncludesNOEXEC, AllowOverride None, ограничения на доступ: order allow,deny и allow from all
        • UserDir public_html и права доступа
        • DirectoryIndex index.html index.htm
        • AccessFileName .htaccess
        • запрет на чтение .htaccess
        • UseCanonicalName on
        • HostnameLookups on ( отключить для оптимизации, но тогда поднастроить обработку журналов )
        • ErrorLog /usr/local/apache/logs/main.error_log
        • LogLevel info (м.б. уменьшить до notice или warn потом)
        • LogFormat "%h %l %u %t \"%r\" %>s %b \"%i\" \"%i\" %v" combined ( %v добавляем, чтобы явно знать какой виртуальный хост обработал заявку, но он вместо имени хоста из запроса подставляет результат reverse DNS IP-адреса сервера; может %e поставить, но некоторые клиенты не посылают поле HOST. - analog надо подработать)
        • CustomLog /usr/local/apache/logs/main.combined_log combined
        • ServerSignature on
        • алиас и права для директории иконок
        • ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/" и права для директории (no override, no options)
        • только для тестового сервера: Redirect /

          bog http://www.deol.ru/

          bog
        • генерация индексов директорий
          • FancyIndexing on
          • описание иконок для красивых индексов и прочего оформления (разные модификации AddIcon)
          • всякие там Description, header и readme, indexignore и пр.
        • LanguagePriority ru en
        • AddType text/html .shtml (SSI)
        • AddHandler server-parsed .shtml (SSI)
        • исключения для разных плохо сделанных броузеров
        • разрешаем server-status и server-info со своего домена
      • описание виртуальных хостов
    • .htaccess в директориях
    • линк
      • share
        • cgi-bin
        • icons
        • htdocs
    • конфигурация дополнительных модулей
      • mod_cntr
      • mod_charset (русификация)
        • включение кодировок и добавление алиасов mac (x-mac-cyrillic) и lat (translit)
  • дырки в firewall
    • на входе в компьютер
    • для диалапных клиентов
    • для доступа извне
  • PHP
  • позже разобраться
    • DSO
    • suexec
    • perl
  • Тестируем работоспособность (здесь не нужен mod_rcs, вместо него работает extra/mod_charset)(SPARC, Solaris 2.5, gcc 2.6.2):
    1. берем архив apache_1.3.4rusPL27.4 у Лехи, разархивируем его.
    2. сносим старый httpd
    3. выбираем новое место для сервера /usr/local/apache
    4. небольшие исправления:
      • возвращаем обратно выдачу подробного сообщения об ошибке 500 в src/main/http_protocol.c (ap_send_error_response). Ради усиления безопасности вместо подробного сообщения выдавался совет обратиться к администратору. К сожалению, тот же текст выдавется в случае использования proxy и ошибке в имени хоста. Получать письмо от клиента каждый раз как он ошибется в имени хоста - это перебор.
    5. в src/Configure.tmpl
      • EXTRA_LIBS=-lc -lcrypt
      • CC=cc
      • OPTIM=-O (-O2 ведет к segmentation violation)
      • RANLIB=touch (использование ranlib грохает ld)
      • Rule SHARED_CORE=no
      • Rule SHARED_CHAIN=no
      • раскоментируем модули info, proxy, rewrite, auth_dbm, cern_meta, expires, headers
    6. тащим webcounter (2.2.4 на 21 января 1999) - описан выше
    7. ./configure
    8. make (не забудь /usr/ccs/bin в PATH)
    9. make install (в /usr/local/apache), используется Layout Apache, а не GNU; описан выше
    конфигурируем сервер (все что по умолчанию, особенно всякие глупости типа имен файлов, не упоминается)
    • httpd.conf
      • глобальные параметры
        • ServerType standalone
        • ServerRoot "/usr/local/apache"
        • PidFile /usr/local/apache/log/httpd.pid
        • Timeout 120
        • KeepAlive On
        • MaxKeepAliveRequests 100
        • KeepAliveTimeout 15
        • MinSpareServers 5
        • MaxSpareServers 10
        • StartServers 5
        • MaxClients 150
        • MaxRequestsPerChild 30
        • Listen адрес-хоста:80 (именно адрес, ибо у меня несколько IP-адресов на хост)
        • Listen адрес-хоста:3346 (для proxy)
        • ExtendedStatus On
      • главный сервер (он же определяет параметры по умолчанию для виртуальных хостов)
        • #Port 80 (ибо есть Listen)
        • User nobody
        • Group nobody
        • ServerAdmin bog@deol.ru.
        • ServerName имя-без-точки-в-конце
        • DocumentRoot "/usr/local/apache/htdocs"
        • для директории / задаем Options FollowSymLinks и AllowOverride None
        • для основной директории задаем Options Indexes FollowSymLinks IncludesNOEXEC, AllowOverride None ограничения на доступ: order allow,deny и allow from all
        • UserDir public_html
        • DirectoryIndex index.html index.htm
        • AccessFileName .htaccess
        • запрет на чтение .htaccess
        • UseCanonicalName on
        • HostnameLookups on
        • ErrorLog /usr/local/apache/logs/main.error_log
        • LogLevel info (м.б. уменьшить до notice или warn потом)
        • LogFormat "%h %l %u %t \"%r\" %>s %b \"%i\" \"%i\" %v" combined ( %v добавляем, чтобы явно знать какой виртуальный хост обработал заявку - analyze надо подработать)
        • CustomLog /usr/local/apache/logs/main.combined_log combined
        • ServerSignature on
        • алиас и права для директории иконок
        • ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/" и права для директории (no override, no options)
        • только для тестового сервера: Redirect /

          bog http://www.deol.ru/

          bog
        • генерация индексов директорий
          • FancyIndexing on
          • описание иконок для красивых индексов и прочего оформления (разные модификации AddIcon)
          • всякие там Description, header и readme, indexignore и пр.
        • LanguagePriority ru en
        • AddType text/html .shtml (SSI)
        • AddHandler server-parsed .shtml (SSI)
        • исключения для разных плохо сделанных броузеров
        • разрешаем server-status и server-info со своего домена
      • виртуальный сервер под proxy
        • NameVirtualHost http-proxy.deol.ru:81 (?)
        • Port 81
        • ProxyRequests On
        • ограничения на доступ к директории proxy: только изнутри
        • CacheRoot /usr/local/apache/proxy
        • CacheSize сколько-не-жалко-килобайт
        • CacheGcInterval 4 (?)
        • CacheMaxExpire 24
        • CacheLastModifiedFactor 0.1 (?)
        • CacheDefaultExpire 4 (?)
        • NoCache список-доменов-через-пробел
        • ErrorLog /usr/local/apache/logs/proxy_error_log
        • CustomLog /usr/local/apache/logs/proxy_combined_log combined
      • описание виртуальных хостов
    • .htaccess в директориях
    • линк
      • share
        • cgi-bin
        • icons
        • htdocs
      • var
        • log
        • proxy
    • конфигурация дополнительных модулей
      • mod_cntr
      • mod_charset
  • изменяем /etc/rc2.d/S99httpd, чтобы он запускал apachectl (start, stop, restart)
  • если не хватает дескрипторов файлов по умолчанию (64), то в apachectl вставить

    ulimit -S -n 1024

    ядро Solaris имеет ограничение 1024 fd, stdlib - 255. Рекомендуется поиграться с -DHIGH_SLACK_LINE=256 в EXTRA_CFLAGS пр сборке сервера. Как только сервер требуется 256й файл, так начинаются глюки (я так понимаю, что обращение к двум файлам идет через один дескриптор), причем понять что эти глюки из-за недостатка дескрипторов невозможно. Например, у меня не записывался файл httpd.pid, хотя сам файл создавался или не работал /cgi-bin/count ил выдавалась ошибка "forbidden access" или еще что-нибудь, причем proctool преспокойно показывает, что fd = 1024.
  • задаем права на исполнение тех файлов в cgi-bin, которые нужны
  • поменять в crontab процедуру регулярной очистки httpd на использование apachectl
  • когда все будет хорошо - удалить старый сервер
  • Конфигурация

    Конфигурация сервера задается в файлах httpd.conf, srm.conf, access.conf и .htaccess. Раньше в httpd.conf хранилась общая конфигурация сервера, в srm.conf описание доступных ресурсов, в access.conf - права доступа к ресурсам. В нынешней версии любая директива конфигурации может лежать в любом из этих файлов, так что можно представить себе один виртуальный файл конфигура сконкатенированный из этих трех (httd + srm + access). Начиная с версии 1.3.4 все директивы конфигурации слиты в httpd.conf. Файлы .htaccess могут лежать в директориях переопределять права доступа и другие параметры данных директорий. Некоторые модули могут иметь свои отдельные файл конфигурации (например, mod_charset требует файлов, хранящих табл перекодировки).

    Сервер apache разбит на модули (в т.ч. core), каждая директива определяет поведение одного из модулей и имеет смысл только если этот модуль включен пр сборке.

    Контексты:
    • S сервер - директива действует на поведение сервера целиком
    • V виртуальный хост - действует, если запрос касается данного виртуального хоста (внутри скобок VirtualHost)
    • D директория - определяет свойства только данной директории (внутри скобок Directory)
    • A .htaccess - определяет свойства только данной директории (определяется в файле .htaccess)
    Порядок применения директив определения свойств и прав доступа к объекту (все, кроме Directory, применются по порядку; Directory применяются от кратчайшего пути к само длинному; секции внутри VirtualHost применяются после тех, которые снаружи):
    1. секция Directory (кроме регулярных выражений) и .htaccess (.htaccess перебивает Directory, если разрешено AllowOverride)
    2. секция DirectoryMatch и Directory регулярные выражения
    3. секции Files и FilesMatch
    4. секции Location и LocationMatch
    Права доступа, свойства объекта и где его взять определяет с каких адресов будет доступ к данной директории
    • all - со всех
    • доменное имя (м.б. частичное) - с тех хостов, имя которых заканчивается на эту строку
    • полный IP адре
    • частичный IP адрес - первые 1, 2 или 3 байта IP адреса
    • a.b.c.d/e.f.g.h - network/netmask пара
    • a.b.c.d/nnn - network/netpart-bits
  • DA allow from env =имя-переменной доступ разрешается только есл определена соответствующая переменна окружения
  • D AllowOverride <None | All | AuthConfig | FileInfo | Indexes | Limit | Options > - какие директивы из .htaccess в данно директории могут забивать оп конфигурации сервера
  • D AuthName домен-авторизации - какой домен авторизации клиент должен использовать пр определении имени и пароля
  • DA deny from <host >

    определяет с каких адресов не будет доступа к данно директор
    • all - со всех
    • доменное имя (м.б. частичное) - с тех хостов, имя которых заканчивается на эту строк
    • полный IP адре
    • частичный IP адрес - первые 1, 2 или 3 байта IP адреса
    • a.b.c.d/e.f.g.h - network/netmask пара
    • a.b.c.d/nnn - network/netpart-bits
  • DA deny from env =имя-переменной доступ не разрешается есл определена соответствующая переменна окружения
  • SV <Directory имя-директирии >. < /Directory >

    внутр определяются права и свойства данно директории. В качестве имен используется полный путь или wild-card как в shell.
  • SV < DirectoryMatch регулярное-выражение >. < /DirectoryMatch >

    внутр определяются права и свойства данно директории. В качестве имен используется регулярное выражение.
  • SV DocumentRoot путь

    определяет, где находится корень документов сервера ил виртуального сервера
  • SVDA ErrorDocument error-code document

    какой документ выдавать в случае ошибка указанным кодом (есл начинается с кавычек, то далее идет текст сообщения; если со слеша, то далее идет локальный URL - в том числе CGI, в который передаются описывающие ситуа переменные окружения; можно использовать полную форму URL)
  • SVA < Files имя-файла >. < /Files >

    внутр определяются права и свойства файлаов соответствующим basename. качестве имен используется basename или wild-card как в shell. Может находиться внутри секции Directory или .htaccess.
  • SVA < FilesMatch имя-файла >. < /FilesMatch >

    внутр определяются права и свойства файлаов соответствующим basename. качестве имен используется регулярное выражение Может находиться внутри секции Directory или .htaccess.
  • SVDA < Limit <метод> >. < /Limit >

    это скобки для группы директив управляющих доступом. Метод - GET, POST, PUT, DELETE, CONNECT or OPTIONS. Если директив управления доступо используются вне скобок Limit, то он используются для ограничения любого метода доступа.
  • SV <Location URL >. < /Location >

    внутр определются свойства и права доступа для данного URL (полная строка или шаблон). Использование директивы SetHandler внутр скобок позволяет задать специальн обработчик для данного URL.
  • SV <LocationMatch URL >. < /LocationMatch >

    внутр определются свойства и права доступа для данного URL (регулярное выражение). Использование директивы SetHandler внутр скобок позволяет задать специальн обработчик для данного URL.
  • SVDA Options [+|-]option .

    определяет возможности сервера в данно директор
    • ALL (по умолчанию) - все кроме MultiView
    • ExecCGI - разрешается выполнение CGI
    • FollowSymLinks - ходить по символьным ссылка
    • Includes - использовать SSI
    • IncludesNOEXEC - использовать SSI, кроме exec и include CGI
    • Indexes - генерировать листин директории, есл отсутствует файл index.html
    • MultiViews - определять представление ресурса в зависмости от предпочтений клиента (тип носителя, язык, набор символов кодировка) (не надо это включать)
    • SymLinksIfOwnerMatch - следовать по символьным ссылкам, только есл владелец целевого файла совпадает владельцем ссылки (а я-то, старый дурак, =думал, что владелец ссылки всегда root)
  • DA order порядок определяет очередность в которо применяются директивы allow и deny
    • deny,allow - перв применяются директивы deny, затем allow (начальное состояние - доступ разрешен)
    • allow,deny - перв применяются директивы allow, затем deny (начальное состояние - запрещено)
    • mutual-failure - доступ только с тех хостов, которые перечислены в allow и не перечислены в deny
  • DA require entity-name entity entity . како пользователь может иметь достуо к директор
    • user <userid >
    только пользователи с данными имена
  • group <group-name >

    только пользователи из данной групп
  • valid-user

    любо аутентифицированн пользователь
  • DA satisfy [all |any ] если для ограничения доступа используется и имя/пароль и IP адрес, то сервер будет требовать соответствия обоих критериев (all) или любого из них (any). По умолчанию - all.
  • Общие характеристик сервера/виртуального сервера куда выдавать сообщения об ошибках.
  • SV Group группа

    с правами какой unix-группы будет обрабатываться запрос.
  • SVD HostNameLookups on | off | double

    определять ли имя клиента по его IP-адресу (double - сначала делается обратный, затем прямо запрос к DNS, результат сравниваются).
  • SVDA < IfDefine [!]parameter-name >. </IfDefine >

    условная конфигурация, если параметр (не)определен.
  • SVDA < IfModule [!]module-name >. </IfModulee >

    условная конфигурация, если модуль (не)включен в состав сервера.
  • S Include имя-файла

    вставить содержимое файла в состав конфигурации в данном месте.
  • S KeepAlive on | off

    обслуживать несколько запросов. не прерывая TCP-соединения с клиентом.
  • S KeepAliveTimeout seconds
  • SV LogLevel emerg | alert | crit | error | warn | notice | info | debug

    что писать в журнал ошибок
  • S MaxClients максимальное-число-клиентов
  • S MaxKeepAliveRequests максимальное-число-запросов-при-keep-alive
  • S MaxRequestsPerChild максимальное-число-запросов-обслуживаемых-одним-процессом
  • S MaxSpareServers максимальное-число-простаивающих-процессов
  • S MinSpareServers минимальное-число-простаивающих-процессов
  • S Port номер-порта

    к какому порт прислушиваться (по умолчанию - 80).
  • SV RLimitCPU soft-limit =max-resource-limit

    задает максимальное число секунд CPU для любого процесса. Оба параметра могут быть числом ил словом max
  • SV RlimitMEM soft-limit =max-resource-limit

    задает максимальное число байт, которое может использовать каждый процесс. Оба параметра могут быть числом или словом max
  • SV RlimitNPROC soft-limit =max-resource-limit

    задает максимальное число процессов которое может запустить каж пользователь. Оба параметра могут быть числом ил словом max
  • SV ServerAdmin email-address
  • SV ServerName полное-доменое-имя

    используется для redirect. По умолчанию сервер пытается определить его сам, но в Solaris лучше задать вручную.
  • S ServerRoot полное-имя-директории

    задает место, где лежат все файл сервера по умолчанию (и откуда отсчитываются относительные имена файлов)
  • SVDA ServerSignature Off | On | EMail

    какую информацию включать в конце документов, генерируемых сервером (например, сообщений об ошибках)
    • Off - никако
    • On - имя сервера и версия П
    • EMail - еще и почтовый адре администратора
  • S ServerTokens Minimal |OS |Full что сервер сообщает о себе в заголовке Server: (примерный текст):
    • Minimal - Server: Apache/1.3.0
    • OS - Server: Apache/1.3.0 (Unix)
    • Full - Server: Apache/1.3.0 (Unix) PHP/3.0 MyMod/1.2
  • S ServerType standalone | inetd
  • S StartServers number сколько сыновних процессов запускать при начальном старте
  • S TimeOut секунд
  • SVDA UseCanonicalName on |off

    используется при генерации URL, ссылающихся на этот же сервер
    • On - использовать имя, определенное в ServerName и Port
    • Off - использовать параметры из запроса пользователя
  • SV User uid

    с правами какого пользователя будет работать сервер

  • Виртуальные сервера привязывает виртуальный хост к данно адресу/порту (запросы на этот адрес будут распределяться только между эт виртуальными хостами)
  • V ServerAlias host1 host2 .

    задает альтернативные имена для виртуального хоста
  • V ServerPath путь

    все запросы, URI которых начинаются с путь будут обслуживаться эт виртуальным сервером (конечно, адрес и порт должн соответствовать тоже)
  • S < VirtualHost <адрес [:порт ]> >. < /VirtualHost >

    это скобки, определяющие описание виртуального сервера. Адрес и порт определяют адрес, по которому он будет отзываться. Внутри можно использовать любые директивы, позволяющие контекст V.

  • Преобразование адресов запрос с URL (% декодируются), начинающегося с URL . будет отображен на файл, начинающийся с dirname-filename (м.б. вне DocumentRoot). Доступ к dirname-filename должен быть разрешен.
  • SV AliasMatch регулярное-выражение dirname-filename

    аналогично Alias, но сравнение производится в соответств регулярн выражением. Часть регулярного выражения, заключенная в скобки, запоминается как позиционный параметр и м.б. вставлена в правую часть (синтаксис как в sh)
  • SVDA Redirect [ status ] url-path url

    преобразование %-декодированного иходного URL (url-path ) =в результатирующий (url ). Клиент возвращается сообщение об ошибке и новый URL, который он должен запросить. Имеет больш приоритет, чем Alias или ScriptAlias. url-path д.б. абсолютным адресом. status (по умолчанию temporary - код 302) определяет код возврата:
    • permanent - ресур перемещен навсегда (301)
    • temp - ресурс перемещен временно (302)
    • seeother - ресурс замещен (303)
    • gone - ресурс удален (410) (в этом случае новый URL д.б. опущен)
  • SV RedirectMatch [ status ] regex url аналогично Redirect, но сравнение производится не на совпадение начал, а по соответствию URL от клиента регулярному выражению. Строки, соответствующие подвыражениям в скобках. помещаются в позиционные переменные и м.б. использован аналогично shell.
  • SV ScriptAlias url-path directory-filename

    аналогично директиве Alias, но дополнительно пометить директорию как содержащую CGI
  • SV ScriptAliasMatch regex directory-filename

    аналогично директиве AliasMatch, но дополнительно пометить директорию как содержащую CGI

  • Преобразование http-заголовков (в стиле метафайла CERN и др.)
    • AddType httpd/send-as-is asis
    файлы, имеющие суффикс .asis, посылаются "как есть", т.е. считается что http-заголовки уже лежат в файле генерировать их не надо
  • SVDA MetaFiles on /off - включить/выключить преобразование для данно директор
  • SVDA MetaDir directory-name - имя директории, в которой лежат метафайлы (по умолчанию .web внутр текущей директории)
  • SVDA MetaSuffix suffix - суффикс, котор добавляется к имени файла, чтобы найт метафайл для него (по умолчанию .meta)
  • SVDA ExpiresActive on |off - посылать ли заголовок Expire (срок хранения документа в кэше)
  • SVDA ExpiresByType MIME-type однобуквенный-код-и-число-секунд

    ко
    • M - время последне модификации файла
    • A - время доступа к файл

    можно также использовать следующую строку в кавычках:

    access /modification [plus ] <число years |months |weeks |days |hours |minutes |secunds >
  • SVDA ExpiresDefaults MIME-type однобуквенный-код-и-число-секунд
  • SVDA Header [ set | append | add ] header value-в-кавычках

    заменить/слить/добавить заголовок
  • SVDA Header unset header

    удалить заголовок (есл несколько заголовков с одним именем, то удаляется только первый)

  • Безопасность
    • DA AuthGroupFile filename

    определяет имя файла, в которо хранится список групп пользователей в формате: каждая строка определяет группу и имеет вид:

    имя-группы . <имя-пользователя >
  • DA AuthUserFile filename

    определяет имя файла, в которо хранится список пользователей в формате:

    имя-пользователя:шифрованный-пароль
  • D AuthType <Basic | Digest ] - тип аутентифика
  • DA AuthAuthoritative on | off

    по умолчанию - on. Есл установлено off, то проце аутентифика авторизации, в случае отсутствия имен пользователя в текущей базе данных, обращаются к модуля аутентификации нижнего уровня.
  • DA AuthDBMGroupFile filename

    аналогично AuthGroupFile, но использованием dbm (ключ - имя пользователя, значение - список групп через запятую)
  • DA AuthDBMUserFile filename

    аналогично AuthUserFile, но использованием dbm (ключ - имя пользователя, значение - шифрованный пароль). =Если AuthDBMUserFile и AuthDBMGroupFile указывают на один и тот же файл, то это совмещенный файл (ключ - имя пользователя, значение - шифрованный пароль, за которым следует двоеточие и список групп через запятую).
  • DA AuthDBMAuthoritative on | off

    по умолчанию - on. Есл установлено off, то проце аутентифика авторизации, в случае отсутствия имен пользователя в текущей базе данных, обращаются к модуля аутентификации нижнего уровня.
  • DA AuthDigestFile filename

    определяет файл с имена пользователе шифрованными паролями по алгоритму MD5. Файл создается утилитой htdigest (исходники в директории support). Вместо

    AuthType Basic

    надо указать

    Индекс директории (автоматическая генерация, если отсутствует вручную сделанный индексный файл и разрешена Option Indexes) какую строчку текста показывать вместо иконки, есл клиента отключена загрузка картинок. file задается суффиксом, частичным именем файла или wild-card
  • SVDA AddAltByEncoding string MIME-encoding MIME-encoding .

    аналогично, но определяется не по имени файла, а по MIME-кодировке (типа x-compress).
  • SVDA AddAltByType string MIME-type MIME-type .

    аналогично, но определяется по MIME-тип (например, text/html)
  • SVDA AddDescription string file file .

    текстовое описание файла. file задается суффиксом, частичным именем файла, wild-card или цел именем.
  • SVDA AddIcon icon name name .

    определяет какую картинк показать для файла, соответствующего name . icon имеет формат либо URL, либо в круглых скобках альтернативный текст и URL через запятую. name задается суффиксом, частичным именем файла, wild-card или цел именем.или ключевыми словами ^^DIRECTORY^^ и ^^BLANKICON^^.
  • SVDA AddIconByEncoding icon MIME-encoding MIME-encoding .

    аналогично, но определяется не по имени файла, а по MIME-кодировке (типа x-compress).
  • SVDA AddIconByType icon MIME-type MIME-type .

    аналогично, но определяется по MIME-тип (например, text/html)
  • SVDA DefaultIcon url

    если никакая иконка не подошла, то будет использоватся эта
  • SVDA DirectoryIndex local-url local-url .

    задает имя файла (относительно запрашиваемо директории), в котором лежит индек директории (по умолчанию - index.html)
  • SVDA FancyIndexing on |off

    делать красивый индекс ( возможность сортировки по столбцам)
  • SVDA HeaderName filename

    в качестве заголовка индекса будет вставлен указанный файл (сначала ищется файл filename .html
    . затем просто filename ).
  • SVDA IndexIgnore file file .

    список файлов, которые надо скрывать. file задается суффиксом, частичным именем файла, wild-card или цел именем.
  • SVDA IndexOptions [+ |- ]option [+ |- ]option . (оп сливаются с учетом знаков)
    • FancyIndexing - делать красивый индекс ( возможность сортировки по столбцам)
    • IconHeight [=pixels]
    • IconsAreLinks - для fancy indexing
    • IconWidth [=pixels]
    • NameWidth =[n | *] - ширина колонки (* - использовать длину самого длинного имени файла)
    • ScanHTMLTitles - вытаскивать описание файла из HTML-текста (только fancy indexing)
    • SuppressColumnSorting - имена колонок не будут вызывать сортировку индекса при fancy indexing
    • SuppressDescription - не включать колонк описанием файла при fancy indexing
    • SuppressHTMLPreamble - подавить вставку заголовка пере включением файла, определенного по HeaderName
    • SuppressLastModified - подавление колонки при fancy indexing
    • SuppressSize - подавление колонки при fancy indexing
  • SVDA ReadmeName filename

    в конец индекса будет вставлен указанный файл (сначала ищется файл filename .html. затем просто filename ).

  • Вызов CGI, SSI и т.п.
    • CGI: любой файл с MIME-типом application/x-httpd-cgi (директива AddType или ScriptAlias) =или хендлером cgi-script (директива addHandler) будет обрабатываться модулем cgi.
    Перед вызовом будут добавлены переменные окружения, определенные стандартом. а также DOCUMENT_ROOT, REMOTE_HOST, REMOTE_IDENT и REMOTE_USER (если эта информация доступна).
    • S ScriptLog filename - журнал ошибок
    • S ScriptLogLength size - максимальный размер журнала ошибок (по умолчанию - 10 МБ)
    • S ScriptLogBuffer size - размер тела PUT или POST (по умолчанию - 1024)
    • SV SetEnv variable value - установка переменных окружения перед запуском CGI
  • SV PassEnv variable variable . передaча указанных переменных окружения на момент запуска httpd в CGI или SSI
  • SV UnsetEnv variable variable .

    удалить указанные переменные из окружения перед запуском CGI или SSI
  • SSI
  • Карта, разбираемая сервером, (image map) не используется и не описывается (пусть разбор идет только на клиентской стороне). Выдача информации о составе модуле сервера (mod_info):
    • SVDA обеспечение доступа к информации (вместо /server-info можно указать другой адрес, рекомендуется ограничить доступ):

    < Location /server-info >

    SetHandler server-info

    < /Location >
  • SV AddModuleInfo module-name string

    срока будет разобрана как HTML-документ и показана в поле "дополнительная информация о модуле"

  • Журналы (модуль mod_log_config; журнал ошибок конфигурируется другими средствами)

    Каждый виртуальный сервер может вест ипроизвольное число журналов в различных форматах.

    Директивы (рекомендуется использовать только LogFormat для определения формата и CustomLog для создания журнала)
    • SV CookieLog filename
    Только для совместимости со старым модулем mod_cookie. Рекомендуется использовать mod_usertrack и CustomLog.
  • SV CustomLog файл-или-канал формат-или-имя-формата

    Вести журнал определенного формата в указанном файле или подать на вход программе. Имя файла либо полностью, либо относительно ServerRoot. Канал записывается как символ "|", за которым идет имя запускаемой команды. Журнал подается на стандартный вход команды, которая запускается с теми же правами, что и httpd. Имя формата определяется в LogFormat
  • SV LogFormat формат [имя-формата ]

    Определить формат указанным именем. По умолчанию - "%h %l %u %t \"%r\" %s %b" - так называемый Common Log Format (CLF)
  • SV TransferLog файл-или-канал

    аналогично CustomLog, но формат определяется в предыдущей LogFormat без имени.

  • Формат журнала: каждый запрос к сервер порождает строку в журнале, состоящую из слов (token), разделенных пробелами. Если слово пусто, то оно записывается как знак минус. Если слово содержит пробелы, то оно должно заключаться в кавычки( это надо само предусмотреть при задании формата). Пр задании формата используются литеральные символы, которые копируются в журнал директивы, которые начинаются со знака "процент" завершаются однобуквенным имене директивы. Между ними может стоять условие в виде списка кодов завершения через запятую (м.б. предваренных восклицательным знаком) - если условие не выполняется, то вместо token записывается минус. Директива в описании формата замещается соответствующим значением. Директивы:
    • %b - количество посланных байт, кроме HTTP-заголовка
    • %f - имя файла
    • %<имя>e - значение переменной окружения.
    • %h - имя удаленного хоста
    • %a - адрес удаленного хоста
    • %<имя-заголовка>i - значение заголовка запроса. Наиболее часто используются (где взять весь список?)
      • Referer - откуда была ссылка на документ
      • User-agent - что сказал о себе броузер
    • %l - имя удаленного пользователя (есл задействован ident)
    • %<имя-заметки>n - содержимое заметк указанным именем, сгенеренной другим модуле
    • %<имя-заголовка>o - значение заголовка ответа
    • %p - канонический номер порта сервера
    • %P - pid процесса, обслуживающего запро
    • %r - первая строка запроса
    • %s - статус запроса (ко возврата)
    • %t - время в CLF-формате ([day2d /month3l /year4d :hour2l :minute2l :second2l zone ]. где zone в формате [+ |- ]hour2dmin2d )
    • %<формат>t - время формат выдачи описан в strftime(3)
    • %u - имя авторизованного пользователя (если статус не равен 401)
    • %U - запрошенный URL
    • %v - канонический ServerName ( как сделать здесь имя виртуального хоста? )
    Русификация (mod_charset)

    Занимается перекодированием с русского на русский из кодировки хранения в кодировку пересылки (или из полученной от пользователя кодировки в кодировку хранения).

    Директивы
    • определение кодировки и таблиц перекодировки
      • SV CharsetDecl имя-кодировки ru [ S ] ( флаг S подавляет выдачу charset=. клиенту)
      • SV CharsetRecodeTable из-какой в-какую имя-файла-с-таблицей [ имя-файла-с-обратной-таблицей ] (обратная таблица может создаваться автоматически)
      • SV CharsetWideRecodeTable из-какой в-какую имя-файла-с-таблицей (для перекодировок из символа в строку: например, для транслитерации)
      • SVDLA CharsetAlias официальное-имя синоним . (определение синонимов для имени кодировки)
    • определение кодировки хранения (HTML/CGI/SSI)
      • SVDLA CharsetSourceEnc имя-кодировки
      • SVDLA CharsetByExtension имя-кодировки .ext1 .
      • SVDLA CharsetProcessType mime-type (какие типы файлы надо обрабатывать; всегда обрабатываются - text/*)
    • определение кодировки клиента
      • явно (по HTTP-заголовкам Accept-Charset: или Accept: text/x-cyrillic-. )
      • SVDLA CharsetPriority имя-кодировки1 . (определение приоритета, если клиент задает несколько Accept, при равенстве приоритетов - по порядку в описании)
      • SVDLA CharsetBrokenAccept Agent-Substring accept_charset_string (игнорировать данный загловок Accept от данного клиента - использовать другия механизмы для определения типа клиентской кодировки)
      • SVDLA CharsetSelectionOrder Rule1 . (определяет приоритет способов определения кодировки клиента, по умолчанию - Portnumber Hostname URIHostname EnvVariable Dirprefix Useragent)
        • Portnumber (по номеру порта, см. CharsetByPort)
        • Hostname (если каноническое имя хоста начинается с имени кодировки или его синонима, то выбирается эта кодировка)
        • URIHostname (если имя в заголовке Host. начинается с имени кодировки или его синонима, то выбирается эта кодировка)
        • EnvVariable (по переменной FORCE_CHARSET. определенной внешними модулями, например, module_rewrite )
        • Dirprefix (по началу имени директории)
        • Useragent (по HTTP-заголовку User-Agent. см. CharsetAgent)
      • SVDLA CharsetDefault имя-кодировки (принимается в качестве кодировки клиента, если все остальные способы не помогли)
      • SVDLA CharsetByPort имя-кодировки номер-порта
      • SVDLA CharsetAgent имя-кодировки шаблон . (не регулярные выражения, а просто подстроки)
    • дополнительная обработка специфических случаев
      • SVDLA AddHandler strip-meta-http .ext1 . (удалять теги "META HTTP-EQUIV=. charset=. " из HTML-файлов перед передачей их клиенту; не очень хорошая идея - конфликтует с другими обработчиками, но как еще бороться с FrontPage, который их вставляет, и Netscape/IE, которые встретов такую строчку в HTML-коде, перестают обращать внимание на HTTP-заголовок с правильно выставленным charset. Подробности здесь)
      • SVDLA CharsetBadAgent шаблон . (клиентским программам, подпадающим под шаблон, не будет выдаваться строка charset = в HTTP-заголовке Content-type )
      • SVDLA CharsetErrReject On | Off (что делать, если клиент запрашивает неизвестную кодировку в Accept/Accept-charset: выдавать сообщение об ошибке или (по умолчанию) пытаться определить "более правильную" кодировку)
      • SVDLA CharsetUseMultiViews Off
      • SVDLA CharsetRecodeHeaders Off (надеюсь, что в заголовках русского текста не будет)
      • SVDLA CharsetDisable On | Off (выключить работу модуля для данного сервера/директории)
      • SVDLA CharsetRecodeFilenames On | Off (перекодировать имена файлов; по умолчанию включена!)
      • SVDLA CharsetOverrideExpires On | Off (если включен - по умолчанию - то заменять заголовки Expires. сгенерированные другими модулями на свои)
      • SVDLA CharsetDisableForcedExpires On | Off (если выключен - по умолчанию - то сервер выдает заголовок "Expires: 1 Jan 1970" дабы документ не кешировался, если его кодировка определилась по User-Agent или Accept-charset. Рекомендуется использовать для форм или frameset: иначе Back будет возвращать на пустую форму)
      • SVDLA CharsetRecodeMethodsIn метод 1. (включить обработку запроса для данного метода: GET, POST, PUT, ALL (по умолчанию), NONE)
      • SVDLA CharsetRecodeMethodsOut метод 1. (включить обработку ответа для данного метода: GET, POST, PUT, ALL (по умолчанию), NONE)
      • SVDLA CharsetRecodeMultipartForms On (надо выключить, если клиент передает с помощью POST двоичные данные)
      • SVDLA CharsetDisableAcceptCharset Off
    • увеличение кешируемости
      • SVDLA CharsetAutoRedirect - позволяет обеспечить кешируемость документов с помощью автоматического перенаправления запроса на документ с тем же содержимым, но с "жестким" определением кодировка (по порту, по имени хоста, директории, а не User-Agent или Accept. Это обеспечивает кеширование, но порождает лишний запрос. Проблемы также с директивой Redirect в случае с определением кодировки по номеру порта (CharsetSoftRedirect, CharsetSoftRedirectPermanent, CharsetSoftRedirectTemp).
      • SVDLA CharsetNormalizeToURL
      • SVDLA CharsetNormalizeTypes
      • SVDLA CharsetRedirectFromOriginalURL
      • SVDLA CharsetNoAutoRedirectForDefaultCharset
    Дополнительные переменные (для CGI, других модулей и SSI)
    • CHARSET (кодировка клиента)
    • SOURCE_CHARSET (CGI д.олжен выводить в той же кодировке)
    • CHARSET_SERVER_NAME
    • CHARSET_SERVER_PORT
    • CHARSET_HTTP_METHOD (строка "http://" или "https://", т.е. полный URL запроса восстанавливается как $$$
    • CHARSET_SAVED_QUERY_STRING (QUERY_STRING до перекодировки)
    • CHARSET_SAVED_PATH_INFO (PATH_INFO до перекодировки)
    Переменные окружения.
    • CHARSET="koi8-r" - русификация
    • CHARSET_DETERMINED_BY="UserAgent" - русификация
    • CHARSET_HTTP_METHOD="http://" - русификация
    • CHARSET_SERVER_NAME="имя-определенное-по-IP:80" - русификация
    • CHARSET_SERVER_PORT="80" - русификация
    • DOCUMENT_ROOT="абсолютное-имя-директории-документов-виртуального-сервера"
    • GATEWAY_INTERFACE="CGI/1.1"
    • HTTP_ACCEPT="image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*"
    • HTTP_ACCEPT_CHARSET="iso-8859-1,*,utf-8"
    • HTTP_ACCEPT_LANGUAGE="ru, en"
    • HTTP_CACHE_CONTROL="max-age=259200"
    • HTTP_CONNECTION="keep-alive"
    • HTTP_HOST="www.printhouse.ru" - если клиент посылает поле HOST в запросе
    • HTTP_IF_MODIFIED_SINCE="Wednesday, 26-Jul-00 15:20:17 GMT; length=1437"
    • HTTP_USER_AGENT="Mozilla/4.05 [en] (X11; I; SunOS 5.5 sun4m)"
    • HTTP_VIA="1.0 acache.deol.ru:3129 (Squid/2.3.STABLE1)" - proxy
    • HTTP_X_FORWARDED_FOR="195.161.72.28" - proxy
    • PATH="директории, в которых ищутся исполняемые программы"
    • QUERY_STRING=""
    • REMOTE_ADDR="клиент или прокси"
    • REMOTE_PORT="39885"
    • REQUEST_METHOD="GET"
    • REQUEST_URI="/cgi-bin/printenv"
    • SCRIPT_FILENAME=абсолютное имя файла"
    • SCRIPT_NAME="логическое имя объекта"
    • SERVER_ADDR="IP адрес"
    • SERVER_ADMIN="почтовый адрес администратора сервера"
    • SERVER_NAME="имя-определенное-по-IP"
    • SERVER_PORT="80"
    • SERVER_PROTOCOL="HTTP/1.0"
    • SERVER_SIGNATURE="Apache/1.3.12 Server at dual.deol.ru Port 80 \n"
    • SERVER_SOFTWARE="Apache/1.3.12 (Unix) rus/PL29.4"
    • SOURCE_CHARSET="windows-1251" - русификация
    • URL_COUNT="2" - значение счетчика
    • URL_COUNT_DB="абсолютный адрес файла, в котором хранятся счетчики"
    • URL_COUNT_DINDEX="index.html index.htm"
    • URL_COUNT_FACEDIR="абсолютный адрес директории с картинками для цифр"
    • URL_COUNT_RESET="Wednesday, 26-Jul-00 19:20:17 MSD"
    • URL_COUNT_TIMEFMT="%A, %d-%b-%y %T %Z"
    • VRL_COVNT="II"

    Apache http-сервер:

  • скачать
  • скачать
  • Другие статьи, обзоры программ, новости