Софт-Архив

Http Сервер Apache img-1

Http Сервер Apache

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

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

Описание

Настройка HTTP-сервера Apache

Глава 25. Настройка HTTP-сервера Apache

В Red Hat Enterprise Linux представлен HTTP-сервер Apache версии 2.0. Если вы хотите перенести существующий файл конфигурации вручную, обратитесь за подробностями к руководству по переходу на другую версию /usr/share/doc/httpd- <ver> /migration.html или к Справочному руководству Red Hat Enterprise Linux.

Если вы настраивали HTTP-сервер Apache с помощью средства Настройка сервера HTTP (HTTP Configuration Tool) в предыдущих версиях Red Hat Enterprise Linux и затем выполняли обновление, вы можете преобразовать файл конфигурации в новый формат для версии 2.0 также с помощью средства Настройка сервера HTTP. Запустите Настройка сервера HTTP. внесите какие-либо в конфигурацию и сохраните его. Файл конфигурации будет сохранён в формате, совместимом с версией 2.0.

Для использования средства Настройка сервера HTTP должны быть установлены RPM-пакеты httpd и system-config-httpd. Также для этого необходима система X Window и права пользователя root. Чтобы запустить это приложение, выберите в Главном меню (Main Menu) => Системные параметры => Настройка сервера => HTTP или введите команду system-config-httpd в приглашении оболочки (например, в XTerm или терминале среды GNOME).

С помощью программы Настройка сервера HTTP вы можете настроить файл конфигурации HTTP-сервера Apache /etc/httpd/conf/httpd.conf. Она не использует старые файлы конфигурации, такие как srm.conf или access.conf ; оставьте их пустыми. В графическом интерфейсе вы можете настраивать разные параметры, например, виртуальные узлы, атрибуты протоколирования и максимальное количество соединений.

С помощью Настройки сервера HTTP можно настраивать только модули, включённые в состав Red Hat Enterprise Linux. Если установлены дополнительные модули, настроить с помощью этой программы их нельзя.

Не изменяйте файл конфигурации /etc/httpd/conf/httpd.conf. если хотите использовать эту программу. Программа Настройка сервера HTTP создаёт этот файл, когда вы сохраняете изменения и выходи из программы. Если вы хотите добавить дополнительные модули или параметры настройки, не поддерживаемые в Настройке сервера HTTP. вы не сможете использовать этот инструмент.

Ниже перечислены основные этапы настройки HTTP-сервера Apache, с помощью средства Настройка сервера HTTP.

Определить основные параметры на вкладке Основные (Main) .

Перейти на вкладку Виртуальные узлы (Virtual Hosts) и настроить параметры по умолчанию.

На вкладке Виртуальные узлы (Virtual Hosts) настроить виртуальный узел по умолчанию (Default Virtual Host).

Чтобы сервер обслуживал несколько URL или виртуальных узлов, добавьте дополнительные виртуальные узлы.

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

Apache - это

Apache это:

Apache HTTP-сервер (произносится /?.?p?.?i/. назван именем группы племён североамериканских индейцев апачей ; кроме того, является сокращением от англ.   a patchy server ; среди русских пользователей общепринято искажённое апа?ч ) — свободный веб-сервер .

Содержание

Сервер был написан в начале 1995 года и считается, что его имя восходит к шуточному названию «a patchy» (англ.   «заплаточка» ), так как он устранял ошибки популярного тогда сервера Всемирной паутины NCSA HTTPd 1.3. В дальнейшем, с версии 2.х сервер был переписан заново и теперь не содержит кода NCSA, но имя осталось. На данный момент разработка ведётся в ветке 2.2, а в версиях 1.3 и 2.0 производятся лишь исправления ошибок безопасности. На текущий момент последняя версия ветки 2.4 — 2.4.3 (21 августа 2012 ), для первой версии это 1.3.42.

Веб-сервер Apache разрабатывается и поддерживается открытым сообществом разработчиков под эгидой Apache Software Foundation и включён во многие программные продукты. среди которых СУБД Oracle и IBM WebSphere .

С апреля 1996 и до настоящего времени является самым популярным HTTP -сервером в Интернете. Статистика Netcraft показывает следующие данные об использовании Apache:

