@ Карта сайта News Автора!

Bog BOS: Apache: HTTP сервер. Установка, настройка и русификация

apache inn MySQL nntpcache Cyrus IMAP exim Squid ssh syslog tacacs ProFTPD wu-ftpd xntpd

Последние изменения:
2024.11.22: sysadmin: systemd-journald (централизованное хранение)
2024.11.11: sysadmin: Linux: пространства имён
2024.11.06: sysadmin: настройка TCP/IP в Linux: виртуальный интерфейс и виртуальный мост
2024.10.25: sysadmin: Linux VFS, атрибуты, расширенные атрибуты, ACL

Последнее изменение файла: 2009.10.29
Скопировано с www.bog.pp.ru: 2024.11.23

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
  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
    5. В 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>
    6. в поставку входит show-digits.cgi, который показывает список шрифтов. Его надо установить.
    7. в поставку входят шрифты default и tiny. Другие формы цифр можно было взять на www.digitimania.com и преобразовать с помощью renamegif.pl. У меня их достаточно осталось от предыдущей версии.
    8. преобразовать старые счетчики с помощью updatedbm.pl (не работает)
    9. создать собственно файлы, в которых будут храниться счетчики, с соответствующими правами (nobody:nobody). Не давать же nobody возможность создавать файлы в этой директории!.
    10. новый формат использования в html-тексте
      img src="/server-cntr/path-info?face=facename_амперсенд_ndigit=n_амперсенд_fcount=n_амперсенд_trans
      где
      • path-info - имя файла, счетчик которого надо вставить (раньше было url=)
      • face - имя шрифта (раньше было type=)
      • ndigit - число цифр (раньше было length=)
      • fcount - фиктивное значение счетчика (раньше было count=)
      • trans - прозрачный фон
    11. Переменные для SSI и CGI (использование: <!--#echo var="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 счетчик время-старта
  6. если надо, то очистка от старой версии (make clean)
  7. ./configure
  8. make
  9. make install (в /usr/local/apache), используется Layout Apache; нужны права root; не портит старые файлы настройки и т.п. (но запихивает образцовый сайт - свою документацию - в htdocs) ═
  10. конфигурируем сервер (все что по умолчанию, особенно всякие глупости типа имен файлов, не упоминается)
  11. дырки в firewall
  12. PHP
  13. позже разобраться

Тестируем работоспособность (здесь не нужен 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. небольшие исправления:
  5. в src/Configure.tmpl
  6. тащим webcounter (2.2.4 на 21 января 1999) - описан выше
  7. ./configure
  8. make (не забудь /usr/ccs/bin в PATH)
  9. make install (в /usr/local/apache), используется Layout Apache, а не GNU; описан выше
  10. конфигурируем сервер (все что по умолчанию, особенно всякие глупости типа имен файлов, не упоминается)

  11. изменяем /etc/rc2.d/S99httpd, чтобы он запускал apachectl (start, stop, restart)
  12. если не хватает дескрипторов файлов по умолчанию (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.
  13. задаем права на исполнение тех файлов в cgi-bin, которые нужны
  14. поменять в crontab процедуру регулярной очистки httpd на использование apachectl
  15. когда все будет хорошо - удалить старый сервер

Конфигурация

Конфигурация сервера задается в файлах 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), каждая директива определяет поведение одного из модулей и имеет смысл только если этот модуль включен пр сборке.

Контексты:

Порядок применения директив определения свойств и прав доступа к объекту (все, кроме Directory, применются по порядку; Directory применяются от кратчайшего пути к само длинному; секции внутри VirtualHost применяются после тех, которые снаружи):

  1. секция Directory (кроме регулярных выражений) и .htaccess (.htaccess перебивает Directory, если разрешено AllowOverride)
  2. секция DirectoryMatch и Directory регулярные выражения
  3. секции Files и FilesMatch
  4. секции Location и LocationMatch

Права доступа, свойства объекта и где его взять

Общие характеристик сервера/виртуального сервера

Виртуальные сервера

Преобразование адресов

Преобразование http-заголовков (в стиле метафайла CERN и др.)

Безопасность

Индекс директории (автоматическая генерация, если отсутствует вручную сделанный индексный файл и разрешена Option Indexes)

Вызов CGI, SSI и т.п.

Карта, разбираемая сервером, (image map) не используется и не описывается (пусть разбор идет только на клиентской стороне).

Выдача информации о составе модуле сервера (mod_info):

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

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

Директивы (рекомендуется использовать только LogFormat для определения формата и CustomLog для создания журнала)

Формат журнала: каждый запрос к сервер порождает строку в журнале, состоящую из слов (token), разделенных пробелами. Если слово пусто, то оно записывается как знак минус. Если слово содержит пробелы, то оно должно заключаться в кавычки( это надо само предусмотреть при задании формата). Пр задании формата используются литеральные символы, которые копируются в журнал директивы, которые начинаются со знака "процент" завершаются однобуквенным имене директивы. Между ними может стоять условие в виде списка кодов завершения через запятую (м.б. предваренных восклицательным знаком) - если условие не выполняется, то вместо token записывается минус. Директива в описании формата замещается соответствующим значением. Директивы:

Русификация (mod_charset)

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

Директивы

Дополнительные переменные (для CGI, других модулей и SSI)

Переменные окружения.

@ Карта сайта News Автора!

Bog BOS: Apache: HTTP сервер. Установка, настройка и русификация

apache inn MySQL nntpcache Cyrus IMAP exim Squid ssh syslog tacacs ProFTPD wu-ftpd xntpd

Последние изменения:
2024.11.22: sysadmin: systemd-journald (централизованное хранение)
2024.11.11: sysadmin: Linux: пространства имён
2024.11.06: sysadmin: настройка TCP/IP в Linux: виртуальный интерфейс и виртуальный мост
2024.10.25: sysadmin: Linux VFS, атрибуты, расширенные атрибуты, ACL



Copyright © 1996-2024 Sergey E. Bogomolov; www.bog.pp.ru