Архитектура

Ядро Apache включает в себя основные функциональные возможности, такие как обработка конфигурационных файлов, протокол HTTP и система загрузки модулей. Ядро (в отличие от модулей) полностью разрабатывается Apache Software Foundation. без участия сторонних программистов.

Теоретически, ядро apache может функционировать в чистом виде, без использования модулей. Однако, функциональность такого решения крайне ограничена.

Ядро Apache полностью написано на языке программирования C .

Система конфигурации

Система конфигурации Apache основана на текстовых конфигурационных файлах. Имеет три условных уровня конфигурации:

  • Конфигурация сервера (httpd.conf ).
  • Конфигурация виртуального хоста (httpd.conf c версии 2.2, extra/httpd-vhosts.conf).
  • Конфигурация уровня директории (.htaccess ).

Имеет собственный язык конфигурационных файлов, основанный на блоках директив. Практически все параметры ядра могут быть изменены через конфигурационные файлы, вплоть до управления MPM. Большая часть модулей имеет собственные параметры.

Часть модулей использует в своей работе конфигурационные файлы операционной системы (например /etc/passwd и /etc/hosts).

Помимо этого, параметры могут быть заданы через ключи командной строки .

Мультипроцессорные модели (MPM)

Для веб-сервера Apache существует множество моделей симметричной мультипроцессорности. Вот основные из них:

Установка Apache http server

Установка Apache http server

В данной статье мы научимся устанавливать web-сервер на компьютер. В качестве web-сервера мы будем использовать Apache http server версии 2.2.25. На момент написания статьи уже доступна версия 2.4.9, но только в исходных кодах, т.е. если Вы умеете их компилировать, то вперед, эта статья не для Вашего уровня, тут мы обсудим базовые сведенья по установке, так сказать для чайников.

Установку будем производить на Windows 7 64bit, но она ничем не будет отличаться и для других систем.

Первым делом решаем ребус со скачиванием дистрибутива Apache.

Для этого заходим на http://apache.org .  Переходим в верхнем меню в раздел Download. Листаем вниз до списка продуктов и выбираем Projects -> HTTP Server. Попадаем на страницу http://httpd.apache.org/.

Тут мы видим блоки, в подзаголовках которых написаны названия версий. А в нижней части каждого блока есть ссылка Download.

Открою секрет, все они ведут на одну и ту же страницу, соответственно, жмем на любую понравившуюся. На следующей странице с названием «Download - The Apache HTTP Server Project» мы опять видим блоки, каждый из которых отвечает за версию Apache. Внутри блока мы видим по нескольку ссылок на исходные коды в разных форматах и бинарные файлы.

Жмем на ссылку Binaries, как на рисунке выше. Попадаем на зеркало, которое сайт apache.org посчитал наиболее близким к Вам.

Тут Вы жмете на ссылку с названием Win32 и попадаем на страницу, на которой есть ссылки на установщики всех доступных версий и 2.0.65 и 2.2.25 (версии указаны на момент написания статьи).

Выбираем самую последнюю и скачиваем дистрибутив. Дистрибутив поставляется в формате стандартного пакету установки от Microsoft – MSI.

Далее нам надо стать администраторами на машине, на которую мы устанавливаем программу. Если Вы таковым не являетесь, то перелогиньтесь под учетной записью локального администратора, или позовите Вашего системного администратора на помощь.

Запускаем установщик скаченный ранее.

Нам говорят, что именно мы собираемся установить. Мы жмем NEXT.

На следующей странице нам предлагают согласиться с лицензионным соглашением. Ставим переключаетель в «I accept the terms in the license agreement» и жмем NEXT.

Нам говорят об авторах этой замечательной программы. Жмем NEXT.

На этом этапе с нас попросят ввести данные о нашем сервере. Вводим localhost в первые два поля, а в третье вводи Ваш почтовый ящик. Переключатель выставляем в «For all users». Указанный почтовый ящик будет отображаться в браузере, когда пользователи запросят несуществующую страницу, так что если Вы боитесь за дальнейший поток спама, то укажите не существующий адрес.

На следующем этапе оставляем «типичную» установку. И жмем NEXT.

Далее нас спросят о каталоге для установки программы. Поскольку я лично за поряднок, то почти никогда не меняю пути установки программы, чего и вам советую. Исключение могут составить случаи, когды Вы не являетесь локальным админом на компьютере. Ведь в дальнейшем Вы сто процентов будите править конфигурационный файл apache сервера httpd.conf, а он будет лежать в каталоге программы, куда у Вас может не оказаться прав.

После этого начнется установка. Если Вы локальный администратор компьютера, в системе отключен контроль учетных записей и не установлен антивирус, то все пройдет, как по маслу. В противном случае в процессе установки Вы будите получать от системы дополнительные вопросы. Сложность может возникнуть, если Ваш антивирус не настроен, чтобы задавать «разрешающие» вопросы, а просто молча без уведомлений, блокирует действия установщика. В этом случае постарайтесь просто отключить антивирус на время.

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

Если под перышком зеленый треугольничек, это значит, чтоhttp сервер запущен и все хорошо. Щелкнув по перышку Вы откроете меню, в котором будут пункты для остановки http сервера, перезапуска и запуска. Ими надо будет пользоваться, если Вы изменяете конфигурационный файл сервера httpd.conf.

Проверить правильность установки очень просто. Зайдите в браузер и наберите http://localhost/. Не забудьте набрать HTTP://, без него браузер, скорее всего, отправит Вас в посиковую систему искать в интернете сайт «localhost». Если все хорошо, то вы увидете в браузере контрольную страницу со словами «It works!».

Теперь нам надо проверить, виден ли наш сервер на других компьютерах локальной сети. Для этого на другом компьютере откройте браузер и напишите в строке http://192.168.1.108/ где 192.168.1.108 – ip адрес компьютера, на который установлен Apache Http Server. Вместо IP можно указывать имя компьютера.

Теперь немного о том, что где лежит:

1. Конфигурационный файл httpd.conf лежит в каталоге установки программы в подкаталоге «conf». У меня полный путь к нему выглядит так C:\Program Files (x86)\Apache Software Foundation\Apache2.2\conf

2. Ваш сайт лежит тоже в каталоге программы в подкаталоге htdocs. Соответственно у меня это C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs

3. По умолчанию Apache настроен, искать в каталоге сайта файл index.html.

4. Если создать в каталоге htdocs подпапку (например «1с-web»), и в неё поместить свой index.html, то этот документ будет доступен по адресу в браузере http://localhost/1c-web или http://192.168.1.108/1c-web

На сегодня все, спасибо за внимание

HTTP сервер Apache

HTTP сервер Apache

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

Рабочая лошадка 1.1b4 ( проблема-2000 при использовании include и генерации индексов ) со своей русификацией (mod_rcs) счетчиком (mod_cntr).

Текущая (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)

    AddModule mod_cntr.c

    CounterAutoAdd On

    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. Другие формы цифр можно взять здесь преобразовать с помощью renamegif.pl. У меня их достаточно осталось от предыдущей версии.
  9. преобразовать старые счетчики с помощью updatedbm.pl ( не работает )
  10. создать собственно файлы, в которых будут храниться счетчики, с соответствующими правами (nobody:nobody). Не давать же nobody возможность создавать файлы в этой директории.
  11. новый формат использования в html-тексте

    img src="http://linuxland.itam.nsc.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%D0%BC%D0%B5%D0%BD%D1%8C%D1%88%D0%B5!--#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 - не надо редактировать
      • 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 добавляем, чтобы явно знать какой виртуальный хост обработал заявку - 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 со своего домена
      • описание виртуальных хостов
    • .htaccess в директориях
    • линк
      • share
        • cgi-bin
        • icons
        • htdocs
    • конфигурация дополнительных модулей
      • mod_cntr
      • mod_charset (руссификация)
        • включение кодировок и добавление алиасов mac (x-mac-cyrillic) и lat (translit)
  • дырки в firewall
    • на входе в компьютер
    • для диалапных клиентов
    • для доступа извне
  • позже разобраться
    • DSO
    • suexec
    • perl
    • php3
  • Тестируем работоспособность (здесь не нужен 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: любой документ хендлером server-parsed (директива AddHandler и AddType text/html для того же суффикса) будет обрабатываться модулем include (необходимо установить опцию Includes для данно директории).

    Коман оформляются как SGML-комментарии:

    меньше!--#команда <атрибут =значение > --больше

    команды:
    • config - атрибуты:
      • errmsg - текст сообщения, посылаемый клиенту в случае ошибк разбора SSI
      • sizefmt - формат размера файла
        • bytes
        • abbrev - в Kb или Mb
      • timefmt - строка, которая используется strftime(3) при выдаче дат
    • echo - печать значен переменных, имена которых задаются в атрибутах
    • exec - выполнить команду или CGI скрипт (если нет опции IncludesNOEXEC)
      • cgi - имя CGI скрипта (если имя относительное, то относительно текущего документа), должен лежать в допустимом месте. PATH_INFO и QUERY_STRING наследуется из текущего документа. Include-переменные добавляются к стандартному CGI-окружению. Если скрипт возвращает заголовок Location. то он преобразуется в HTML anchor.
      • cmd - указанная команда выполняется, используя /bin/sh. Include-переменные передаются в команду.
    • fsize - печать размера файла
      • file - имя файла (м.б. относительно текущего документа)
      • virtual - URL (м.б. относительно текущего документа)
    • flastmode - время последне модификации файла
      • file - аналогично fsize
      • virtual - аналогично fsize
    • include - вставить текст другого документа или файла (можгут быть вложенные include). Вставляемый файл контролируется на право доступа обычн образом. Если в текуще директории действует опция IncludesNOEXEC, а вставляемый документ содержит вызов CGI, то документ не вставляется.
      • file - только относительно текущего документа (никаких абсолютных имен или имен, начинающихся с ../ )
      • virtual - URL. Не может содержать схему или имя хоста. М.б. относительно текущего документа. Может содержать query.
    • printenv - печать всех определенных переменных окружения и их значен
    • set - установить значение переменной окружения
      • var - имя переменно
      • value - значение переменно
    Дополнительные (к стандарту CGI) переменные окружения:
    • DATE_GMT
    • DATE_LOCAL
    • DOCUMENT_NAME (имя файла без имен директории)
    • DOCUMENT_URI (URL запрошенного (не текущего) документа)
    • LAST_MODIFIED

    Внутри строки, заключенной в кавычки в теле директивы SSI, происходит подстановка перемнной ее значением как в shell.

    Условное выполнение
    • меньше! --#if expr="test_condition " --больше
    • меньше! --#elif expr="test_condition " --больше
    • меньше! --#else --больше
    • меньше! --#endif --больше
    Тестовые условия (если строка2 заключена в слеши, то она интерпретируется как регулярное выражение; "=" и "!=" имеет больший приоритет, чем "_амперсенд__амперсенд_" и "||"; "!" - еще больший; все, что не является переменной ил оператором, рассматривается как строка; строки могут быть заключены в апострофы; если строка содержит пробелы, то она ДОЛЖНА быть заключена в апострофы; две строки рядо конкатенируются через пробел):
    • строка - истина, если строка не пуста
    • строка1 = строка2
    • строка1 != строка2
    • строка1 меньше строка2
    • строка1 меньше= строка2
    • строка1 больше строка2
    • строка1 больше= строка2
    • (test_condition)
    • . test_condition
    • test_condition1 _амперсенд__амперсенд_ test_condition2
    • test_condition1 || test_condition2
  • SVDA XBitHack status статус влияет на обработку файлов, имеющих MIME-тип text/html:
    • off (по умолчанию)
    • on - если файл имеет установленный x-бит для владельца, то он рассматривается как server parsed
    • full - так же как on, но проверяется x-бит для группы и есл установлен, то посылается заголовок Last-modified date (в соответствии со времене последне модификации файла). Это позволяет кешировать документ.
  • Карта, разбираемая сервером, (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 - значение переменной окружения. Наиболее часто используются (где взять весь список?)
      • Referer - откуда была ссылка на документ
      • User-agent - что сказал о себе броусер
    • %h - имя удаленного хоста
    • %a - адрес удаленного хоста
    • %<имя-заголовка>i - значение заголовка запроса
    • %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 до перекодировки)