Инсталлированные файлы
> /etc/squid > /etc/squid/mib.txt > /etc/squid/squid.conf.default > /etc/squid/squid.conf > /etc/squid/mime.conf.default > /etc/squid/mime.conf > /etc/squid/errors > /etc/squid/errors/ERR_ACCESS_DENIED > /etc/squid/errors/ERR_CACHE_ACCESS_DENIED > /etc/squid/errors/ERR_CACHE_MGR_ACCESS_DENIED > /etc/squid/errors/ERR_CANNOT_FORWARD > /etc/squid/errors/ERR_CONNECT_FAIL > /etc/squid/errors/ERR_DNS_FAIL > /etc/squid/errors/ERR_FORWARDING_DENIED > /etc/squid/errors/ERR_FTP_DISABLED > /etc/squid/errors/ERR_FTP_FAILURE > /etc/squid/errors/ERR_FTP_FORBIDDEN > /etc/squid/errors/ERR_FTP_NOT_FOUND > /etc/squid/errors/ERR_FTP_PUT_CREATED > /etc/squid/errors/ERR_FTP_PUT_ERROR > /etc/squid/errors/ERR_FTP_PUT_MODIFIED > /etc/squid/errors/ERR_FTP_UNAVAILABLE > /etc/squid/errors/ERR_INVALID_REQ > /etc/squid/errors/ERR_INVALID_URL > /etc/squid/errors/ERR_LIFETIME_EXP > /etc/squid/errors/ERR_NO_RELAY > /etc/squid/errors/ERR_ONLY_IF_CACHED_MISS > /etc/squid/errors/ERR_READ_ERROR > /etc/squid/errors/ERR_READ_TIMEOUT > /etc/rc.d/rc4.d/S90squid > /etc/rc.d/rc5.d/S90squid > /etc/rc.d/rc6.d/K25squid > /etc/logrotate.d/squid > /usr/lib/squid > /usr/lib/squid/dnsserver > /usr/lib/squid/unlinkd > /usr/lib/squid/cachemgr.cgi > /usr/lib/squid/icons > /usr/lib/squid/icons/anthony-binhex.gif > /usr/lib/squid/icons/anthony-bomb.gif > /usr/lib/squid/icons/anthony-box.gif > /usr/lib/squid/icons/anthony-box2.gif > /usr/lib/squid/icons/anthony-c.gif > /usr/lib/squid/icons/anthony-compressed.gif > /usr/lib/squid/icons/anthony-dir.gif > /usr/lib/squid/icons/anthony-dirup.gif > /usr/lib/squid/icons/anthony-dvi.gif > /usr/lib/squid/icons/anthony-f.gif > /usr/lib/squid/icons/anthony-image.gif > /usr/lib/squid/icons/anthony-image2.gif > /usr/lib/squid/icons/anthony-layout.gif > /usr/lib/squid/icons/anthony-link.gif > /usr/lib/squid/icons/anthony-movie.gif > /usr/lib/squid/icons/anthony-pdf.gif > /usr/lib/squid/icons/anthony-portal.gif > /usr/lib/squid/icons/anthony-ps.gif > /usr/lib/squid/icons/anthony-quill.gif > /usr/lib/squid/icons/anthony-script.gif > /etc/squid/errors/ERR_SHUTTING_DOWN > /etc/squid/errors/ERR_SOCKET_FAILURE > /etc/squid/errors/ERR_TOO_BIG > /etc/squid/errors/ERR_UNSUP_REQ > /etc/squid/errors/ERR_URN_RESOLVE > /etc/squid/errors/ERR_WRITE_ERROR > /etc/squid/errors/ERR_ZERO_SIZE_OBJECT > /etc/rc.d/init.d/squid > /etc/rc.d/rc0.d/K25squid > /etc/rc.d/rc1.d/K25squid > /etc/rc.d/rc2.d/K25squid > /etc/rc.d/rc3.d/S90squid > /usr/lib/squid/icons/anthony-sound.gif > /usr/lib/squid/icons/anthony-tar.gif > /usr/lib/squid/icons/anthony-tex.gif > /usr/lib/squid/icons/anthony-text.gif > /usr/lib/squid/icons/anthony-unknown.gif > /usr/lib/squid/icons/anthony-xbm.gif > /usr/lib/squid/icons/anthony-xpm.gif > /usr/sbin/RunCache > /usr/sbin/RunAccel > /usr/sbin/squid > /usr/sbin/client > /var/log/squid
Использование библиотеки GNU malloc для улучшения производительности Squid
Если вы страдаете от ограничения памяти на вашей системе, то производительность кэша Squid будет пониженной. Для решения этой проблемы, вы можете связать Squid с внешней библиотекой malloc, такой как GNU malloc. Чтобы Squid использовал GNU malloc как внешнюю библиотеку выполните следующие шаги:
Пакеты
Домашняя страница GNU malloc:
Вы должны скачать: malloc.tar.gz
[root@deep /]# cp malloc.tar.gz /var/tmp
[root@deep /]# cd /var/tmp
[root@deep tmp]# tar xzpf malloc.tar.gz
Шаг 1
Компилируйте и инсталлируйте GNU malloc на вашей системе выполнив следующие команды:
[root@deep tmp]# cd malloc
[root@deep malloc]# export CC=egcs
[root@deep malloc]# make
Шаг 2
Копируйте файл “libmalloc.a” в каталог с вашими системными библиотеками под именем “libgnumalloc.a”.
[root@deep malloc]# cp libmalloc.a /usr/lib/libgnumalloc.a
Шаг 3
Копируйте файл “malloc.h” в каталог с системными заголовочными файлами под именем gnumalloc.h”.
[root@deep malloc]# cp malloc.h /usr/include/gnumalloc.h
Squid автоматически определит файлы “libgnumalloc.a” и “gnumalloc.h” и будет использовать их для улучшения производительности кэша.
Компиляция и оптимизация
Шаг 1
Перейдите в каталог с исходными кодами Squid и введите следующие команды на вашем терминале:
CC="egcs" \
CFLAGS="-O9 -funroll-loops -ffast-math -malign-double -mcpu=pentiumpro -march=pentiumpro -fomit-frame-pointer -fno-exceptions" \
./configure \
--prefix=/usr \
--exec-prefix=/usr \
--bindir=/usr/sbin \
--libexecdir=/usr/lib/squid \
--localstatedir=/var \
--sysconfdir=/etc/squid \
--enable-delay-pools \
--enable-cache-digests \
--enable-poll \
--disable-ident-lookups \
--enable-truncate \
--enable-heap-replacement
Эти опции говорят Squid:
Использовать delay pools для ограничения и контроля использования полосы пропускания пользователями.
Использовать Cache Digests для улучшения времени ответа клиентам и использования сети.
Использовать poll() вместо select(), так как это предпочтительней чем select.
Отключить ident-lookups для удаления кодов, которые выполняют Ident (RFC 931) lookups и уменьшить возможность denial-of-service.
Разрешить усекание, чтобы осуществить некоторое улучшение в производительности при удалении файлов.
Использовать возможность Squid, называемую heap-replacement, чтобы иметь возможность выбора различных вариантов алгоритма замены кэша вместо стандартного алгоритма LRU для улучшения производительности. Смотрите ниже для более детального объяснения.
Шаг 2
Сейчас, мы должны скомпилировать и инсталлировать Squid на сервере:
[root@deep squid-2.3.STABLE2]# make -f makefile
[root@deep squid-2.3.STABLE2]# make install
[root@deep squid-2.3.STABLE2]# mkdir -p /var/log/squid
[root@deep squid-2.3.STABLE2]# rm -rf /var/logs/
[root@deep squid-2.3.STABLE2]# chown squid.squid /var/log/squid/
[root@deep squid-2.3.STABLE2]# chmod 750 /var/log/squid/
[root@deep squid-2.3.STABLE2]# chmod 750 /cache/
[root@deep squid-2.3.STABLE2]# rm -f /usr/sbin/RunCache
[root@deep squid-2.3.STABLE2]# rm -f /usr/sbin/RunAccel
[root@deep squid-2.3.STABLE2]# strip /usr/sbin/squid
[root@deep squid-2.3.STABLE2]# strip /usr/sbin/client
[root@deep squid-2.3.STABLE2]# strip /usr/lib/squid/dnsserver
[root@deep squid-2.3.STABLE2]# strip /usr/lib/squid/unlinkd
[root@deep squid-2.3.STABLE2]# strip /usr/lib/squid/cachemgr.cgi
Команда “make -f” будет компилировать все исходные файлы в исполняемые двоичные, “make install” будет инсталлировать все исполняемые и сопутствующие им файлы в необходимые места. Команда “mkdir” создаст новый каталог “squid” под каталогом “/var/log”. Команда “rm -rf” удалит каталог “/var/logs”, так как этот каталог был создан для храннеия файлов регистрации, связанных со Squid, которые были перемещены в каталог “/var/log/squid”. Команда “chown” изменит владельца “/var/log/squid” на пользователя squid, и “chmod” изменит права доступа к каталогам “squid” и “cache” (0750/drwxr-x---) из соображений безопасности. Заметим, что мы удаляем небольшие скрипты “RunCache” и “RunAccel”, которые запускают Squid в режиме кэширования или акселератора, так как мы используем лучший скрипт “squid” расположенный в каталоге “/etc/rc.d/init.d/”. Команда “strip” уменьшит размер двоичных файлов для оптимизации их производительности.
Очистка после работы
[root@deep /]# cd /var/tmp
[root@deep tmp]# rm -rf squid-version/ squid-version.STABLEz-src.tar.gz
[root@deep tmp]# rm -rf malloc/ malloc.tar.gz (если вы используете внешнюю библиотеку GNU malloc)
Команды “rm” будет удалять все файлы с исходными кодами, которые мы использовали при компиляции и инсталляции Squid и GNU malloc. Также будут удалены сжатые архивы Squid и GNU malloc из каталога “/var/tmp”.
Конфигурации.
Все программное обеспечение, описанное в книге, имеет определенный каталог и подкаталог в архиве “floppy.tgz”, включающей все конфигурационные файлы для всех программ. Если вы скачаете этот файл, то вам не нужно будет вручную воспроизводить файлы из книги, чтобы создать свои файлы конфигурации. Скопируйте файлы связанные с Squid из архива, измените их под свои требования и поместите в нужное место так, как это описано ниже. Файл с конфигурациями вы можете скачать с адреса:
http://www.openna.com/books/floppy.tgz
Для запуска Squid в режиме httpd-акселератора следующие файлы должны быть созданы или скопированы на ваш сервер.
Копируйте squid.conf в каталог “/etc/squid/”.
Копируйте squid в каталог “/etc/rc.d/init.d/”.
Копируйте squid в каталог “/etc/logrotate.d/”.
Для запуска Squid в режиме кэширующего прокси-сервера следующие файлы должны быть созданы или скопированы на ваш сервер.
Копируйте squid.conf в каталог “/etc/squid/”.
Копируйте squid в каталог “/etc/rc.d/init.d/”.
Копируйте squid в каталог “/etc/logrotate.d/”.
Вы можете взять эти файлы из нашего архива floppy.tgz.
Конфигурация файла “/etc/logrotate.d/squid”
Настроим ваш файл “/etc/logrotate.d/squid” для автоматической ротации файлов регистраций каждую неделю.
Создайте файл squid (touch /etc/logrotate.d/squid) и добавьте в него:
/var/log/squid/access.log { weekly rotate 5 copytruncate compress notifempty missingok } /var/log/squid/cache.log { weekly rotate 5 copytruncate compress notifempty missingok } /var/log/squid/store.log { weekly rotate 5 copytruncate compress notifempty missingok # This script asks squid to rotate its logs on its own. # Restarting squid is a long process and it is not worth # doing it just to rotate logs postrotate /usr/sbin/squid -k rotate endscript }
Конфигурация файла “/etc/squid/squid.conf” для режима httpd-акселератора
Файл “squid.conf” используется для установки и конфигурирования всех опций для вашего прокси-сервера Squid. В конфигурационном файле приведенном ниже, мы будем настраивать Squid на работу в режиме httpd- акселератора. В этом режиме, если Веб сервер запущен на том же сервере где Squid, то вы должны настроить демон на порт 81. В случае с веб сервером Apache, вы можете сделать это назначив вместо 80 порта 81 в файле “httpd.conf”. Если Веб-сервер запущен на других серверах вашей сети, вы можете оставить тот же номер порта (80) для Apache, так как Squid подключен на другом IP адресе, где порт (80) не используется.
Редактируйте файл squid.conf (vi /etc/squid/squid.conf) и добавьте/измените следующие опции:
http_port 80 icp_port 0 acl QUERY urlpath_regex cgi-bin \? no_cache deny QUERY cache_mem 16 MB cache_dir ufs /cache 200 16 256 emulate_httpd_log on redirect_rewrites_host_header off replacement_policy GDSF acl all src 0.0.0.0/0.0.0.0 http_access allow all cache_mgr admin@openna.com cache_effective_user squid cache_effective_group squid httpd_accel_host 208.164.186.3 httpd_accel_port 80 log_icp_queries off cachemgr_passwd my-secret-pass all buffered_logs on
Эти опции обозначают следующее:
http_port 80
Опция “http_port” определяет номер порта на котором Squid слушает HTTP запросы клиентов. Если вы установите его в 80, у клиента будет создаваться иллюзия, что он соединяется с веб сервером Apache. Так как мы запускаем Squid в режиме акселератора, мы должны слушать 80 порт.
icp_port 0
Опция “icp_port” определяет номер порта на который Squid будет посылать и принимать ICP запросы от соседних кэшей. Мы должны установить эту опцию в 0, чтобы отключить эту возможность, так как мы настраиваем Squid для работы в режиме акселератора для Веб сервера. Возможность ICP нужна только в многоуровневых кэш окружениях с несколькими братскими и родительскими кэшами. Использование ICP в режиме акселератора будет добавлять нежелательные издержки в работе Squid.
acl QUERY urlpath_regex cgi-bin \? и no_cache deny QUERY
Внеся небольшие изменения в файл “squid.conf”, используемый для запуска Squid как http-акселератор, мы запустим его как кэширующий прокси сервер. Если Squid запущен как кэширующий прокси сервер, все пользователи вашей корпоративной сети смогут использовать его для доступа в интернет. В этой конфигурации, мы будем иметь полный контроль над проходящим трафиком и сможем определять политику просмотра, доступа и выкачивания. Вы также сможете контролировать использование полосы пропускания, времени соединения и т.д. Кэширующий прокси сервер может быть настроен на запуск как автономный сервер вашей корпорации или использование разделяемой иерархии кэшей с другими серверами в Интернет.
В первом примере, приведенном ниже, мы покажем как настроить Squid как автономный сервер, а затем немного поговорим о конфигурации иерархических кэшей, где два или более серверов кооперируются для предоставления документов друг другу.
Редактируйте файл squid.conf (vi /etc/squid/squid.conf) и добавьте/измените следующие опции для запуска кэширующего прокси сервера, как автономного сервера:
http_port 8080 icp_port 0 acl QUERY urlpath_regex cgi-bin \? no_cache deny QUERY cache_mem 16 MB cache_dir ufs /cache 200 16 256 redirect_rewrites_host_header off replacement_policy GDSF acl localnet src 192.168.1.0/255.255.255.0 acl localhost src 127.0.0.1/255.255.255.255 acl Safe_ports port 80 443 210 119 70 21 1025-65535 acl CONNECT method CONNECT acl all src 0.0.0.0/0.0.0.0 http_access allow localnet http_access allow localhost http_access deny !Safe_ports http_access deny CONNECT http_access deny all cache_mgr admin@openna.com cache_effective_user squid cache_effective_group squid log_icp_queries off cachemgr_passwd my-secret-pass all buffered_logs on
Большие отличия от конфигурации для режима httpd-акселератора вносит использование списков контроля доступа (ACL). Эта возможность позволяет ограничивать доступ базируясь на исходном IP адресе (src), IP адресе получателя (dst), исходном домене, домене назначения, времени и т.д. Много типов контроля существует благодаря этой возможности и вы должны посмотреть оригинальный файл “Squid.conf” для получения полного списка. Ниже приведены четыре основных типа:
acl имя тип данные | | | | acl some-name src a.b.c.d/e.f.g.h # ACL на основе IP адреса отправителя acl some-name dst a.b.c.d/e.f.g.h # ACL на основе IP адреса получателя acl some-name srcdomain foo.com # ACL на основе имени домена отправителя acl some-name dstdomain foo.com # ACL на основе имени домена назначения
Опции “acl QUERY urlpath_regex cgi-bin \? и no_cache deny QUERY” используются для того, чтобы некоторые объекты никогда не кэшировались, например файлы и каталога “cgi-bin”. Эта функция безопасности.
cache_mem 16 MB
Опция “cache_mem” определяет количество памяти (RAM) используемое для кэширования таких вызовов: In-Transit objects, Hot Objects, Negative-Cached objects. Это оптимизационная возможность. Важно заметить, что Squid может использовать намного больше памяти, чем значение этого параметра, и из этих соображений, если вы имеете для Squid 48 MB, вы должны здесь выделить 48/3 = 16 MB.
cache_dir ufs /cache 200 16 256
Опция “cache_dir” определяет по порядку: тип используемой системы хранения (ufs), имя каталога для кэша (/cache), объем дискового пространства выделяемый под этот каталог (200 Mbytes), число подкаталогов первого уровня, создаваемых в каталоге кэша (16 Level-1), и число подкаталогов второго уровня создаваемых под каждым подкаталогом первого уровня (256 Level-2). В режиме акселератора, эта опция напрямую связана с размером и количеством файлов, которое вы хотите обслуживать вашим Веб сервером Apache.
emulate_httpd_log on
Опция “emulate_httpd_log”, если установлена в “ON”, определяет, что Squid должен эмулировать формат файлов регистраций веб сервера Apache. Это очень полезно если вы хотите использовать программы третьих разработчиков, подобные Webalizer, для анализа файлов регистраций веб сервера (httpd).
redirect_rewrites_host_header off
Опция “redirect_rewrites_host_header”, если установлена в “OFF”, говорит Squid не переписывать любые хосты: заголовки в перенаправленных пакетах. Здесь рекомендуется установить значение “OFF”, если вы запускаете Squid в режиме акселератора.
replacement_policy GDSF
Опция “replacement_policy” определяет политику кэша Squid, используемую для определения, какие объекты в кэше должны быть заменены, когда прокси нужно освободить дисковое пространство. Политика Squid LRU используется по умолчанию, если вы во время компиляции не определили опцию “--enable- heap-replacement”. В нашей конфигурации, мы выбрали GDSF (Greedy-Dual Size Frequency), как политику по умолчанию. Смотрите и для большей информации.
acl all src 0.0.0.0/0.0.0.0 and http_access allow all
Опции “acl” и “http_access” определяют списки доступа применяемые на прокси сервере Squid. Наш “acl” и “http_access” не ограничивающие, они позволяют всем соединяться с прокси сервером, так как мы используем его для ускорения работы публичного веб сервера Apache. Смотрите вашу документацию по Squid для получения большей информации об использовании Squid в режиме кэширования.
cache_mgr admin
Опция “cache_mgr” определяет почтовый адрес администратора отвечающего за работоспособность прокси сервера Squid. Этот человек будет получать почту, если при работе Squid возникнут проблемы. Вы можете задать имя или полный почтовый адрес.
cache_effective_user squid и cache_effective_group squid
Опции “cache_effective_user” и “cache_effective_group” определяют UID/GID, под которыми будет запущен кэш. Не забудьте, никогда не запускайте Squid как “root”. В нашей конфигурации мы используем UID “squid” и GID “squid”.
httpd_accel_host 208.164.186.3 и httpd_accel_port 80
Опции “httpd_accel_host” и “httpd_accel_port” определяют IP адрес и номер порта реального HTTP сервера (например, Apache). В нашей конфигурации, реальный HTTP Веб сервер имеет адрес 208.164.186.3 (www.openna.com) и порт (80). “www.openna.com” это другой сервер в нашей сети, и так как прокси сервер Squid не находится на одном компьютере с Веб сервером Apache, мы используем порт (80) для нашего прокси сервера и порт (80) для Apache веб сервера.
log_icp_queries off
Опция “log_icp_queries” определяет хотите ли вы регистрировать ICP (ICP используется для обмена информации о наличии в соседних кэшах URL-ов) запросы в файл “access.log” или нет. Так как мы не используем ICP в режиме акселератора, мы можем спокойно установить ее в “OFF”.
cachemgr_passwd my-secret-pass all
Опция “cachemgr_passwd” определяет пароль, который будет требоваться для доступа к операциям из утилиты “cachemgr.cgi”. Эта CGI утилита создана для запуска через веб интерфейс и вывода статистических данных о конфигурации и работе Squid. <my-secret-pass> - это пароль, который вы выбрали, ключевое слово <all> определяет, что он будет один и тот же для всех действий доступных из этой программы. Смотрите раздел “Утилита cachemgr.cgi”, приведенный ниже в этой главе для получения большей информации.
buffered_logs on
Опция “buffered_logs”, если установлена в “ON”, может немного увеличить скорость записи некоторых файлов регистрации. Это оптимизационная возможность.
Как пример, ограничим доступ к вашему прокси серверу только вашими внутренними клиентами и определим диапазон портов к которым можно обращаться:
acl localnet src 192.168.1.0/255.255.255.0
acl localhost src 127.0.0.1/255.255.255.255
acl Safe_ports port 80 443 210 119 70 21 1025-65535
acl CONNECT method CONNECT
acl all src 0.0.0.0/0.0.0.0
http_access allow localnet
http_access allow localhost
http_access deny !Safe_ports
http_access deny CONNECT
http_access deny all
Эти acl будут разрешать доступ всем внутренним клиентам из диапазона приватных адресов класса C 192.168.1.0; также разрешается доступ с IP адреса localhost (специальный IP адрес используемый для доступа к самому себе). Затем мы выбираем диапазон портов (80=http, 443=https, 210=wais, 119=nntp, 70=gopher и 21=ftp), к которым внутренние клиенты могут обращаться, мы запрещаем метод CONNECT для предотвращения попыток подключения внешних пользователей к прокси серверу, и в заключении мы запрещаем доступ со всех IP адресов.
Конфигурация Netscape для работы с прокси сервером Squid
Если вы решили использовать Squid как кэширующий прокси сервер и позволять всем пользователям использовать его для доступа в Интернет, вы должны настроить соответствующим образом броузеры пользователей, чтобы они брали информацию со Squid, вместо прямого обращения в Интернет.
Для Netscape Communicator, выполните следующие шаги:
Откройте Netscape Communicator
Перейдите в меню Edit
Щелкните на Preferences …
Двойной щелчок мыши на Advanced category слевой стороны
Щелкните на подкатегории Proxies
Выберите с правой стороны радио кнопку Manual proxy configuration
Щелкните на кнопке View
Заполните поля с информацией о вашем прокси сервере
Например:
HTTP: 208.164.186.1 Port: 8080
Security: 208.164.186.1 Port: 8080
FTP: 208.164.186.1 Port: 8080
Gopher: 208.164.186.1 Port: 8080
WAIS: 208.164.186.1 Port: 8080
Многоуровневое Веб кэширование
Второй метод работы кэширующего прокси это так называемый “Multi-level Web Caching”, при котором вы сотрудничаете с большим числом других кэшей в Интрнет. В этом случае ваша организация использует кэши других прокси серверов и другие сервера используют ваш кэш. Следует заметить, что в этой ситуации, кэширующие прокси играют две различные роли в иерархии. Они могут быть настроены, как кэши, имеющие одного “родителя” (sibling) и иметь возможность выдавать документы, которые уже имеют, или настроены как родительские сервера и иметь возможность брать документы из других кэшей или непосредственно с серверов.
ЗАМЕЧАНИЕ. Хорошей стратегией для предотвращения большого сетевого трафика при отсутствии веб кэширования будет настройка несколько sibling кэшей и только небольшого числа родительских кэшей.
Настройка и оптимизация.
Шаг 1
Прокси-сервер Squid не должен запускаться из под пользователя root, и по этой причине мы создаем специального пользователя, не имеющего оболочки, для запуска Squid.
[root@deep /]# useradd -d /cache/ -r -s /dev/null squid >/dev/null 2>&1
[root@deep /]# mkdir /cache/
[root@deep /]# chown -R squid.squid /cache/
Первое, мы добавляем пользователя “squid”. Затем создаем каталог “/cache”, если этот каталог не существует. В заключении, мы изменяем владельца каталога “cache” на “squid”.
ЗАМЕЧАНИЕ. Обычно мы не нуждаемся в выполнении команды (mkdir /cache/), потому что мы уже создали этот каталог, когда разбивали наш жесткий диск при инсталляции Linux. Если этот раздел не существует, мы должны выполнить эту команду для создания каталога.
Шаг 2
Переместитесь в новый каталог Squid и выполните следующие команды на вашем терминале:
Редактируйте файл Makefile.in (vi +18 icons/Makefile.in) и измените следующие строки:
DEFAULT_ICON_DIR = $(sysconfdir)/icons
Должна быть:
DEFAULT_ICON_DIR = $(libexecdir)/icons
Мы изменили переменную (sysconfdir) на (libexecdir). Благодаря этому, каталог “icons” будет размещаться в “/usr/lib/squid”.
Редактируйте файл Makefile.in (vi +34 src/Makefile.in) и измените следующие строки:
DEFAULT_CACHE_LOG = $(localstatedir)/logs/cache.log
Должна быть:
DEFAULT_CACHE_LOG = $(localstatedir)/log/squid/cache.log
DEFAULT_ACCESS_LOG = $(localstatedir)/logs/access.log
Должна быть:
DEFAULT_ACCESS_LOG = $(localstatedir)/log/squid/access.log
DEFAULT_STORE_LOG = $(localstatedir)/logs/store.log
Должна быть:
DEFAULT_STORE_LOG = $(localstatedir)/log/squid/store.log
DEFAULT_PID_FILE = $(localstatedir)/logs/squid.pid
Должна быть:
DEFAULT_PID_FILE = $(localstatedir)/run/squid.pid
DEFAULT_SWAP_DIR = $(localstatedir)/cache
Должна быть:
DEFAULT_SWAP_DIR = /cache
DEFAULT_ICON_DIR = $(sysconfdir)/icons
Должна быть:
DEFAULT_ICON_DIR = $(libexecdir)/icons
Мы изменили месторасположение принятое по умолчанию для файлов “cache.log”, “access.log” и “store.log” на каталог “/var/log/squid”. Затем, мы разместили pid файл для Squid в каталоге “/var/run”, и в заключении, разместили каталог “icons” в “/usr/lib/squid/icons”.
Настройка скрипта “/etc/rc.d/init.d/squid” для всех типов конфигураций
Настроим ваш скрипт “/etc/rc.d/init.d/squid” для запуска и остановки кэширующего прокси сервера Squid. Это скрипт изменит установки кэша подкачки на “/cache” вместо “/var/spool/squid”.
Создайте скрипт squid (touch /etc/rc.d/init.d/squid) и добавьте в него:
#!/bin/bash # squid Этот скрипт отвечает за запуск и остановку # Squid Internet Object Cache # # chkconfig: - 90 25 # описание: Squid - Internet Object Cache. Internet object caching – это путь # для хранения запрошенных объектов из Интернет (например, данные # доступные через протоколы HTTP, FTP и gopher) на системах находящихся # ближе к требуемым серверам, чем организатор запроса. Веб броузеры могут # затем использовать локальный кэш как прокси HTTP сервер, сокращая # время доступа и сохраняя полосу пропускания. # pid файл: /var/run/squid.pid # конфигурационный файл: /etc/squid/squid.conf PATH=/usr/bin:/sbin:/bin:/usr/sbin export PATH # Библиотека исходных функций. . /etc/rc.d/init.d/functions # Исходная сетевая конфигурация. . /etc/sysconfig/network # Проверка, что сеть работает. [ ${NETWORKING} = "no" ] && exit 0 # проверка наличия конфигурационного файла squid [ -f /etc/squid/squid.conf ] exit 0 # определения имени двоичного файла squid [ -f /usr/sbin/squid ] && SQUID=squid [ -z "$SQUID" ] && exit 0 # определения cache_swap каталога CACHE_SWAP=`sed -e 's/#.*//g' /etc/squid/squid.conf | \ grep cache_dir | sed -e 's/cache_dir//' | \ cut -d ' ' -f 2` [ -z "$CACHE_SWAP" ] && CACHE_SWAP=/cache # опции squid по умолчанию # -D отключение проверки dns при инициализации. Если вы скорее всего # не будете иметь соединения с Интернет во время старта squid, # раскомментируйте это #SQUID_OPTS="-D" RETVAL=0 case "$1" in start) echo -n "Starting $SQUID: " for adir in $CACHE_SWAP; do if [ ! -d $adir/00 ]; then echo -n "init_cache_dir $adir... " $SQUID -z -F 2>/dev/null fi done $SQUID $SQUID_OPTS & RETVAL=$? echo $SQUID [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$SQUID ;; stop) echo -n "Stopping $SQUID: " $SQUID -k shutdown & RETVAL=$? if [ $RETVAL -eq 0 ] ; then rm -f /var/lock/subsys/$SQUID while : ; do [ -f /var/run/squid.pid ] break sleep 2 && echo -n "." done echo "done" else echo fi ;; reload) $SQUID $SQUID_OPTS -k reconfigure exit $? ;; restart) $0 stop $0 start ;; status) status $SQUID $SQUID -k check exit $? ;; probe) exit 0; ;; *) echo "Usage: $0 {start|stop|status|reload|restart}" exit 1 esac exit $RETVAL
Сейчас, сделайте этот скрипт исполняемым и измените права доступа:
[root@deep /]# chmod 700 /etc/rc.d/init.d/squid
Создайте символическую rc.d ссылку для Squid следующей командой:
[root@deep /]# chkconfig --add squid
По умолчанию скрипт squid не будет автоматически запускать прокси сервер на Red Hat Linux, когда перезагружаете сервер. Вы можете изменить это следующей командой:
[root@deep /]# chkconfig --level 345 squid on
Запустите ваш новый прокси сервер Squid вручную:
[root@deep /]# /etc/rc.d/init.d/squid start
Starting squid: init_cache_dir ufs... squid
Оптимизация Squid
Атрибуты atime и noatime
Атрибуты atime и noatime могут быть использованы, чтобы немного улучшить производительность кэша Squid. Смотрите главу 4 в этой книге, “Общая системная оптимизация”, для большей информации по этой теме.
Физическая память
Наиболее важный ресурс для Squid это физическая память. Вам не нужен очень быстрый процессор. Ваша дисковая система будет основным узким местом, так что быстрые диски важны для кэша. Не используйте IDE дисков, есди это возможно.
Организация защиты Squid
Больший контроль над смонтированным кэш-каталогом Squid
Если вы создаете кэш-каталог для Squid в независимом разделе вашей Linux системы (например, /cache), подобно тому как мы делали во время инсталляции, тогда вы можете использовать опции noexec, nodev и nosuid для улучшения и укрепления безопасности кэша. Эти параметры могут быть установлены в файле “/etc/fstab” и дают указания системе не исполнять любые двоичные файлы (noexec), не интерпретировать символьные и блочные специальные устройства (nodev) и не позволять действовать битам set-user-identifier или set-group- identifier (nosuid) на монтированной файловой системе (/cache, например). Примените эту процедуру на раздел, где располагается кэш Squid, чтобы предотвратить возможность DEV, SUID/SGID и выполнения любых двоичных файлов.
Например, предположим на разделе “/dev/sda8” располагается каталог “/cache”. Вы должны редактировать файл fstab (vi /etc/fstab) и изменить строку, связанную с “/dev/sda8”:
/dev/sda8 /cache ext2 defaults 1 2
должна быть:
/dev/sda8 /cache ext2 noexec,nodev,nosuid 1 2
ЗАМЕЧАНИЕ. Вы должны перезагрузить систему, чтобы изменения вступили в силу.
Иммунизация важных конфигурационных файлов
Как мы знаем, бит “постоянства” может быть использован для предотвращения удаления, переписывания или создания символической ссылки к файлу. Так как файл “squid.conf” уже настроен, хорошей идеей будет иммунизировать его:
[root@deep /]# chattr +i /etc/squid/squid.conf
Прокси сервер Squid
Краткий обзор.
Прокси сервера, с их способностью к экономии полосы пропускания, улучшения безопасности, улучшения скорости веб-серфинга, становятся все более и более популярными. В настоящее время на рынке есть только несколько программных прокси-серверов. Они имеют два основных недостатка: они коммерческие и не поддерживают ICP (ICP используется для обмена информации о наличии URL в соседнем кэше). Squid – это лучший выбор для кэширующего прокси-сервера, так как он надежный, бесплатный и поддерживает ICP.
Производный от “кэширующего” программного обеспечения ARPA-funded Harvest research project, разработанного в National Laboratory for Applied Network Research and funded by the National Science Foundation, Squid предлагает высокопроизводительное кэширование для веб клиентов, он также поддерживает FTP, Gopher и HTTP объекты данных. Squid хранит часто используемые объекты в RAM, поддерживает надежную базу данных объектов на диске, имеет комплексных механизм контроля доступа и поддерживает SSL протокол для посредничества в безопасных соединениях. В дополнение к этому, он поддерживает иерархические связи с другими прокси-серверами, базирующимися на Squid.
В нашем случае мы настроим Squid на запуск, как httpd-акселератора для лучшей производительности нашего веб-сервера. В режиме акселератора, Squid выступает как обратный кэширующий прокси: он принимает запросы клиентов, если это возможно, то удовлетворяет их из кэша, а если не возможно, то организует запросы к оригинальному серверу для которого выступает как обратный прокси. Также, мы покажем конфигурацию Squid, как кэширующего прокси-сервера, которая позволит всем пользователям вашей корпоративной сети использовать Squid для доступа в Интернет.
Эти инструкции предполагают.
Unix-совместимые команды.
Путь к исходным кодам “/var/tmp” (возможны другие варианты).
Инсталляция была проверена на Red Hat Linux 6.1 и 6.2.
Все шаги инсталляции осуществляются суперпользователем “root”.
Squid версии 2.3.STABLE2
Пакеты.
Домашняя страница Squid:
FTP сервер Squid:
Вы должны скачать: squid-2.3.STABLE2-src.tar.gz
Тарболы.
Хорошей идеей будет создать список файлов установленных в вашей системе до инсталляции Squid и после, в результате, с помощью утилиты diff вы сможете узнать какие файлы были установлены. Например,
До инсталляции:
find /* > Squid1
После инсталляции:
find /* > Squid2
Для получения списка установленных файлов:
diff Squid1 Squid2 > Squid-Installed
Раскройте тарбол:
[root@deep /]# cp squid-version.STABLEz-src.tar.gz /var/tmp
[root@deep /]# cd /var/tmp
[root@deep tmp]# tar xzpf squid-version.STABLEz-src.tar.gz
Утилита cachemgr.cgi
Утилита cachemgr.cgi, доступная по умолчанию, когда вы скомпилировали и инсталлировали Squid на вашей системе, создана для запуска через веб интерфейс, и выводит различную статистику о конфигурации и работе Squid. Эта программа располагается в каталоге “/usr/lib/squid”, и вы должны переместить ее в ваш каталог “cgi-bin” (например, /home/httpd/cgi-bin). Следующие шаги помогут вам настроить программу для использования.
Шаг 1
Переместите программу “cachemgr.cgi” в ваш каталог “cgi-bin”:
[root@deep /]# mv /usr/lib/squid/cachemgr.cgi /home/httpd/cgi-bin
ЗАМЕЧАНИЕ. Я подразумеваю, что ваш каталог “cgi-bin” расположен в каталоге “/home/httpd/cgi-bin”; возможны и другие пути. Этот “cgi-bin” будет существовать если вы инсталлировали веб сервер Apache.
Шаг 2
После того, как вы переместили “cachemgr.cgi” в “cgi-bin”, вы можете обратится к ней введя в вашем броузере следующий адрес (http://my-web-server/cgi- bin/cachemgr.cgi).
<my-web-server> это адрес вашего веб сервера Apache, а <cachemgr.cgi> это утилита, которую вы только, что переместили в каталог “cgi-bin” для получения информации и конфигурации прокси сервера Squid.
Если вы настраивали файл “squid.conf”, то используйте парольную аутентификацию для доступа к “cachemgr.cgi”, вам будет предложено ввести имя кэша (Cache Host), порт кэша (Cache Port), имя администратора (Manager name) и пароль (Password) перед тем, как допустят к программе “cachemgr.cgi”. Смотрите конфигурационный файл “/etc/squid/squid.conf”, приведенный выше, для большей информации.
После того как вы прошли аутентификацию на сервере, вы увидите в вашем броузере интерфейс Cache Manager menu, где вы сможете изучать и анализировать различные опции связанные с прокси сервером Squid.
Инсталлированные файлы для веб сервера Apache
> /etc/rc.d/init.d/httpd > /etc/rc.d/rc0.d/K15httpd > /etc/rc.d/rc1.d/K15httpd > /etc/rc.d/rc2.d/K15httpd > /etc/rc.d/rc3.d/S85httpd > /etc/rc.d/rc4.d/S85httpd > /etc/rc.d/rc5.d/S85httpd > /etc/rc.d/rc6.d/K15httpd > /etc/logrotate.d/apache > /etc/httpd > /etc/httpd/conf > /etc/httpd/conf/httpd.conf.default > /etc/httpd/conf/httpd.conf > /etc/httpd/conf/mime.types.default > /etc/httpd/conf/mime.types > /etc/httpd/conf/magic.default > /etc/httpd/conf/magic > /etc/httpd/php.ini > /home/httpd > /home/httpd/cgi-bin > /home/httpd/cgi-bin/printenv > /home/httpd/cgi-bin/test-cgi > /usr/bin/htpasswd > /usr/bin/htdigest > /usr/bin/dbmmanage > /usr/include/apache > /usr/include/apache/xml > /usr/include/apache/xml/asciitab.h > /usr/include/apache/xml/hashtable.h > /usr/include/apache/xml/iasciitab.h > /usr/include/apache/xml/latin1tab.h > /usr/include/apache/xml/nametab.h > /usr/include/apache/xml/utf8tab.h > /usr/include/apache/xml/xmldef.h > /usr/include/apache/xml/xmlparse.h > /usr/include/apache/xml/xmlrole.h > /usr/include/apache/xml/xmltok.h > /usr/include/apache/xml/xmltok_impl.h > /usr/include/apache/alloc.h > /usr/include/apache/ap.h > /usr/include/apache/ap_compat.h > /usr/include/apache/ap_config.h > /usr/include/apache/ap_config_auto.h > /usr/include/apache/ap_ctx.h > /usr/include/apache/ap_ctype.h > /usr/include/apache/ap_hook.h > /usr/include/apache/ap_md5.h > /usr/include/apache/ap_mm.h > /usr/include/apache/ap_mmn.h > /usr/include/apache/ap_sha1.h > /usr/include/apache/buff.h > /usr/include/apache/compat.h > /usr/include/apache/conf.h > /usr/include/apache/explain.h > /usr/include/apache/fnmatch.h > /usr/include/apache/hsregex.h > /usr/include/apache/http_conf_globals.h > /usr/include/apache/http_config.h > /usr/include/apache/http_core.h > /usr/include/apache/http_log.h > /usr/include/apache/http_main.h > /usr/include/apache/http_protocol.h > /usr/include/apache/http_request.h > /usr/include/apache/http_vhost.h > /usr/include/apache/httpd.h > /usr/include/apache/multithread.h > /usr/include/apache/rfc1413.h > /usr/include/apache/scoreboard.h > /usr/include/apache/util_date.h > /usr/include/apache/util_md5.h > /usr/include/apache/util_script.h > /usr/include/apache/util_uri.h > /usr/include/apache/os.h > /usr/include/apache/os-inline.c > /usr/lib/apache > /usr/man/man1/htpasswd.1 > /usr/man/man1/htdigest.1 > /usr/man/man1/dbmmanage.1 > /usr/man/man8/ab.8 > /usr/man/man8/httpd.8 > /usr/man/man8/logresolve.8 > /usr/man/man8/rotatelogs.8 > /usr/man/man8/apxs.8 > /usr/sbin/httpd > /usr/sbin/ab > /usr/sbin/logresolve > /usr/sbin/rotatelogs > /usr/sbin/apxs > /var/log/httpd > /var/cache > /var/cache/httpd
Инсталлированные файлы для PHP4
> /usr/bin/phpize > /usr/bin/php-config > /usr/include/php > /usr/include/php/Zend > /usr/include/php/Zend/FlexLexer.h > /usr/include/php/Zend/acconfig.h > /usr/include/php/Zend/modules.h > /usr/include/php/Zend/zend-parser.h > /usr/include/php/Zend/zend-scanner.h > /usr/include/php/Zend/zend.h > /usr/include/php/Zend/zend_API.h > /usr/include/php/Zend/zend_alloc.h > /usr/include/php/Zend/zend_builtin_functions.h > /usr/include/php/Zend/zend_compile.h > /usr/include/php/Zend/zend_config.h > /usr/include/php/Zend/zend_config.w32.h > /usr/include/php/Zend/zend_constants.h > /usr/include/php/Zend/zend_dynamic_array.h > /usr/include/php/Zend/zend_errors.h > /usr/include/php/Zend/zend_execute.h > /usr/include/php/Zend/zend_execute_locks.h > /usr/include/php/Zend/zend_extensions.h > /usr/include/php/Zend/zend_fast_cache.h > /usr/include/php/Zend/zend_globals.h > /usr/include/php/Zend/zend_globals_macros.h > /usr/include/php/Zend/zend_hash.h > /usr/include/php/Zend/zend_highlight.h > /usr/include/php/Zend/zend_indent.h > /usr/include/php/Zend/zend_list.h > /usr/include/php/Zend/zend_llist.h > /usr/include/php/Zend/zend_operators.h > /usr/include/php/Zend/zend_ptr_stack.h > /usr/include/php/Zend/zend_stack.h > /usr/include/php/Zend/zend_variables.h > /usr/include/php/TSRM > /usr/include/php/TSRM/TSRM.h > /usr/include/php/ext > /usr/include/php/ext/standard > /usr/include/php/ext/standard/base64.h > /usr/include/php/ext/standard/basic_functions.h > /usr/include/php/ext/standard/cyr_convert.h > /usr/include/php/ext/standard/datetime.h > /usr/include/php/ext/standard/dl.h > /usr/include/php/ext/standard/dns.h > /usr/include/php/ext/standard/exec.h > /usr/include/php/ext/standard/file.h > /usr/include/php/ext/standard/flock_compat.h > /usr/include/php/ext/standard/fsock.h > /usr/include/php/ext/standard/global.h > /usr/include/php/ext/standard/head.h > /usr/include/php/ext/standard/html.h > /usr/include/php/ext/standard/info.h > /usr/include/php/ext/standard/md5.h > /usr/include/php/ext/standard/microtime.h > /usr/include/php/ext/standard/pack.h > /usr/include/php/ext/standard/pageinfo.h > /usr/include/php/ext/standard/php_array.h > /usr/include/php/ext/standard/php_assert.h > /usr/include/php/ext/standard/php_browscap.h > /usr/include/php/ext/standard/php_crypt.h > /usr/include/php/ext/standard/php_dir.h > /usr/include/php/ext/standard/php_filestat.h > /usr/include/php/ext/standard/php_image.h > /usr/include/php/ext/standard/php_iptc.h > /usr/include/php/ext/standard/php_lcg.h > /usr/include/php/ext/standard/php_link.h > /usr/include/php/ext/standard/php_mail.h > /usr/include/php/ext/standard/php_metaphone.h > /usr/include/php/ext/standard/php_output.h > /usr/include/php/ext/standard/php_rand.h > /usr/include/php/ext/standard/php_standard.h > /usr/include/php/ext/standard/php_string.h > /usr/include/php/ext/standard/php_syslog.h > /usr/include/php/ext/standard/php_var.h > /usr/include/php/ext/standard/phpdir.h > /usr/include/php/ext/standard/phpmath.h > /usr/include/php/ext/standard/quot_print.h > /usr/include/php/ext/standard/reg.h > /usr/include/php/ext/standard/type.h > /usr/include/php/ext/standard/uniqid.h > /usr/include/php/ext/standard/url.h > /usr/include/php/ext/standard/url_scanner.h > /usr/include/php/regex > /usr/include/php/regex/regex.h > /usr/include/php/regex/regex_extra.h > /usr/include/php/php.h > /usr/include/php/php_regex.h > /usr/include/php/php3_compat.h > /usr/include/php/safe_mode.h > /usr/include/php/fopen-wrappers.h > /usr/include/php/php_version.h > /usr/include/php/php_globals.h > /usr/include/php/php_reentrancy.h > /usr/include/php/php_ini.h > /usr/include/php/SAPI.h > /usr/include/php/php_config.h > /usr/include/php/zend_config.h > /usr/include/php/build-defs.h > /usr/lib/php > /usr/lib/php/DB > /usr/lib/php/DB/common.php > /usr/lib/php/DB/odbc.php > /usr/lib/php/DB/mysql.php > /usr/lib/php/DB/pgsql.php > /usr/lib/php/DB/storage.php > /usr/lib/php/build > /usr/lib/php/build/pear.m4 > /usr/lib/php/build/fastgen.sh > /usr/lib/php/build/library.mk > /usr/lib/php/build/ltlib.mk > /usr/lib/php/build/program.mk > /usr/lib/php/build/rules.mk > /usr/lib/php/build/rules_pear.mk > /usr/lib/php/build/shtool > /usr/lib/php/build/acinclude.m4 > /usr/lib/php/DB.php
Инсталлированные файлы для mod_perl
> /usr/lib/perl5/5.00503/i386-linux/perllocal.pod > /usr/lib/perl5/man/man3/Apache.3 > /usr/lib/perl5/man/man3/Apache::Constants.3 > /usr/lib/perl5/man/man3/Apache::Leak.3 > /usr/lib/perl5/man/man3/Apache::Log.3 > /usr/lib/perl5/man/man3/Apache::PerlRunXS.3 > /usr/lib/perl5/man/man3/Apache::Symbol.3 > /usr/lib/perl5/man/man3/Apache::Table.3 > /usr/lib/perl5/man/man3/Apache::URI.3 > /usr/lib/perl5/man/man3/Apache::Util.3 > /usr/lib/perl5/man/man3/Apache::FakeRequest.3 > /usr/lib/perl5/man/man3/mod_perl.3 > /usr/lib/perl5/man/man3/Apache::ExtUtils.3 > /usr/lib/perl5/man/man3/Apache::SIG.3 > /usr/lib/perl5/man/man3/Apache::Status.3 > /usr/lib/perl5/man/man3/Apache::Include.3 > /usr/lib/perl5/man/man3/Apache::Debug.3 > /usr/lib/perl5/man/man3/Apache::Resource.3 > /usr/lib/perl5/man/man3/Apache::src.3 > /usr/lib/perl5/man/man3/Apache::PerlRun.3 > /usr/lib/perl5/man/man3/Apache::httpd_conf.3 > /usr/lib/perl5/man/man3/mod_perl_traps.3 > /usr/lib/perl5/man/man3/Apache::Options.3 > /usr/lib/perl5/man/man3/mod_perl_cvs.3 > /usr/lib/perl5/man/man3/Apache::Symdump.3 > /usr/lib/perl5/man/man3/Apache::RegistryLoader.3 > /usr/lib/perl5/man/man3/mod_perl_method_handlers.3 > /usr/lib/perl5/man/man3/mod_perl_tuning.3 > /usr/lib/perl5/man/man3/cgi_to_mod_perl.3 > /usr/lib/perl5/man/man3/Apache::StatINC.3 > /usr/lib/perl5/man/man3/Apache::Registry.3 > /usr/lib/perl5/man/man3/Bundle::Apache.3 > /usr/lib/perl5/man/man3/Apache::SizeLimit.3 > /usr/lib/perl5/man/man3/Apache::PerlSections.3 > /usr/lib/perl5/man/man3/Apache::RedirectLogFix.3 > /usr/lib/perl5/site_perl/5.005/i386-linux/auto > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/include > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/include/buff.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/include/multithread.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/include/httpd.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/include/ap_config.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/include/alloc.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/include/ap.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/include/ap_md5.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/include/ap_ctx.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/include/util_md5.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/include/rfc1413.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/include/conf.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/include/util_uri.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/include/explain.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/include/ap_compat.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/include/http_config.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/include/ap_sha1.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/include/scoreboard.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/include/compat.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/include/http_request.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/include/http_core.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/include/ap_mm.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/include/http_protocol.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/include/util_date.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/include/ap_hook.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/include/http_main.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/include/http_conf_globals.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/include/util_script.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/include/http_vhost.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/include/ap_ctype.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/include/hsregex.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/include/ap_mmn.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/include/ap_config_auto.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/include/http_log.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/include/fnmatch.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/os > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/os/netware > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/os/netware/os.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/os/netware/getopt.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/os/netware/test_char.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/os/netware/uri_delims.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/os/netware/precomp.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/os/bs2000 > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/os/bs2000/os-inline.c > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/os/bs2000/ebcdic.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/os/bs2000/os.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/os/tpf > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/os/tpf/ebcdic.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/os/tpf/os.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/os/tpf/os-inline.c > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/os/win32 > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/os/win32/service.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/os/win32/getopt.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/os/win32/registry.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/os/win32/resource.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/os/win32/installer > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/os/win32/installer/installdll > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/os/win32/installer/installdll/test > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/os/win32/installer/installdll/test/test.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/os/win32/installer/installdll/test/resource.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/os/win32/os.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/os/win32/passwd.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/os/win32/readdir.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/os/unix > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/os/unix/os.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/os/unix/os-inline.c > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/os/os390 > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/os/os390/os-inline.c > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/os/os390/ebcdic.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/os/os390/os.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/os/mpeix > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/os/mpeix/os-inline.c > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/os/mpeix/os.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/os/os2 > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/os/os2/os.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/os/os2/os-inline.c > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/modules > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/modules/ssl > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/modules/ssl/ssl_expr.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/modules/ssl/ssl_util_table.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/modules/ssl/ssl_util_ssl.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/modules/ssl/ssl_expr_parse.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/modules/ssl/mod_ssl.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/modules/ssl/ssl_util_sdbm.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/modules/perl > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/modules/perl/mod_perl.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/modules/perl/mod_perl_version.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/modules/perl/perl_PL.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/modules/perl/mod_perl_xs.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/modules/php4 > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/modules/php4/mod_php4.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/modules/proxy > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/modules/proxy/mod_proxy.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/modules/standard > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/modules/standard/mod_rewrite.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/support > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/support/suexec.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/lib > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/lib/expat-lite > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/lib/expat-lite/iasciitab.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/lib/expat-lite/latin1tab.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/lib/expat-lite/xmldef.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/lib/expat-lite/xmlparse.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/lib/expat-lite/xmltok.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/lib/expat-lite/xmlrole.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/lib/expat-lite/hashtable.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/lib/expat-lite/nametab.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/lib/expat-lite/xmltok_impl.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/lib/expat-lite/utf8tab.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/lib/expat-lite/asciitab.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/regex > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/regex/utils.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/regex/regex2.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/regex/cclass.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include/regex/cname.h > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/typemap > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/Leak > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/Leak/Leak.so > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/Leak/Leak.bs > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/Symbol > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/Symbol/Symbol.so > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/Symbol/Symbol.bs > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/mod_perl > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/mod_perl/.packlist > /usr/lib/perl5/site_perl/5.005/i386-linux/mod_perl.pod > /usr/lib/perl5/site_perl/5.005/i386-linux/Bundle > /usr/lib/perl5/site_perl/5.005/i386-linux/Bundle/Apache.pm > /usr/lib/perl5/site_perl/5.005/i386-linux/Apache > /usr/lib/perl5/site_perl/5.005/i386-linux/Apache/test.pm > /usr/lib/perl5/site_perl/5.005/i386-linux/Apache/Debug.pm > /usr/lib/perl5/site_perl/5.005/i386-linux/Apache/Resource.pm > /usr/lib/perl5/site_perl/5.005/i386-linux/Apache/src.pm > /usr/lib/perl5/site_perl/5.005/i386-linux/Apache/httpd_conf.pm > /usr/lib/perl5/site_perl/5.005/i386-linux/Apache/Symdump.pm > /usr/lib/perl5/site_perl/5.005/i386-linux/Apache/RegistryLoader.pm > /usr/lib/perl5/site_perl/5.005/i386-linux/Apache/Registry.pm > /usr/lib/perl5/site_perl/5.005/i386-linux/Apache/SizeLimit.pm > /usr/lib/perl5/site_perl/5.005/i386-linux/Apache/RedirectLogFix.pm > /usr/lib/perl5/site_perl/5.005/i386-linux/Apache/MyConfig.pm > /usr/lib/perl5/site_perl/5.005/i386-linux/Apache/Constants > /usr/lib/perl5/site_perl/5.005/i386-linux/Apache/Constants/Exports.pm > /usr/lib/perl5/site_perl/5.005/i386-linux/Apache/SIG.pm > /usr/lib/perl5/site_perl/5.005/i386-linux/Apache/StatINC.pm > /usr/lib/perl5/site_perl/5.005/i386-linux/Apache/Opcode.pm > /usr/lib/perl5/site_perl/5.005/i386-linux/Apache/PerlSections.pm > /usr/lib/perl5/site_perl/5.005/i386-linux/Apache/FakeRequest.pm > /usr/lib/perl5/site_perl/5.005/i386-linux/Apache/ExtUtils.pm > /usr/lib/perl5/site_perl/5.005/i386-linux/Apache/Include.pm > /usr/lib/perl5/site_perl/5.005/i386-linux/Apache/Status.pm > /usr/lib/perl5/site_perl/5.005/i386-linux/Apache/PerlRun.pm > /usr/lib/perl5/site_perl/5.005/i386-linux/Apache/Options.pm > /usr/lib/perl5/site_perl/5.005/i386-linux/Apache/RegistryNG.pm > /usr/lib/perl5/site_perl/5.005/i386-linux/Apache/RegistryBB.pm > /usr/lib/perl5/site_perl/5.005/i386-linux/Apache/Connection.pm > /usr/lib/perl5/site_perl/5.005/i386-linux/Apache/Constants.pm > /usr/lib/perl5/site_perl/5.005/i386-linux/Apache/File.pm > /usr/lib/perl5/site_perl/5.005/i386-linux/Apache/Leak.pm > /usr/lib/perl5/site_perl/5.005/i386-linux/Apache/Log.pm > /usr/lib/perl5/site_perl/5.005/i386-linux/Apache/ModuleConfig.pm > /usr/lib/perl5/site_perl/5.005/i386-linux/Apache/PerlRunXS.pm > /usr/lib/perl5/site_perl/5.005/i386-linux/Apache/Server.pm > /usr/lib/perl5/site_perl/5.005/i386-linux/Apache/Symbol.pm > /usr/lib/perl5/site_perl/5.005/i386-linux/Apache/Table.pm > /usr/lib/perl5/site_perl/5.005/i386-linux/Apache/URI.pm > /usr/lib/perl5/site_perl/5.005/i386-linux/Apache/Util.pm > /usr/lib/perl5/site_perl/5.005/i386-linux/mod_perl_hooks.pm > /usr/lib/perl5/site_perl/5.005/i386-linux/mod_perl_hooks.pm.PL > /usr/lib/perl5/site_perl/5.005/i386-linux/mod_perl_tuning.pod > /usr/lib/perl5/site_perl/5.005/i386-linux/mod_perl_cvs.pod > /usr/lib/perl5/site_perl/5.005/i386-linux/mod_perl_method_handlers.pod > /usr/lib/perl5/site_perl/5.005/i386-linux/mod_perl.pm > /usr/lib/perl5/site_perl/5.005/i386-linux/mod_perl_traps.pod > /usr/lib/perl5/site_perl/5.005/i386-linux/cgi_to_mod_perl.pod > /usr/lib/perl5/site_perl/5.005/i386-linux/Apache.pm
Компиляция и оптимизация
Шаг 1
Веб сервер Apache, подобно многим приложениям, которые мы инсталлировали, не должен запускаться из-под суперпользователя root. Из этих соображений мы должны создать специального пользователя, который имеет минимальный доступ в систему и предназначен только для запуска демона веб сервера.
[root@deep /]# useradd -c “Apache Server” -u 80 -s /bin/false -r -d /home/httpd www 2>/dev/null :
Шаг 2
Внедрение модуля mod-ssl в дерево исходных кодов Apache
Если вы хотите использовать и включить поддержку SSL шифрования данных в ваш веб сервер Apache, то переместитесь в новый каталог с исходными кодами mod_ssl (cd mod_ssl-version-version/) и введите следующие команды на вашем терминале:
CC="egcs" \
CFLAGS="-O9 -funroll-loops -ffast-math -malign-double -mcpu=pentiumpro -march=pentiumpro -fomit-frame-pointer -fno-exceptions" \
./configure \
--with-apache=../apache_1.3.12 \
--with-crt=/etc/ssl/certs/server.crt \
--with-key=/etc/ssl/private/server.key
Опция “--with-apache” определяет месторасположения каталога с исходными кодами Apache (мы допустили, что в нашем примере используем Apache версии 1.3.12), опция “--with-crt” определяет месторасположения вашего существующего публичного ключа для SSL шифрования, и опция “--with-key” определяет месторасположение вашего существующего приватного ключа для SSL шифрования.
ЗАМЕЧАНИЕ. Программное обеспечение OpenSSL должен быть уже проинсталлировано на вашем сервере, публичный и приватные ключи тоже должны уже существовать или быть созданы, или вы получите сообщение об ошибке во время конфигурирования модуля mod_ssl. Смотрите главу 16 этой книги “Серверное программное обеспечение (Сетевой сервис шифрования)”, для большей информации.
Шаг 3
Улучшение параметра MaxClients в Apache
По умолчанию в конфигурационном файле Apache (httpd.conf) максимальное число устанавливаемое для параметра MaxClients Parameter равно 256. Для загруженных сайтов и для улучшения производительности рекомендуется увеличить этот параметр. Вы можете сделать это редактируя файл “src/include/httpd.h” в дереве исходных кодов Apache и изменить это значение по умолчанию.
2) Сейчас, мы должны сконфигурировать и инсталлировать PHP4 на нашем Linux сервере:
CC="egcs" \
CFLAGS="-O9 -funroll-loops -ffast-math -malign-double -mcpu=pentiumpro -march=pentiumpro -fomit-frame-pointer -fno-exceptions -I/usr/include/openssl" \
./configure \
--prefix=/usr \
--with-exec-dir=/usr/bin \
--with-apache=../apache_1.3.12 \
--with-config-file-path=/etc/httpd \
--disable-debug \
--enable-safe-mode \
--with-imap \ (если вы хотите поддержку IMAP & POP).
--with-ldap \ (если вы хотите поддержку сервиса каталогов LDAP).
--with-pgsql \ (если вы хотите поддержку баз данных PostgreSQL).
--with-mm \
--enable-inline-optimization \
--with-gnu-ld \
--enable-memory-limit
Эти опции говорят PHP4:
Компилировать без символов отладки.
Включить safe mode по умолчанию.
Включить поддержку IMAP & POP.
Включить поддержку сервиса каталогов LDAP.
Включить поддержку базы данных PostgresSQL.
Включить поддержку mm для улучшения производительности.
Включить внутренний оптимизацию для лучшей производительности.
Компилировать с поддержкой ограничения памяти.
компилятору C использовать GNU ld.
[root@deep php-4.0]# make
[root@deep php-4.0]# make install
Шаг 5
Внедрение mod_perl в исходные коды
Если вы хотите использовать и включить поддержку языка программирования Perl в ваш веб-сервер Apache, то перейдите к каталог с исходными кодами mod_perl (cd ../mod_perl-1.24/) и введите следующие команды на вашем терминале:
perl Makefile.PL \
EVERYTHING=1 \
APACHE_SRC=../apache_1.3.12/src \
USE_APACI=1 \
PREP_HTTPD=1 \
DO_HTTPD=1
[root@deep mod_perl-1.24]# make
[root@deep mod_perl-1.24]# make install
Шаг 6
Создание/Инсталляция Apache с/без mod_ssl +- PHP4 и/или mod_perl Сейчас, когда вы добавили в исходные коды Apache все модули, которые хотели, наступило время скомпилировать и проинсталлировать его. Переместитесь в каталог с исходными кодами Apache (cd ../apache_1.3.12/) и введите следующие команды на вашем терминале:
SSL_BASE=SYSTEM \ (требуется если вы хотите включить поддержку mod_ssl в Apache).
EAPI_MM=SYSTEM \ ( требуется если вы хотите включить поддержку mm библиотеку разделяемой памяти в Apache).
CC="egcs" \
OPTIM="-O9 -funroll-loops -ffast-math -malign-double -mcpu=pentiumpro -march=pentiumpro -fomit-frame-pointer -fno-exceptions" \
CFLAGS="-DDYNAMIC_MODULE_LIMIT=0" \
./configure \
--prefix=/home/httpd \
--bindir=/usr/bin \
--sbindir=/usr/sbin \
--libexecdir=/usr/lib/apache \
--includedir=/usr/include/apache \
--sysconfdir=/etc/httpd/conf \
--localstatedir=/var \
--runtimedir=/var/run \
--logfiledir=/var/log/httpd \
--datadir=/home/httpd \
--proxycachedir=/var/cache/httpd \
--mandir=/usr/man \
--add-module=src/modules/experimental/mod_mmap_static.c \ (требуется если вы хотите использовать mod_mmap, смотрите секцию “Оптимизация Apache” в этой главе для большей информации).
--add-module=src/modules/standard/mod_auth_db.c \ (требуется если вы хотите использовать mod_auth_db, смотрите секцию “Безопасность Apache” в этой главе для большей информации).
--enable-module=ssl \ (требуется если вы хотите включить поддержку mod_ssl в ваш Apache).
--enable-rule=SSL_SDBM \ (требуется если вы хотите включить поддержку mod_ssl в ваш Apache).
--disable-rule=SSL_COMPAT \ (требуется если вы хотите включить поддержку mod_ssl в ваш Apache).
--activate-module=src/modules/php4/libphp4.a \ (требуется если вы хотите включить поддержку PHP4 в ваш Apache).
--enable-module=php4 \ (требуется если вы хотите включить поддержку PHP4 в ваш Apache).
--activate-module=src/modules/perl/libperl.a \ (требуется если вы хотите включить поддержку mod_perl в ваш Apache).
--enable-module=perl \ (требуется если вы хотите включить поддержку mod_perl в ваш Apache).
--disable-module=status \
--disable-module=userdir \
--disable-module=negotiation \
--disable-module=autoindex \
--disable-module=asis \
--disable-module=imap \
--disable-module=env \
--disable-module=actions
Эти опции говорят Apache выполнить следующие установки:
модуль mod_mmap для улучшения производительности.
модуль mod_auth_db для парольной аутентификации пользователей.
модуль mod_ssl для шифрования данные и безопасного соединения.
модуль mod_php4 для поддержки языка подготовки сценариев на стороне сервера php и улучшения загрузки веб страниц созданных в PHP.
модуль mod_perl для лучшей безопасности и производительности работы cgi скриптов.
выключить модуль status
выключить модуль userdir
выключить модуль negotiation
выключить модуль autoindex
выключить модуль asis
выключить модуль imap
выключить модуль env
выключить модуль actions
ЗАМЕЧАНИЕ. Важно заметить, что удаление всех необязательных модулей во время конфигурирования улучшит производительность вашего веб сервера Apache. В нашей конфигурации приведенной выше, мы удалили большинство неиспользуемых модулей для уменьшения времени загрузки и ограничения риска безопасности вашего веб сервера. Смотрите документацию Apache, чтобы получить информацию о каждом удаленном модуле.
Шаг 7
Сейчас, мы должны инсталлировать Apache на вашем Linux сервере:
[root@deep apache_1.3.12]# make
[root@deep apache_1.3.12]# make install
[root@deep apache_1.3.12]# rm -f /usr/sbin/apachectl
[root@deep apache_1.3.12]# rm -f /usr/man/man8/apachectl.8
[root@deep apache_1.3.12]# rm -rf /home/httpd/icons/
[root@deep apache_1.3.12]# rm -rf /home/httpd/htdocs/
[root@deep apache_1.3.12]# cd /var/tmp/php-4.0
[root@deep php-4.0.0]# install -m 644 php.ini.dist /usr/lib/php.ini
[root@deep php-4.0.0]# rm -rf /etc/httpd/conf/ssl.crl/
[root@deep php-4.0.0]# rm -rf /etc/httpd/conf/ssl.crt/
[root@deep php-4.0.0]# rm -rf /etc/httpd/conf/ssl.csr/
[root@deep php-4.0.0]# rm -rf /etc/httpd/conf/ssl.key/
[root@deep php-4.0.0]# rm -rf /etc/httpd/conf/ssl.prm/
[root@deep php-4.0.0]# rm -f /etc/httpd/conf/srm.conf srm.conf.default access.conf access.conf.default
Команда “make” будет компилировать все файлы с исходными кодами в исполняемые двоичные, команда “make install” будет инсталлировать исполняемые и сопутствующие им файлы в тербуемые места. Команда “rm -f” удалит небольшой скрипт “apachectl” отвечающий за запуск и остановку демона Apache, так как мы используем для этого срипт “httpd” находящийся в “/etc/rc.d/init.d/”. Мы также удаляем каталог “/home/httpd/icons”, который используется веб сервером Apache при автоматической индексации файлов. Эта возможность несет в себе риск безопасности и из-за этого мы ее отключили. Каталог “/home/httpd/htdocs” содержит все файлы с документацией на Apache, поэтому после прочтения, мы спокойно можем его удалить. Команда “install - m” проинсталлирует файл “php.ini.dist” в каталог “/etc/httpd/” и переименует его в “php.ini”; Этот файл контролирует многие аспекты работы PHP. Каталоги “ssl.crl”, “ssl.crt”, “ssl.csr”, “ssl.key” и “ssl.prm” в “/etc/httpd/conf” связаны с SSL, и в них хранятся публичные и приватные ключи. Так как для хранения ключей мы используем другой путь, “/etc/ssl/”, мы можем их спокойно удалить. В заключении, мы удаляем неиспользуемые файлы “srm.conf”, “srm.conf.default”, “access.conf” и “access.conf.default”, вместо которых сейчас используется одни файл “httpd.conf”.
Очистка после работы.
[root@deep /]# cd /var/tmp
[root@deep tmp]# rm -rf apache-version/ apache-version.tar.gz mod_ssl-version-version/ mod_ssl-version-version.tar.gz php-version/ php-version.tar.gz mod_perl-version/ mod_perl-version.tar.gz
Команды “rm” будет удалять все файлы с исходными кодами, которые мы использовали при компиляции и инсталляции Apache, mod_ssl, mod_perl и php. Также будут удалены сжатые архивы Apache, mod_ssl, mod_perl и php из каталога “/var/tmp”.
Конфигурации.
Конфигурационные файлы для разных сервисов очень зависят от ваших нужд и сетевой архитектуры. Кто-то хочет установить Apache только чтобы показывать веб страницы; другой хочет использовать его для работы с базой данных и e- коммерции с поддержкой SSL и т.д. В этой книге, мы предоставляем вам файл “httpd.conf”, с установками для PHP, Perl, SSL, LDAP и парольной аутентификации, чтобы показать вам различные возможности. Все программное обеспечение, описанное в книге, имеет определенный каталог и подкаталог в архиве “floppy.tgz”, включающей все конфигурационные файлы для всех программ. Если вы скачаете этот файл, то вам не нужно будет вручную воспроизводить файлы из книги, чтобы создать свои файлы конфигурации. Скопируйте файлы связанные с Apache из архива, измените их под свои требования и поместите в нужное место так, как это описано ниже. Файл с конфигурациями вы можете скачать с адреса:
Для запуска веб сервера Apache следующие файлы должны быть созданы или скопированы на ваш сервер.
Копируйте httpd.conf в каталог “/etc/httpd/conf/”.
Копируйте httpd в каталог “/etc/rc.d/init.d/”.
Копируйте apache в каталог “/etc/logrotate.d/”.
Вы можете взять эти файлы из нашего архива floppy.tgz.
Конфигурация файла “/etc/httpd/conf/httpd.conf”
Файл “httpd.conf” – это основной конфигурационный файл для веб сервера Apache. Существует большое количество различных опций про которые вы должны прочитать в документации к Apache. Следующая конфигурация представляет из себя пример минимальной рабочей конфигурации для Apache, с поддержкой SSL. Также важно заметить, что мы комментируем только параметры связанные с безопасностью и оптимизацией, а все остальные оставляем для вашего изучения.
Редактируйте файл httpd.conf (vi /etc/httpd/conf/httpd.conf) и добавьте/измените:
### Секция 1: Глобальное окружение # ServerType standalone ServerRoot "/etc/httpd" PidFile /var/run/httpd.pid ResourceConfig /dev/null AccessConfig /dev/null Timeout 300 KeepAlive On MaxKeepAliveRequests 0 KeepAliveTimeout 15 MinSpareServers 16 MaxSpareServers 64 StartServers 16 MaxClients 512 MaxRequestsPerChild 100000
### Секция 2: 'Основная' конфигурация сервера # Port 80
<IfDefine SSL>
Listen 80 Listen 443 </IfDefine>
User www Group www ServerAdmin admin@openna.com ServerName www.openna.com DocumentRoot "/home/httpd/ona"
<Directory />
Options None AllowOverride None Order deny,allow Deny from all </Directory>
<Directory "/home/httpd/ona">
Options None AllowOverride None Order allow,deny Allow from all </Directory>
<Files .pl>
Options None AllowOverride None Order deny,allow Deny from all </Files>
<IfModule mod_dir.c>
DirectoryIndex index.htm index.html index.php index.php3 default.html index.cgi </IfModule>
#<IfModule mod_include.c>
#Include conf/mmap.conf #</IfModule>
UseCanonicalName On
<IfModule mod_mime.c>
TypesConfig /etc/httpd/conf/mime.types </IfModule>
DefaultType text/plain HostnameLookups Off ErrorLog /var/log/httpd/error_log LogLevel warn LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined SetEnvIf Request_URI \.gif$ gif-image CustomLog /var/log/httpd/access_log combined env=!gif-image ServerSignature Off
<IfModule mod_alias.c>
ScriptAlias /cgi-bin/ "/home/httpd/cgi-bin/" <Directory "/home/httpd/cgi-bin">
AllowOverride None Options None Order allow,deny Allow from all </Directory>
</IfModule>
<IfModule mod_mime.c>
AddEncoding x-compress Z AddEncoding x-gzip gz tgz AddType application/x-tar .tgz </IfModule>
ErrorDocument 500 "The server made a boo boo. ErrorDocument 404 http://192.168.1.1/error.htm ErrorDocument 403 "Access Forbidden -- Go away.
<IfModule mod_setenvif.c>
BrowserMatch "Mozilla/2" nokeepalive BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0 BrowserMatch "RealPlayer 4\.0" force-response-1.0 BrowserMatch "Java/1\.0" force-response-1.0 BrowserMatch "JDK/1\.0" force-response-1.0 </IfModule>
### Секция 3: Виртуальные хосты # <IfDefine SSL>
AddType application/x-x509-ca-cert .crt AddType application/x-pkcs7-crl .crl </IfDefine>
<IfModule mod_ssl.c>
SSLPassPhraseDialog builtin SSLSessionCache dbm:/var/run/ssl_scache SSLSessionCacheTimeout 300
SSLMutex file:/var/run/ssl_mutex
SSLRandomSeed startup builtin SSLRandomSeed connect builtin
SSLLog /var/log/httpd/ssl_engine_log SSLLogLevel warn </IfModule>
<IfDefine SSL>
<VirtualHost _default_:443>
DocumentRoot "/home/httpd/ona" ServerName www.openna.com ServerAdmin admin@openna.com ErrorLog /var/log/httpd/error_log SSLEngine on SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile /etc/ssl/certs/server.crt SSLCertificateKeyFile /etc/ssl/private/server.key SSLCACertificatePath /etc/ssl/certs SSLCACertificateFile /etc/ssl/certs/ca.crt SSLCARevocationPath /etc/ssl/crl SSLVerifyClient none SSLVerifyDepth 10
SSLOptions +ExportCertData +StrictRequire SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown SetEnvIf Request_URI \.gif$ gif-image CustomLog /var/log/httpd/ssl_request_log \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" env=!gif-image </VirtualHost>
</IfDefine>
Этот файл httpd.conf говорит следующее:
ServerType standalone
Опция “ServerType” определяет как Apache должен быть запущен. Вы можете запустить его из суперсервера inetd или как автономный демон. Для лучшей производительности и скорости рекомендуется запускать Apache как автономный демон.
ServerRoot "/etc/httpd"
Опция “ServerRoot” определяет каталог, являющийся корневым для сервера. По этому пути определяется месторасположения конфигурационных файлов.
PidFile /var/run/httpd.pid
Опция “PidFile” определяет месторасположение файла в котором будет хранится информация об id демона, когда он запущен. Эта опция требуется только если вы запускаете Apache в автономном режиме.
ResourceConfig /dev/null
Опция “ResourceConfig” определяет расположение старого файла “srm.conf”, который Apache читал после прочтения файла “httpd.conf”. Когда вы устанавливаете эту опцию в “/dev/null”, Apache позволит вам включить содержимое этого файла в файл “httpd.conf” и вы получите только один файл для конфигурирования.
AccessConfig /dev/null
Опция “AccessConfig” определяет расположение старого файла “access.conf”, который Apache читал после прочтения файла “srm.conf”. Когда вы устанавливаете эту опцию в “/dev/null”, Apache позволит вам включить содержимое этого файла в файл “httpd.conf” и вы получите только один файл для конфигурирования.
Timeout 300
Опция “Timeout” определяет время, которое Apache будет ждать до получения запросов GET, POST, PUT и ACK на передачу. Вы можете спокойно оставить значение этой опции как это принято по умолчанию.
KeepAlive On
Опция “KeepAlive”, если установлена в "On", определяет возможность установления постоянных соединений на этом веб сервере. Для лучшей производительности, рекомендуется установить этот параметр в “On,” и разрешить обработку более одного запроса на одно соединение.
MaxKeepAliveRequests 0
Опция “MaxKeepAliveRequests” определяет число запросов, которое может обработать сервер на одно соединение, если опция “KeepAlive” установлена в “On”. Когда значение равно 0, тогда может обрабатываться неограниченное число запросов. Для лучшей производительности, рекомендуется устанавливать этот параметр в 0.
KeepAliveTimeout 15
Опция “KeepAliveTimeout” определяет как долго, в секундах, Apache будет ждать поступления новых запросов до закрытия соединения. “15” секунд - хорошее среднее значение для производительности сервера.
MinSpareServers 16
Опция “MinSpareServers” определяет минимальное число неработающих дочерних процессов сервера, которые не обрабатывают запросы. Это важный настроечный параметр, влияющий на производительность веб сервера Apache. Значение “16” рекомендуется различными тестами на производительность в Интернет.
MaxSpareServers 64
Опция “MaxSpareServers” определяет максимальное число неработающих дочерних процессов сервера, которые не обрабатывают запросы. Это тоже важный настроечный параметр, влияющий на производительность веб сервера Apache. Значение “64” рекомендуется различными тестами на производительность в Интернет.
StartServers 16
Опция “StartServers” определяет число дочерних серверных процессов, которые будут созданы при запуске Apache. Это тоже важный настроечный параметр, влияющий на производительность веб сервера Apache. Значение “16” рекомендуется различными тестами на производительность в Интернет.
MaxClients 512
Опция “MaxClients” определяет число одновременных запросов, которые может обработать Apache. Это тоже важный настроечный параметр, влияющий на производительность веб сервера Apache. Значение “512” рекомендуется различными тестами на производительность в Интернет.
MaxRequestsPerChild 100000
Опция “MaxRequestsPerChild” определяет число запросов, которое индивидуальный дочерний серверный процесс может обработать, после чего автоматически умрет. Это тоже важный настроечный параметр, влияющий на производительность веб сервера Apache.
User www
Опция “User” определяет UID, под которым Apache будет запускаться. Очень важно создать нового пользователя, который имеет минимальные права доступа к системе и единственным его предназначением будет запуск демона веб сервера.
Group www
Опция “Group” определяет GID под которым Apache будет запускаться. Важно создать новую группу, которая имеет минимальные права доступа к системе и единственным ее предназначением будет запуск демона веб сервера.
DirectoryIndex index.htm index.html index.php index.php3 default.html index.cgi
Опция “DirectoryIndex” определяет файлы используемые Apache как заранее созданный HTML индекс каталога, если Apache не может найти индексные страницы по умолчанию, он будет рассматривать следующий элемент этого параметра. Для улучшения производительности вашего веб сервера, рекомендуется индексные страницы используемые на вашем сервере по умолчанию поместить в этом списке на первом месте.
Include conf/mmap.conf
Опция “Include” определяет расположение другого файла, который вы можете включить в ваш серверный конфигурационный файл (httpd.conf). В нашем случае, мы включаем файл “mmap.conf” находящийся в каталоге “/etc/httpd/conf”. Этот файл (“mmap.conf”) отображает файлы в памяти для более быстрого их предоставления. Смотрите секцию “Оптимизация Apache” для большей информации.
HostnameLookups Off
Опция “HostnameLookups”, если установлена в “Off”, определяет, что DNS lookups отключен. Рекомендуется устанавливать эту опцию в “Off” для сокращения времени сетевого трафика и улучшения производительности веб сервера Apache.
Конфигурация файла “/etc/logrotate.d/apache”
Сконфигурируем файл “/etc/logrotate.d/apache” для автоматической ротации файлов регистрации Apache каждую неделю.
Создайте файл apache (touch /etc/logrotate.d/apache) и добавьте в него:
/var/log/httpd/access_log { missingok postrotate /usr/bin/killall -HUP httpd endscript }
/var/log/httpd/error_log { missingok postrotate /usr/bin/killall -HUP httpd endscript }
/var/log/httpd/ssl_request_log { missingok postrotate /usr/bin/killall -HUP httpd endscript }
/var/log/httpd/ssl_engine_log { missingok postrotate /usr/bin/killall -HUP httpd endscript }
ЗАМЕЧАНИЕ. Строки для автоматической ротации файлов регистрации SSL “ssl_request_log” и “ssl_engine_log” включены в этот файл. Если вы решили запускать Apache без поддержки SSL, вы должны удалить их.
Сейчас, файлы регистраций Apache находятся в каталоге “/chroot/var/log/httpd” вместо “/var/log/httpd”, и из-за этого нам надо модифицировать файл “/etc/logrotate.d/httpd”. Также, мы скомпилировали Apache с mod_ssl, поэтому должны добавить строки, разрешающие программе logrotate ротировать файлы “ssl_request_log” и “ssl_engine_log”. Сконфигурируем файл “/etc/logrotate.d/apache” на автоматическую ротацию файлов регистрации каждую неделю.
Создайте файл apache (touch /etc/logrotate.d/apache) и добавьте в него: /chroot/httpd/var/log/httpd/access_log { missingok postrotate /usr/bin/killall -HUP /chroot/httpd/usr/sbin/httpd endscript }
/chroot/httpd/var/log/httpd/error_log { missingok postrotate /usr/bin/killall -HUP /chroot/httpd/usr/sbin/httpd endscript }
/chroot/httpd/var/log/httpd/ssl_request_log { missingok postrotate /usr/bin/killall -HUP /chroot/httpd/usr/sbin/httpd endscript }
/chroot/httpd/var/log/httpd/ssl_engine_log { missingok postrotate /usr/bin/killall -HUP /chroot/httpd/usr/sbin/httpd endscript }
Конфигурация скрипта “/etc/rc.d/init.d/httpd”.
Настроим ваш скрипт “/etc/rc.d/init.d/httpd”, который предназначен для запуска и остановки веб сервера Apache.
Создайте файл httpd (touch /etc/rc.d/init.d/httpd) и добавьте в него:
#!/bin/sh # # Скрипт для запуска веб сервера Apache # # chkconfig: 345 85 15 # описание: Apache – это World Wide Web сервер. Он используется для # предоставления HTML файлов и CGI. # имя процесса: httpd # pid файл: /var/run/httpd.pid # конфигурационный файл: /etc/httpd/conf/httpd.conf # Библиотека исходных функций. . /etc/rc.d/init.d/functions # Смотрите как мы вызываем. case "$1" in start) echo -n "Starting httpd: " daemon httpd -DSSL echo touch /var/lock/subsys/httpd ;; stop) echo -n "Shutting down http: " killproc httpd echo rm -f /var/lock/subsys/httpd rm -f /var/run/httpd.pid ;; status) status httpd ;; restart) $0 stop $0 start ;; reload) echo -n "Reloading httpd: " killproc httpd -HUP echo ;; *) echo "Usage: $0 {start|stop|restart|reload|status}" exit 1 esac
exit 0
Сейчас, сделайте этот скрипт исполняемым и измените права доступа:
[root@deep /]# chmod 700 /etc/rc.d/init.d/httpd
Создайте символические rc.d ссылки для Apache:
[root@deep /]# chkconfig --add httpd
Запустите ваш новый сервер Apache вручную:
[root@deep /]# /etc/rc.d/init.d/httpd start Starting httpd: [ OK ]
ЗАМЕЧАНИЕ. Опция “-DSSL” будет запускать Apache в режиме SSL. Если вы хотите запустить Apache в нормальном режиме, то удалите “-DSSL” ближайшую к строке, которая читается “daemon httpd”.
Linux MM – библиотека совместно используемой памяти
Краткий обзор.
Если вы планируете инсталлировать и использовать модули для веб сервера Apache, разработанные третьими лицами, такими как mod_perl или mod_php, то я рекомендую установить эту небольшую программу на вашем сервере. Она даст увеличение производительности этих модулей. Другой пример, если вы захотите инсталлировать Apache с поддержкой SSL для организации электронной коммерции в Интернет, то MM позволит SSL протоколу использовать высокопроизводительный кэш сессий, базирующийся на RAM вместо базирующегося на диске.
Как объяснено на веб сервере MM библиотеки совместно используемой памяти: MM библиотека – это 2-уровневая абстрактная библиотека, которая упрощает использование общей памяти между процессами, образованными в результате операции fork, на платформе Unix. На первом уровне она скрывает все платформо-зависимые детали реализации (распределение и блокирование) операций со совместно используемыми сегментами памяти, а на втором уровн предоставляет высокоуровневый API в стиле malloc(3) для удобного и хорошо известного пути работы со структурами данных в этих общих сегментах памяти.
Библиотека реализована под условиями open-source (BSD-style) лицензии. Изначально она была написана, как планировалось, для использования внутри следующей версии веб сервера Apache, как базовая библиотека для предоставления совместно используемых пулов памяти модулям Apache (потому что сейчас, модули Apache могут использовать только память с неупорядоченным хранением данных (heap-allocated memory), которые не используется совместно между pre-forked процессами). Требования этой библиотеки в основном происходит от комплексных модулей подобных mod_ssl, mod_perl и mod_php, которые извлекли бы много выгоды из совместно используемых пулов памяти.
Эти инструкции предполагают.
Unix-совместимые команды.
Путь к исходным кодам “/var/tmp” (возможны другие варианты).
Инсталляция была проверена на Red Hat Linux 6.1 и 6.2.
Все шаги инсталляции осуществляются суперпользователем “root”.
Mm версии 1.1.2
Пакеты.
Домашняя страница MM:
Вы должны скачать: mm-1.1.2.tar.gz
Тарболы.
Хорошей идеей будет создать список файлов установленных в вашей системе до инсталляции MM и после, в результате, с помощью утилиты diff вы сможете узнать какие файлы были установлены. Например,
До инсталляции:
find /* > MM1
После инсталляции:
find /* > MM2
Для получения списка установленных файлов:
diff MM1 MM2 > MM-Installed
Раскройте тарбол:
[root@deep /]# cp mm-version.tar.gz /var/tmp
[root@deep /]# cd /var/tmp
[root@deep tmp]# tar xzpf mm-version.tar.gz
Компиляция
Шаг 1
Переместитесь в новый каталог mm и введите следующие команды на терминале
./configure \
--disable-shared \
--prefix=/usr
Опции говорят MM:
- Отключить совместно используемые библиотеки.
Шаг 2
Сейчас, мы должны скомпилировать и инсталлировать библиотеку совместно используемой памяти:
[root@deep mm-1.1.2]# make
[root@deep mm-1.1.2]# make test
[root@deep mm-1.1.2]# make install
ЗАМЕЧАНИЕ. Команда “make test” создаст несколько важных тестов, для проверки работоспособности программы.
Очистка после работы
[root@deep /]# cd /var/tmp
[root@deep tmp]# rm -rf mm-version/ mm-version.tar.gz
Команды “rm” будет удалять все файлы с исходными кодами, которые мы использовали при компиляции и инсталляции mm. Также будет удален сжатый архив mm.
Дополнительная документация
Для получения большей информации, вы можете прочитать несколько страниц руководства:
mm-config (1) – конфигурационный файл библиотеки MM
Инсталлированные файлы
/usr/bin/mm-config /usr/include/mm.h /usr/lib/libmm.la /usr/lib/libmm.a /usr/man/man1/mm-config.1 /usr/man/man3/mm.3
Оптимизация Apache
Модуль mod_mmap_static
Существует специальный модуль, поставляемый с дистрибутивом Apache, называемый “mod_mmap_static”, который может быть использован для улучшения производительности вашего веб сервера. Этот модуль работает, отображая статически настроенный список часто запрашиваемых, но редко модифицируемых файлов из RootDirectory. Так, если файл выводимый Apache часто не изменяется, вы можете использовать этот модуль для отображения в памяти статического документа и увеличения скорости работы вашего веб сервера Apache.
Важно заметить, что модуль mod_mmap_static должен быть включен на этапе конфигурации и компиляции Apache. Если вы следовали за нашим описанием процесса конфигурации и компиляции, то это уже сделано в Apache (--add- module-../mod_mmap_static.c).
Шаг 1
Для отображения статических документов в памяти используйте следующую команду:
[root@deep /]# find /home/httpd/ona -type f -print | sed -e 's/.*/mmapfile &/' > /etc/httpd/conf/mmap.conf
</home/httpd/ona> - это RootDirectory, или если быть более точным каталог из которого вы будете предоставлять ваши документы, а </etc/httpd/conf/mmap.conf>
- это месторасположение файла “mmap.conf”, который содержит статическое отображение в памяти всех документов из вашего RootDirectory.
Шаг 2
После того, как файл “mmap.conf” был создан в месте, которое мы отвели для хранения этого файла, мы должны включить его в файл “httpd.conf”, чтобы использовать его возможности на сервере.
Редактируйте файл httpd.conf (vi /etc/httpd/conf/httpd.conf) и добавьте в него строки:
<IfModule mod_include.c>
Include conf/mmap.conf
</IfModule>
ЗАМЕЧАНИЕ. Смотрите документацию на Apache для большей инофрмации об использовании mod_mmap_static. Помните, что эта возможность должна использоваться, когда предоставляемые документы часто не изменяются.
Шаг 3
Перезагрузите веб сервер Apache, чтобы изменения вступили в силу: [root@deep /]# /etc/rc.d/init.d/httpd restart Shutting down http: [ OK ] Starting httpd: [ OK ]
Атрибуты atime и noatime
Атрибуты atime и noatime могут быть использованы для небольшого увеличения производительности Apache. Смотрите главу 4 в этой книге, “Общая системная оптимизация ” для большей информации по этом вопросу.
Организация защиты Apache
Изменение прав доступа к некоторым важным файлам и каталогам для вашего веб сервера
Когда вы инсталлируете Apache на вашем сервере, некоторые файлы и каталоги имеют слишком много прав установленных по умолчанию. Двоичная программа “httpd” может быть установлена в режим только для чтения пользователю “root”, и исполнения для владельца, группы и других пользователей. Каталоги “/etc/httpd/conf” и “/var/log/httpd” не должны быть открыты для чтения, записи и исполнения для других людей.
[root@deep /]# chmod 511 /usr/sbin/httpd
[root@deep /]# chmod 750 /etc/httpd/conf/
[root@deep /]# chmod 750 /var/log/httpd/
Автоматическая индексация
Если вы включили автоматическую индексацию каталогов в вашем конфигурационном файле, (IndexOptions в httpd.conf), тогда вы имеете проблему в безопасности, так как любой запрос к каталогу, не имеющему индексного файла, вызовет создания индекса всего того, что находится в каталоге. Во многих случаях, вы можете хотеть, чтобы пользователи смотрели файлы, которые вы специально создали для этого. Для отключения этой возможности, вам нужно удалить право на чтение из каталога DocumentRoot (но не файлов внутри него).
[root@deep /]# cd /home/httpd/
[root@deep httpd]# chmod 311 ona
[root@deep httpd]# ls -la
d-wx--x--x 13 webadmin webadmin 1024 Jul 28 08:12 ona
Сейчас, после этой модификации, любой запрос к защищенному каталогу должен получить сообщение об ошибке:
Forbidden
You don't have permission to access “/ona/” on this server.
ЗАМЕЧАНИЕ. “ona” – это DocumentRoot (каталог в котором вы храните ваши документы).
Создание файла с паролями .dbmpasswd для аутентификации пользователей.
Этот шаг необходим если вы планируете использовать аутентификацию пользователей для доступа к файлам на вашем веб сервере. В Apache существует много опций для защиты вашего сайта именами и паролями.
Шаг 1
Утилита “dbmmanage” из Apache может быть использована для создания и обновления имен и паролей HTTP пользователей. Этот метод использует DBM формат файла, который представляет из себя наиболее быстрый механизм, когда необходимо управлять тысячью пользователями в файле с паролями. Первое, необходимо изменить права доступа к этой программе на (0750/-rwxr-x- --), запись только для “root”, чтение и исполнение для группы и ничего для других пользователей.
Для изменнеия прав доступа используйте следующую команду:
[root@deep /]# chmod 750 /usr/bin/dbmmanage
Для создания имени пользователя и пароля используйте команду:
[root@deep /]# /usr/bin/dbmmanage /etc/httpd/.dbmpasswd adduser username
New password:
Re-type new password:
User username added with password encrypted to l4jrdAL9MH0K.
где </etc/httpd> это месторасположение файла с паролями, <.dbmpasswd>
- имя файла с паролями и <username> имя пользователя, которое мы хотим добавить в “.dbmpasswd”.
Шаг 2
Если вы используете утилиту “dbmmanage” для создания паролей и имен пользователей, не забудьте включить в ваш конфигурационный файл “/etc/httpd/conf/httpd.conf” информацию о части вашего веб сервера, которую вы хотите защитить аутентификацией пользователей по паролю:
Редактируйте файл httpd.conf (vi /etc/httpd/conf/httpd.conf) и добавьте следующие строки для защиты “приватного” каталога вашего веб сервера “ona”: <Directory "/home/httpd/ona/private">
Options None AllowOverride AuthConfig AuthName "restricted stuff" AuthType Basic AuthDBUserFile /etc/httpd/.dbmpasswd require valid-user </Directory>
Путь </home/httpd/ona/private> определяет защищаемый каталог, а </etc/httpd/.dbmpasswd>
определяет месторасположение файла с паролями. ЗАМЕЧАНИЕ. Модуль аутентификации по DB файлам с паролями вы должны включить во время конфигурирования вашего веб сервера Apache, использовав параметр “--add-module=src/modules/standard/mod_auth_db.c”. Смотрите документацию на Apache для большей информации.
Шаг 3
Вы должны перезагрузить веб сервер, чтобы изменения вступили в силу: [root@deep /]# /etc/rc.d/init.d/httpd restart Shutting down http: [ OK ] Starting httpd: [ OK ]
Шаг 4
В заключение, мы должны тестировать новый защищаемый каталог (private). Для проверки введите в окне броузера следующий адрес: http://my-web- server/private/. <my-web-server> - адрес вашего веб сервера, </private/> - это каталог, который вы защищаете.
Иммунизация важного конфигурационного файла “httpd.conf”
Как мы уже знаем, бит “постоянства” может быть использован для предотвращения удаления, переписывания или создания символической ссылки к файлу. Так как ваш файл “httpd.conf” уже настроен, то его можно защитить подобным битом:
[root@deep /]# chattr +i /etc/httpd/conf/httpd.conf
Perl библиотека CGI.pm
CGI.pm – это Perl5 библиотека, написанная для использования в CGI скриптах. Старая версия этой программы существует по умолчанию на вашей системе, но она имеет ряд ошибок. Поэтому рекомендуется обновить вашу копию до версии 2.56 и новее. Для обновления этого модуля выполните следующие шаги.
Пакеты
Домашняя страница CGI.pm:
Вы должны скачать: CGI_pm_tar.gz
CGI.pm версия 2.56
[root@deep /]# cp CGI_pm_tar.gz /var/tmp/
[root@deep /]# cd /var/tmp/
[root@deep tmp]# tar xzpf CGI_pm_tar.gz
Шаг 1
Первое, в должны проверить версию CGI.pm инсталлированной на вашей системе. Для этого используйте следющую команду:
[root@deep]# perl -e 'use CGI; print $CGI::VERSION."\n";'
2.46
Шаг 2
Перейдите в каталог CGI.pm и введите следующие команды на вашем терминале для компиляции и инсталляции обновленной библиотеки на вашем Linux сервере:
[root@deep CGI.pm-2.56]# perl Makefile.PL
[root@deep CGI.pm-2.56]# make
[root@deep CGI.pm-2.56]# make test
[root@deep CGI.pm-2.56]# make install
Очистка после работы
[root@deep /]# cd /var/tmp
[root@deep tmp]# rm -rf CGI.pm-version/ CGI_pm_tar.gz
Инсталлированные файлы.
> /usr/lib/perl5/5.00503/CGI/Pretty.pm > /usr/lib/perl5/5.00503/i386-linux/auto/CGI > /usr/lib/perl5/5.00503/i386-linux/auto/CGI/.packlist > /usr/lib/perl5/man/man3/CGI::Pretty.3
Perl модуль Devel::Symdump
Если вы планируете использовать модуль mod_perl с вашим сервером Apache, вы можете захотеть установить небольшой perl модуль “Devel::Symdump”. Этот модуль, разработанный третьими лицами, позволит вам проверять таблицу идентификаторов perl и иерархии классов в запускаемых программах. Чтобы создать и инсталлировать его выполните следующие шаги.
Пакеты.
Домашняя страница:
Вы должны скачать: Devel-Symdump-2_00_tar.gz
Devel-Symdump версия 2.00
[root@deep /]# cp Devel-Symdump-version.tar.gz /var/tmp/
[root@deep /]# cd /var/tmp/
[root@deep tmp]# tar xzpf Devel-Symdump-version.tar.gz
Шаг 1
Перейдите в новый каталог Devel-Symdump и введите следующие команды для компиляции и инсталляции модуля на ваш Linux сервер:
[root@deep Devel-Symdump-2.00]# perl Makefile.PL
[root@deep Devel-Symdump-2.00]# make
[root@deep Devel-Symdump-2.00]# make test
[root@deep Devel-Symdump-2.00]# make install
Шаг 2
Как только модуль проинсталлирован на вашей системе, вы должны включить в ваш файл “/etc/httpd/conf/httpd.conf” следующие строки, чтобы просмотреть статус различных модулей Perl на вашем сервере:
Редактируйте файл httpd.conf (vi /etc/httpd/conf/httpd.conf) и добавьте следующие строки: <Location /perl-status>
SetHandler perl-script PerlHandler Apache::Status Order deny,allow Deny from all Allow from 192.168.1.0/24 </Location>
Шаг 3
Перезапустите веб сервер Apache, чтобы изменения вступили в силу: [root@deep /]# /etc/rc.d/init.d/httpd restart
Shutting down http: [ OK ] Starting httpd: [ OK ]
Шаг 4
В заключении, мы должны тестировать новый модуль Devel-Symdump, чтобы убедиться, что мы можем смотреть статус разных модулей Perl. Для этого введите в окне броузера следующий адрес: http://my-web-server/perl-status/. Где <my-web-server> - это адрес веб сервера.
Очистка после работы
[root@deep /]# cd /var/tmp
[root@deep tmp]# rm -rf Devel-Symdump.version/ Devel-Symdump-version.tar.gz
Инсталлированные файлы
> /usr/lib/perl5/man/man3/Devel::Symdump.3 > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Devel > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Devel/Symdump > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/Devel/Symdump/.packlist > /usr/lib/perl5/site_perl/5.005/Devel > /usr/lib/perl5/site_perl/5.005/Devel/Symdump > /usr/lib/perl5/site_perl/5.005/Devel/Symdump/Export.pm > /usr/lib/perl5/site_perl/5.005/Devel/Symdump.pm
Если вы планируете использовать PHP4
Если вы планируете использовать PHP4 с вашим веб сервером Apache не забудьте включить в ваш файл “/etc/httpd/conf/httpd.conf” следующие строки, включающие эту возможность:
Шаг 1
Редактируйте файл httpd.conf file (vi /etc/httpd/conf/httpd.conf) и добавьте следующие строки между тэгами секции <IfModule mod_mime.c>
и </IfModule>:
AddType application/x-httpd-php .php
AddType application/x-httpd-php .php3
AddType application/x-httpd-php-source .phps
Шаг 2
Вы должны перезапустить веб сервер Apache, чтобы изменения вступили в силу: [root@deep /]# /etc/rc.d/init.d/httpd restart Shutting down http: [ OK ] Starting httpd: [ OK ]
Шаг 3
После того, как вышеприведенные строки были включены в файл “httpd.conf”, вы должны тестировать новую возможность PHP4. Мы создадим небольшой PHP файл с именем “php.php” в нашем DocumentRoot, и затем попробуем загрузить этот документ в наш броузер, чтобы убедиться, что PHP4 работает на сервере.
Создайте файл php.php в DocumentRoot (touch /home/httpd/ona/php.php) и внесите в него следующие строки: <body bgcolor="#FFFFFF">
<?php phpinfo()?>
</body>
ЗАМЕЧАНИЕ. Эти строки будут информировать программу PHP4 вывести различные части информации о конфигурации нашего Linux сервера.
Шаг 4
Сейчас, в броузере введите следующий адрес: http://my-web-server/php.php Где <my-web-server> это адрес вашего веб сервера Apache, а <php.php>
- это имя PHP документа, который мы создали.
Если все выглядит примерно как на рисунке, то поздарвляем! Ваш модуль PHP работает.
Веб-сервер Apache
Общий обзор.
Apache – это, в настоящее время, наиболее широко используемый HTTP-сервер в мире. Он обогнал всех коммерческих и свободно-распространяемых конкурентов на рынке, и предоставляет огромное число возможностей. Также это наиболее популярный веб сервер под Linux. Веб сервера подобные Apache, в простейшем случае, выводят HTML страницы, располагающиеся на сервере, на клиентские броузеры, понимающие HTML код. Используясь совместно с модулями и программами третьих лиц, они становятся полнофункциональными программами, которые предоставляют надежные и полезные сервисы клиентским броузерам.
Я думаю, что большинство людей, читающих эту книгу, специально интересуются тем, как инсталлировать веб сервер Apache с обеспечением максимальной безопасности и оптимизацией. В своей базовой инсталляции, Apache устанавливать не труднее, чем любое другое программное обеспечение, описанное в этой книге. Трудности начинаю возникать, когда вы хотите добавить некоторые программы и модули третьих лиц.
Существует много возможностей, вариантов и опций для инсталляции Apache. Так, в дальнейшем, мы приведем вам пошаговый пример, где мы покажем как создать Apache с модулями и программами третьих лиц: PHP4, возможностью соединения с LDAP и т.д. Конечно, создание этих программ опционально, и вы можете свободно компилировать то, что захотите (например, вы можете решить скомпилировать Apache с поддержкой PHP4, но без SSL или PostgreSQL). Для упрощения мы подразумеваем некоторые предварительные требования для каждого примера. Если они не соответствуют вашей ситуации, просто скорректируйте шаги.
В этой главе, мы объясним и охватим некоторые общие пути благодаря которым вы можете скорректировать конфигурацию для улучшения производительности сервера. Также, для особо интересующихся пользователей, мы покажем процедуру запуска Apache не от имени пользователя root и в chroot- овом окружении для оптимальной безопасности.
Эти инструкции предполагают.
Unix-совместимые команды.
Путь к исходным кодам “/var/tmp” (возможны другие варианты).
Инсталляция была проверена на Red Hat Linux 6.1 и 6.2.
Все шаги инсталляции осуществляются суперпользователем “root”.
Apache версии 1.3.12
Mod_SSL версии 2.6.4-1.3.12
Mod_Perl версии 1.24
Mod_PHP версии 4.0.0
Пакеты.
Домашняя страница Apache:
FTP сервер Apache:
Вы должны скачать: apache_1.3.12.tar.gz
Домашняя страница Mod_SSL:
FTP сервер Mod_SSL:
Вы должны скачать: mod_ssl-2.6.4-1.3.12.tar.gz
Домашняя страница Mod_Perl:
FTP сервер Mod_Perl:
Вы должны скачать: mod_perl-1.24.tar.gz
Домашняя страница Mod_PHP:
Вы должны скачать: php-4.0.0.tar.gz
Предварительные требования.
Если вы хотите включить в Apache поддержку SSL шифрования, то OpenSSL должен быть уже проинсталлирован на вашей системе.
Если вы хотите включить в Apache поддержку соединений с базой данных PosgreSQL, то PosgreSQL должен быть уже проинсталлирован на вашей системе.
Если вы хотите включить в Apache поддержку высокопроизводительного кэширования сессий, базирующегося на RAM, то MM должен быть уже проинсталлирован на вашей системе.
Если вы хотите включить в Apache поддержку соединений с сервером каталогов OpenLDAP, то OpenLDAP должен быть уже проинсталлирован на вашей системе.
Если вы хотите включить в Apache поддержку IMAP & POP, то IMAP & POP должен быть уже проинсталлирован на вашей системе.
ЗАМЕЧАНИЕ. Для большей информации о требуемых программах смотрите соответствующие главы в этой книге.
Тарболы.
Хорошей идеей будет создать список файлов установленных в вашей системе до инсталляции Apache и после, в результате, с помощью утилиты diff вы сможете узнать какие файлы были установлены. Например,
До инсталляции:
find /* > Apache1
После инсталляции:
find /* > Apache2
Для получения списка установленных файлов:
diff Apache1 Apache2 > Apache-Installed
Раскройте тарбол:
[root@deep /]# cp apache_version.tar.gz /var/tmp
[root@deep /]# cp mod_ssl-version-version.tar.gz /var/tmp
[root@deep /]# cp mod_perl-version.tar.gz /var/tmp
[root@deep /]# cp php-version.tar.gz /var/tmp
[root@deep /]# cd /var/tmp/
[root@deep tmp]# tar xzpf apache_version.tar.gz
[root@deep tmp]# tar xzpf mod_ssl-version-version.tar.gz
[root@deep tmp]# tar xzpf mod_perl-version.tar.gz
[root@deep tmp]# tar xzpf php-version.tar.gz
Запуск Apache в chroot окружении
Эта часть фокусируется на предотвращении использования Apache как точку взлома системы. Apache по умолчанию запускается как не root пользователь, ограничивая тем самым любые разрушения, действиями, котрые может выполнить обычный пользователь с локальным shell. Конечно, в большинстве случаев такой защиты достаточно, но можно сделать еще один дополнительный шаг – запуск Apache в chroot окружении.
Основная выгода от использования chroot - это ограничение части файловой системы, которую демон может видеть как корневой каталог. Дополнительно, так как эта часть файловой системы нужна только для поддержки Apache, то количество программ доступное на ней чрезвычайно ограничено. Наиболее важно то, что здесь не нужно иметь setuid-root программ, которые можно использовать для получения root доступа и взлома chroot ограничений.
Chrooting apache – это не простая задача. Перед ее решением мы рассмотрим некоторые “за” и “против”, чтобы вы решили нужно ли вам это.
За:
Если apache будет взломан, то атакующий не получит доступ к элементам файловой системы.
Плохо написанные CGI скрипты, которые могут позволить кому-нибудь получить доступ к вашему серверу не будут работать.
Против:
Существуют дополнительные библиотеки, которые вы должны иметь в chroot окружении, чтобы Apache работал корректно.
Если вы используете любые Perl/CGI возможности в Apache, вам нужно будетскопировать необходимые двоичные файлы, Perl библиотеки и файлы в предназначенное место chroot пространства. Тоже самое относится и к SSL, PHP, LDAP, PostgresSQL и другим программам третьих лиц.
chroot конфигурация приведенная ниже полагает, что вы компилировали ваш сервер Apache со внешней программой mod_ssl. Различия в том, что вы компилировали с вашим веб сервером Apache постоянно находится в библиотеках и двоичных файлах, которые вы должны копировать в chroot каталог.
Помните, что если вы компилировали Apache с поддержкой mod_perl, вы должны скопировать все связанные двоичные файлы и Perl библиотеки в chroot каталог. Perl находится в “/usr/lib/perl5” и в случае использования возможностей Perl, копируйте каталог Perl в “/chroot/httpd/usr/lib/perl5/”. Не забудьте перед копированием создать каталог “/chroot/httpd/usr/lib/perl5” в вашей chroot структуре.
Ниже приводятся все необходимые шаги для запуска веб сервера Apache в chroot окружении:
Шаг 1
Мы должны определить разделяемые библиотеки от которых зависит httpd. Их надо будет позже скопировать в chroot каталог.
Для поиска разделяемых библиотек от которых зависит httpd выполните следующую команду:
[root@deep /]# ldd /usr/sbin/httpd
libpam.so.0 => /lib/libpam.so.0 (0x40016000)
libm.so.6 => /lib/libm.so.6 (0x4001f000)
libdl.so.2 => /lib/libdl.so.2 (0x4003b000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0x4003e000)
libnsl.so.1 => /lib/libnsl.so.1 (0x4006b000)
libresolv.so.2 => /lib/libresolv.so.2 (0x40081000)
libdb.so.3 => /lib/libdb.so.3 (0x40090000)
libc.so.6 => /lib/libc.so.6 (0x400cb000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
Сделайте заметки об этих файлах; они потребуются нам позже.
Шаг 2
Создайте новый UID и GID, если этой же не сделано, необходимые для запуска Apache httpd. Это важно, потому что запуск из под root ликвидирует преимущества chroot окружения, а использование UID, которые уже существуют на системе (например, nobody) может дать доступ сервису к другим ресурсам. Представьте себе, что веб сервер запущен из под пользователя nobody, или любого другого используемого UID/GID и был взломан. Взломщик получит доступ из chroot к любым другим процессам запущенным как. Здесь приведены типичные UID и GID. Проверьте файлы “/etc/passwd” и “/etc/group” файлы на наличие свободных UID/GID. В нашей конфигурации мы используем значение “80” и UID/GID “www”.
[root@deep /]# useradd -c “Apache Server” -u 80 -s /bin/false -r -d /home/httpd www 2>/dev/null :
Вышеприведенная команда создаст группу “www” с числовым GID равном 80, и пользователя “www” с числовым номером UID равном 80.
Шаг 3
Установим chroot окружение. Первое, мы должны создать chroot структуру для Apache. Мы используем “/chroot/httpd” как chroot каталог для Apache. “/chroot/httpd” – это только каталог на отдельном разделе, где мы решили разместить apache для большей безопасности.
[root@deep /]# /etc/rc.d/init.d/httpd stop (только если Apache уже инсталлирован и запущен на вашей системе). Shutting down http: [ OK ]
[root@deep /]# mkdir /chroot/httpd
Далее мы создаем остальные каталоги:
[root@deep /]# mkdir /chroot/httpd/dev
[root@deep /]# mkdir /chroot/httpd/lib
[root@deep /]# mkdir /chroot/httpd/etc
[root@deep /]# mkdir -p /chroot/httpd/usr/sbin
[root@deep /]# mkdir -p /chroot/httpd/var/run
[root@deep /]# mkdir -p /chroot/httpd/var/log/httpd
[root@deep /]# chmod 750 /chroot/httpd/var/log/httpd/
[root@deep /]# mkdir -p /chroot/httpd/home/httpd
Копируйте основной конфигурационный каталог, конфигурационные файлы, каталог cgi-bin, root каталог и программу httpd в chroot окружение:
[root@deep /]# cp -r /etc/httpd /chroot/httpd/etc/
[root@deep /]# cp -r /home/httpd/cgi-bin /chroot/httpd/home/httpd/
[root@deep /]# cp -r /home/httpd/your-DocumentRoot /chroot/httpd/home/httpd/
[root@deep /]# mknod /chroot/httpd/dev/null c 1 3
[root@deep /]# chmod 666 /chroot/httpd/dev/null
[root@deep /]# cp /usr/sbin/httpd /chroot/httpd/usr/sbin/
Нам нужны каталоги “/chroot/httpd/etc”, “/chroot/httpd/dev”, “/chroot/httpd/lib”, “/chroot/httpd/usr/sbin”, “/chroot/httpd/var/run”, “/chroot/httpd/home/httpd” и “/chroot/httpd/var/log/httpd”, потому что “/” считается от точки chroot.
Шаг 4
Если вы скомпилировали Apache с поддержкой SSL, вы должны скопировать элементы каталога “/etc/ssl”, который содержит все приватные и публичные ключи в chroot окружение.
[root@deep /]# cp -r /etc/ssl /chroot/httpd/etc/
(требуется только если включена поддержка mod_ssl).
[root@deep /]# chmod 600 /chroot/httpd/etc/ssl/certs/ca.crt
(требуется только если включена поддержка mod_ssl).
[root@deep /]# chmod 600 /chroot/httpd//etc/ssl/certs/server.crt
(требуется только если включена поддержка mod_ssl).
[root@deep /]# chmod 600 /chroot/httpd/etc/ssl/private/ca.key
(требуется только если включена поддержка mod_ssl).
[root@deep /]# chmod 600 /chroot/httpd/etc/ssl/private/server.key
(требуется только если включена поддержка mod_ssl).
Шаг 5
Так как мы компилировали apache с использованием разделяемых библиотек, нам нужно инсталлировать их в структуру chroot каталога. Используйте ldd /chroot/httpd/usr/sbin/httpd для поиска требуемых библиотек. Вывод этой команды будет выглядеть примерно так:
libpam.so.0 => /lib/libpam.so.0 (0x40016000)
libm.so.6 => /lib/libm.so.6 (0x4001f000)
libdl.so.2 => /lib/libdl.so.2 (0x4003b000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0x4003e000)
libnsl.so.1 => /lib/libnsl.so.1 (0x4006b000)
libresolv.so.2 => /lib/libresolv.so.2 (0x40081000)
libdb.so.3 => /lib/libdb.so.3 (0x40090000)
libc.so.6 => /lib/libc.so.6 (0x400cb000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
Копируйте разделяемые библиотеки определенные выше:
[root@deep /]# cp /lib/libpam.so.0 /chroot/httpd/lib/
[root@deep /]# cp /lib/libm.so.6 /chroot/httpd/lib/
[root@deep /]# cp /lib/libdl.so.2 /chroot/httpd/lib/
[root@deep /]# cp /lib/libcrypt.so.1 /chroot/httpd/lib/
[root@deep /]# cp /lib/libnsl* /chroot/httpd/lib/
[root@deep /]# cp /lib/libresolv* /chroot/httpd/lib/
[root@deep /]# cp /lib/libdb.so.3 /chroot/httpd/lib/
[root@deep /]# cp /lib/libc.so.6 /chroot/httpd/lib/
[root@deep /]# cp /lib/ld-linux.so.2 /chroot/httpd/lib/
Вам также нужны следующие дополнительные библиотеки для некоторых сетевых функций, подобных резолвингу:
[root@deep /]# cp /lib/libnss_compat* /chroot/httpd/lib/
[root@deep /]# cp /lib/libnss_dns* /chroot/httpd/lib/
[root@deep /]# cp /lib/libnss_files* /chroot/httpd/lib/
Шаг 6
Мы должны скопировать passwd и group файлы в “/chroot/httpd/etc”. Концепция их использования такая же как и в ftpd. Затем, мы удаляем все элементы из этих файлов, за исключением пользователя и группы под которыми запускается apache.
[root@deep /]# cp /etc/passwd /chroot/httpd/etc/
[root@deep /]# cp /etc/group /chroot/httpd/etc/
Редактируйте файл passwd (vi /chroot/httpd/etc/passwd) и удалите все элементы, кроме пользователя под которым мы запускаем apache (в нашем случае это “www”):
www:x:80:80::/home/www:/bin/bash
Редактируйте файл group (vi /chroot/httpd/etc/group) и удалите все элементы, кроме группы под которой запускается apache (в нашем случае это “www”):
www:x:80:
Шаг 7
Вам потребуются файлы “/etc/resolv.conf”, “/etc/nsswitch.conf” и “/etc/hosts” в вашем chroot окружении.
[root@deep /]# cp /etc/resolv.conf /chroot/httpd/etc/
[root@deep /]# cp /etc/hosts /chroot/httpd/etc/
[root@deep /]# cp /etc/nsswitch.conf /chroot/httpd/etc/
Шаг 8
Сейчас на некоторые файлы в chroot окружении мы установим бит “постоянства” для лучшей безопасности.
Установите бит “постоянства” на файл “passwd”:
[root@deep /]# cd /chroot/httpd/etc/
[root@deep /]# chattr +i passwd
Установите бит “постоянства” на файл “group”:
[root@deep /]# cd /chroot/httpd/etc/
[root@deep /]# chattr +i group
Установите бит “постоянства” на файл “httpd.conf”:
[root@deep /]# cd /chroot/httpd/etc/httpd/conf/
[root@deep /]# chattr +i httpd.conf
Установите бит “постоянства” на файл “resolv.conf”:
[root@deep /]# cd /chroot/httpd/etc/
[root@deep /]# chattr +i resolv.conf
Установите бит “постоянства” на файл “hosts”:
[root@deep /]# cd /chroot/httpd/etc/
[root@deep /]# chattr +i hosts
Установите бит “постоянства” на файл “nsswitch.conf”:
[root@deep /]# cd /chroot/httpd/etc/
[root@deep /]# chattr +i nsswitch.conf
Шаг 9
Копируйте файл “localtime” в chroot так, чтобы регистрационные входы были правильно откорректированы для вашей локальной timezone:
[root@deep /]# cp /etc/localtime /chroot/httpd/etc/
Шаг 10
Удалите не нужные Apache файлы и каталоги:
[root@deep /]# rm -rf /var/log/httpd/
[root@deep /]# rm -rf /etc/httpd/
[root@deep /]# rm -rf /home/httpd/
[root@deep /]# rm -f /usr/sbin/httpd
Мы можем спокойно удалить все вышеназванные файлы и каталоги , так как они сейчас находятся в нашем chroot каталоге.
Шаг 11.
Сказать syslogd о новом chroot сервисе. Нормально, процессы обращаются к syslogd через “/dev/log”. В chroot окружении это невозможно, поэтому syslogd должен слушать “/chroot/httpd/dev/log”. Чтобы сделать это, редактируйте скрипт запуска syslog для определения дополнительного места, которое необходимо слушать.
Редактируйте скрипт syslog (vi /etc/rc.d/init.d/syslog) и измените строку:
daemon syslogd -m 0
на:
daemon syslogd -m 0 -a /chroot/httpd/dev/log
Шаг 12
По умолчанию скрипт httpd запускает демон “httpd” вне chroot окружения. Мы должны изменить это, для этого редактируйте скрипт httpd (vi /etc/rc.d/init.d/httpd) и измените следующие строки:
daemon httpd
на:
/usr/sbin/chroot /chroot/httpd/ /usr/sbin/httpd -DSSL
rm -f /var/run/httpd.pid
на:
rm -f /chroot/httpd/var/run/httpd.pid
Шаг 13
В заключении, вы должны проверить новую chroot конфигурацию вашего веб сервера Apache.
Первое, перезагрузите демон syslogd: [root@deep /]# /etc/rc.d/init.d/syslog restart Shutting down kernel logger: [ OK ] Shutting down system logger: [ OK ] Starting system logger: [ OK ] Starting kernel logger: [ OK ]
Затем, запустите Apache в chroot окружении: [root@deep /]# /etc/rc.d/init.d/httpd start Starting httpd: [ OK ]
Если вы не получили каких-либо ошибок дайте команду:
[root@deep /]# ps ax | grep httpd
14373 ? S 0:00 httpd -DSSL
14376 ? S 0:00 httpd -DSSL
14377 ? S 0:00 httpd -DSSL
14378 ? S 0:00 httpd -DSSL
14379 ? S 0:00 httpd -DSSL
14380 ? S 0:00 httpd –DSSL
14381 ? S 0:00 httpd -DSSL
14382 ? S 0:00 httpd -DSSL
14383 ? S 0:00 httpd -DSSL
14384 ? S 0:00 httpd -DSSL
14385 ? S 0:00 httpd -DSSL
14386 ? S 0:00 httpd -DSSL
14387 ? S 0:00 httpd -DSSL
14388 ? S 0:00 httpd -DSSL
14389 ? S 0:00 httpd -DSSL
14390 ? S 0:00 httpd -DSSL
14391 ? S 0:00 httpd -DSSL
14397 ? S 0:00 httpd -DSSL
14476 ? S 0:00 httpd -DSSL
14477 ? S 0:00 httpd -DSSL
14478 ? S 0:00 httpd -DSSL
Если это так, то проверьте действительно процесс сменил корень (chroot):
[root@deep /]# ls -la /proc/14373/root/
Вы должны увидеть:
dev
etc
home
lib
usr
var
где 14373 PID одного из процессов httpd.
Поздравляем!
Так же как описано выше, если вы используете Perl, вам нужно скопировать или создать жесткие ссылки любых системных библиотек, perl библиотек “/usr/lib/perl5” и двоичных файлов в chroot структуре. Также надо действовать для SSL, PHP, LDAP, PostgreSQL и других программ.
Опциональные компоненты устанавливаемые с веб-сервером Apache - Webalizer
В этой главе
В этой главе, я буду говорить о трех полезных внешних программах, которые можно инсталлировать на ваш Linux сервер. Эти программы созданы для использования с веб сервером Apache и полезны если вы планируете использовать Apache в вашей организации. Если это не так, то вы можете пропустить эту главу и затем продолжить чтение этой книги. Вначале мы будем говорить о Webalizer, который предназначен для анализа файлов регистраций веб сервера. Затем мы обсудим FAQ-O-Matic, который может быть использован для создания списков FAQ, базы данных отслеживания ошибок, документации и много другого на вашем сервере. В Заключении, мы будем говорить об очень тонкой интересной программе, называемой Webmail, которая позволит вам предлагать вашим клиентам почтовые бюджеты, или доступ и чтение почты в безопасным способом.
Информирование Apache о месторасположении файлов Faq-O-Matic
После инсталляции Faq-O-Matic, мы должны добавить следующие строки в файл “httpd.conf”.
Шаг 1
Редактируйте файлы httpd.conf (vi /etc/httpd/conf/httpd.conf) и добавьте следующие строки между тэгами секции <IfModule mod_alias.c> и </IfModule>:
Alias /faqomatic/ "/home/httpd/faqomatic/" <Directory "/home/httpd/faqomatic">
Options None AllowOverride None Order allow,deny Allow from all </Directory>
Alias /bags/ "/home/httpd/faqomatic/bags/" <Directory "/home/httpd/faqomatic/bags">
Options None AllowOverride None Order allow,deny Allow from all </Directory>
Alias /cache/ "/home/httpd/faqomatic/cache/" <Directory "/home/httpd/faqomatic/cache">
Options None AllowOverride None Order allow,deny Allow from all </Directory>
Alias /item/ "/home/httpd/faqomatic/item/" <Directory "/home/httpd/faqomatic/item">
Options None AllowOverride None Order allow,deny Allow from all </Directory>
Шаг 2
Не забудьте перезапустить веб сервер Apache, чтобы внесенные изменения вступили в силу:
[root@deep /]# /etc/rc.d/init.d/httpd restart Shutting down http: [ OK ] Starting httpd: [ OK ]
Информирование Apache о выходном каталоге Webalizer
Сейчас, когда Webalizer инсталлирован на вашей системе, мы должны добавить следующие строки в файл “httpd.conf”
Шаг 1
Редактируйте файл httpd.conf (vi /etc/httpd/conf/httpd.conf) и добавьте следующие строки между тэгами секции <IfModule mod_alias.c> и </IfModule>:
Alias /usage/ "/home/httpd/usage/" <Directory "/home/httpd/usage">
Options None AllowOverride None Order deny,allow Deny from all Allow from 192.168.1.0/24 </Directory>
Шаг 2
Не забудьте перезагрузить ваш веб сервер, чтобы изменения внесенные в файл “httpd.conf” вступили в силу:
[root@deep /]# /etc/rc.d/init.d/httpd restart Shutting down http: [ OK ] Starting httpd: [ OK ]
Инсталлированные файлы
> /etc/webalizer.conf.sample > /usr/bin/webalizer > /usr/man/man1/webalizer.1
> /usr/lib/perl5/man/man3/FAQ::OMatic::API.3 > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/FAQ > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/FAQ/OMatic > /usr/lib/perl5/site_perl/5.005/i386-linux/auto/FAQ/OMatic/.packlist > /usr/lib/perl5/site_perl/5.005/FAQ > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic/Bags.pm > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic/authenticate.pm > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic/ImageRef.pm > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic/Groups.pm > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic/submitGroup.pm > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic/recent.pm > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic/submitItem.pm > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic/maintenance.pm > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic/Language_de_iso8859_1.pm > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic/Slow.pm > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic/help.pm > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic/selectBag.pm > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic/submitPart.pm > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic/delPart.pm > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic/buildSearchDB.pm > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic/mirrorServer.pm > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic/editItem.pm > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic/search.pm > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic/SearchMod.pm > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic/addItem.pm > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic/Versions.pm > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic/displaySlow.pm > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic/Language_fr.pm > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic/img.pm > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic/editPart.pm > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic/AuthLocal.pm > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic/ColorPicker.pm > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic/ImageData.pm > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic/changePass.pm > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic/submitBag.pm > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic/submitModOptions.pm > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic/I18N.pm > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic/Log.pm > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic/appearanceForm.pm > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic/moveItem.pm > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic/editGroups.pm > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic/HelpMod.pm > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic/searchForm.pm > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic/submitPass.pm > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic/submitMove.pm > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic/Set.pm > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic/statgraph.pm > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic/stats.pm > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic/Item.pm > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic/Words.pm > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic/Appearance.pm > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic/dispatch.pm > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic/editBag.pm > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic/submitCatToAns.pm > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic/submitAnsToCat.pm > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic/editModOptions.pm > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic/Auth.pm > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic/install.pm > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic/Part.pm > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic/faq.pm > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic/API.pm > /usr/lib/perl5/site_perl/5.005/FAQ/OMatic.pm
Компиляция
Переместитесь в новый каталог Webalizer и введите следующие команды на вашем терминале:
CC="egcs" \
CFLAGS="-O9 -funroll-loops -ffast-math -malign-double -mcpu=pentiumpro -march=pentiumpro -fomit-frame-pointer -fno-exceptions" \
./configure \
--prefix=/usr
[root@deep webalizer-1.30-04]# make
[root@deep webalizer-1.30-04]# make install
[root@deep webalizer-1.30-04]# mkdir /home/httpd/usage
Команда “make” будет компилировать все файлы с исходными кодами в двоичные исполняемые файлы, команда “make install” проинсталлирует все двоичные и сопутствующие им файлы в требуемые места. Команда “mkdir” создаст новый каталог “usage” в каталоге “/home/httpd/”, где мы будем размещать все связанные с Webalizer файлы.
Очистка после работы
[root@deep /]# cd /var/tmp
[root@deep tmp]# rm -rf webalizer-version/ webalizer-version-src.tgz
Команды “rm” будет удалять все файлы с исходными кодами, которые мы использовали при компиляции и инсталляции Webalizer. Также будет удален сжатый архив Webalizer.
Для инсталляции программы Faq-O-Matic на вашем компьютере переместитесь в каталог FAQ-O-Matic и введите следующие команды:
[root@deep FAQ-OMatic-2.709]# perl Makefile.PL
[root@deep FAQ-OMatic-2.709]# make
[root@deep FAQ-OMatic-2.709]# make install
[root@deep FAQ-OMatic-2.709]# mv fom /home/httpd/cgi-bin/
(или туда, где находится ваш CGI).
[root@deep FAQ-OMatic-2.709]# mkdir -p /home/httpd/cgi-bin/fom-meta
[root@deep FAQ-OMatic-2.709]# mkdir -p /home/httpd/faqomatic
[root@deep FAQ-OMatic-2.709]# chown root.www /home/httpd/cgi-bin/fom
[root@deep FAQ-OMatic-2.709]# chown -R www.www /home/httpd/cgi-bin/fom-meta/
[root@deep FAQ-OMatic-2.709]# chown -R www.www /home/httpd/faqomatic/
Команда “make” компилирует все файлы с исходными кодами в исполняемые двоичные, команда “make install” будет инсталлировать Perl программы и сопутствующие им файлы в нужные каталоги. Команда “mv” переместит CGI программу “fom” в каталог “cgi-bin” вашего веб сервера. “mkdir” создаст новый каталоги “fom-meta” и “faqomatic” в каталоге “/home/httpd/” где будут храниться все связанные с FAQ-O-Matic файлы. В заключении, команда “chown” установит владельца CGI программы “fom” пользователя “root” и группу под которым запускается веб сервер “www”, и устанавливает владельца и группу “www” на каталоги “fom-meta” и “faqomatic”.
ЗАМЕЧАНИЕ. Вы получите временный пароль по электронной почте во время компиляции программы. Этот пароль будет нужен для окончания процесса инсталляции Faq-O-Matic через веб интерфейс.
Для инсталляции программы Webmail IMP на вашем сервере выполните следующие шаги.
Шаг 1
Копируйте horde-1.2.0-pre11.tar.gz в DocumentRoot (/home/httpd/), раскройте его и переименуйте каталог “horde-version” в “horde”, выполнив следующие команды:
[root@deep /]# cp horde-version.tar.gz /home/httpd/
[root@deep /]# cd /home/httpd/
[root@deep httpd]# tar xzpf horde-version.tar.gz
[root@deep httpd]# mv horde-version horde
[root@deep httpd]# rm -f horde-version.tar.gz
ЗАМЕЧАНИЕ. Мы удалили tar архив, содержащий Horde, после переименования каталога “horde-version” в “horde”.
Шаг 2
Копируйте imp-2.2.0-pre11.tar.gz в ваш каталог “horde” (/home/httpd/horde/), раскройте его и переименуйте каталог “imp-version” в “imp”:
[root@deep /]# cp imp-version.tar.gz /home/httpd/horde/
[root@deep /]# cd /home/httpd/horde/
[root@deep horde]# tar xzpf imp-version.tar.gz
[root@deep horde]# mv imp-version imp
[root@deep horde]# rm -f imp-version.tar.gz
ЗАМЕЧАНИЕ. Важно, чтобы каталог “imp” находился в каталоге “horde”, иначе Webmail не будет работать. После переименования каталога “imp-version” в “imp” мы удалили архив содержащий IMP Webmail.
Шаг 3
Измените владельца каталога “horde” и всех его подкаталогов и файлов на “root” из соображений безопасности.
[root@deep /]# chown -R 0.0 /home/httpd/horde/
Шаг 4
Копируйте файлы “/home/httpd/horde/phplib/*.ihtml” в новый каталог “php” (/home/httpd/php/), выполнив следующую команду:
[root@deep /]# cp /home/httpd/horde/phplib/*.ihtml /home/httpd/php/
Конфигурация файла “/etc/webalizer.conf”
“/etc/webalizer.conf” является конфигурационным файлом по умолчанию для Webalizer. С его помощью, вы можете определить какие каталоги или страницы на вашем веб сервере анализировать, какие URL-ы скрывать и пр. По умолчанию, программа Webalizer будет инсталлировать простой конфигурационный файл с именем “webalizer.conf.sample” в каталог “/etc/”. Вы можете использовать его, переименовав в “webalizer.conf”, чтобы Webalizer мог найти его и использовать. В этом файле можно использовать много разных опций, поэтому важно прочитать документацию поставляемую с Webalizer, чтобы получить больше информации о различных установках и параметрах. Ниже мы прокомментируем наиболее важные и часто используемые параметры.
Редактируйте файл webalizer.conf.sample (vi /etc/webalizer.conf.sample) или создайте файл webalizer.conf (touch /etc/webalizer.conf) и добавьте/измените следующее:
LogFile /var/log/httpd/access_log OutputDir /home/httpd/usage Incremental yes PageType htm* PageType cgi PageType php HideURL *.gif HideURL *.GIF HideURL *.jpg HideURL *.JPG HideURL *.ra IgnoreURL /taskbar*
Эти опции говорят webalizer следующее:
LogFile /var/log/httpd/access_log
Опция “LogFile” определяет файл регистрации обрабатываемый Webalizer. По умолчанию он подразумевает файл “access_log” от веб сервера Apache, но вы можете определить другой, например файл “access.log” от прокси сервера Squid, используемого в режиме httpd-акселератора. Смотрите главу 18, “Программное обеспечение прокси сервера ”, для получения большей информации.
OutputDir /home/httpd/usage
Опция “OutputDir” определяет месторасположение выходного каталога, используемого для хранения отчетов Webalizer. Рекомендуется, чтобы вы создали этот каталог там, где располагается ваш веб сервер Apache.
Incremental yes
Опция “Incremental” если установлена в “Yes” говорит программе обрабатывать часть файла регистрации, и позволит вам ротировать ваши файлы регистраций так много раз как вам надо без потери информации о доступе к серверу. Рекомендуется установить эту опцию в “Yes”.
PageType htm* cgi php
Опция “PageType” определяет файлы с какими расширениями Webalizer обрабатывает как страницы. Каждое добавление нового расширения должно быть в отдельной строке, как это показано в конфигурационном файле.
HideURL *.gif *.GIF *.jpg *.JPG *.ra
Опция “HideURL” определяет какие элементов (графические файлы, аудио файлы и другие не 'html' файлы) скрываются в отчетах. Каждый добавляемый элемент должен быть в отдельной строке, как это показано в конфигурационном файле.
IgnoreURL /taskbar*
Опция “IgnoreURL” определяет URL, которые полностью игнорируются в создаваемых отчетах. Эта опция может быть использована для игнорирования каталогов, которые не важны для ваших отчетов. Она также полезно, когда вы хотите определять, какие URL должны быть обработаны, а какие нет.
ЗАМЕЧАНИЕ. Если вы решили использовать существующий файл “/etc/webalizer.conf.sample” для настройки ваших параметров для Webalizer, не забедьте переименовать его в “webalizer.conf” или программа не найдет его.
Конфигурирование FAQ-O-Matic
Окончание инсталляции будет осуществляться через ваш веб броузер. Выполните следующие шаги в вашем Netscape Communicator:
Шаг 1
На первом шаге загрузите веб броузер и используйте его для конфигурирования.
Введите в окне броузера следующий адрес: http://my-web-server/cgi-bin/fom
Введите ваш временный пароль
В первую очередь создайте каталог “/home/httpd/cgi-bin/fom-meta/”
Настройте “Define configuration parameters” в основном конфигурационном меню
Например в секции Mandatory введите следующую команду:
$adminAuth= admin@openna.com
$serverBase= http://www.openna.com
$cgiURL= /cgi-bin/fom
$serveDir= /home/httpd/faqomatic/
$serveURL= /faqomatic/
Настройте “Define configuration parameters” как вам нужно. После окончания установки всех параметров нажмите на кнопку “Define” для подтверждения выбора.
ЗАМЕЧАНИЕ. <my-web-server> - это адрес вашего веб сервера Apache, а временный пароль должен был вам прислан по электронной почте во время компиляции.
Шаг 2
После окончания конфигурирования “Define configuration parameters”, вы должны закончить настройку остальной части FAQ-O-Matic, чтобы иметь возможность использовать его так, как описано в главном меню.
Очистка после работы
[root@deep /]# cd /var/tmp
[root@deep tmp]# rm -rf FAQ-OMatic-version/ FAQ-O-Matic-version.tar.gz
Команды “rm” будет удалять все файлы с исходными кодами, которые мы использовали при компиляции и инсталляции FAQ-O-Matic. Также будет удален сжатый архив FAQ-O-Matic.
Linux FAQ-O-Matic
Краткий обзор
Как написано на веб сервере Faq-O-Matic:
Архивы списков рассылки это очень хорошо, потому что позволяют внимательным людям с Часто Задаваемыми Вопросами найти на них немедленно ответы, не беспокоя при этом других людей. К сожалению ответы в списках рассылки через некоторое время устаревают, дезорганизованы и приходится интенсивно поработать, чтобы отсеять их от разного “мусора”. Список Часто Задаваемых Вопросов (FAQ) лучше, потому, что даже ленивые люди могут легко находить в них ответы. К сожалению, поддержка списка FAQ требует усилий; если им не заниматься, то информация в нем устаревает. Faq-O-Matic – это система, базирующаяся на CGI, автоматизирующая процесс поддержки FAQ (списка Часто Задаваемых Вопросов). Она позволяет пользователям вашего FAQ принимать участие в его формировании. Система разрешений также делает FAQ-O-Matic полезным как приложение "справочный стол", база отслеживания ошибок и документационная система.
Эти инструкции предполагают.
Unix-совместимые команды.
Путь к исходным кодам “/var/tmp” (возможны другие варианты).
Инсталляция была проверена на Red Hat Linux 6.1 и 6.2.
Все шаги инсталляции осуществляются суперпользователем “root”.
FAQ-O-Matic версии 2.709
Пакеты.
Домашняя страница FAQ-O-Matic:
Наиболее свежая версия FAQ-O-Matic всегда доступна с
.
Вы должны скачать: FAQ-OMatic-2.709.tar.gz
Предварительные требования
Веб сервер должен быть уже установлен до начала использования FAQ-O-Matic.
Система контроля версий (RCS) должна быть также уже установлена до использования FAQ-O-Matic.
Чтобы проверить, установлен ли пакет RCS на вашей системе используйте команду:
[root@deep /]# rpm -qi rcs
package rcs is not installed
Для инсталляции RCS используйте следующую команду:
[root@deep /]# mount /dev/cdrom /mnt/cdrom/ [root@deep /]# cd /mnt/cdrom/RedHat/RPMS/ [root@deep RPMS]# rpm -Uvh rcs-version.i386.rpm rcs ################################################## [root@deep RPMS]# cd /; umount /mnt/cdrom/
Раскройте тарбол:
[root@deep /]# cp FAQ-O-Matic-version.tar.gz /var/tmp/
[root@deep /]# cd /var/tmp/
[root@deep tmp]# tar xzpf FAQ-O-Matic-version.tar.gz
Linux Webmail IMP
Краткий обзор
Webmail IMP дает универсальный, базирующийся на веб доступ к IMAP/POP3 серверам и предоставляет адресную книгу, поиск по каталогу LDAP, полную поддержку приема и отправки прикрепленных файлов и много других возможностей, которые могут быть найдены в стандартных почтовых клиентах. Если вы инсталлировали Apache с поддержкой SSL, то клиенты смогут получить доступ и читать почту в безопасной манере, используя SSL шифрование. По умолчанию в этой секции, мы будем настраивать Webmail IMP на использование базы данных PostgreSQL и IMAP соединений. Кроме того, Webmail IMP позволяет работать с другими базами данных. Если вам нужно, вы можете использовать MySQL, Oracle, Sybase или другие хорошо известные базы данных SQL. Вы также можете выбрать использование POP3 соединения вместо IMAP для ваших клиентов.
Эти инструкции предполагают.
Unix-совместимые команды.
Путь к исходным кодам “/var/tmp” (возможны другие варианты).
Инсталляция была проверена на Red Hat Linux 6.1 и 6.2.
Все шаги инсталляции осуществляются суперпользователем “root”.
Horde версии 1.2.0
Webmail IMP версии 2.2.0
PHPLib версии 7.2b
Пакеты.
Домашняя страница Webmail IMP:
Вы должны скачать: horde-1.2.0-pre11.tar.gz
Вы должны скачать: imp-2.2.0-pre11.tar.gz
Домашняя страница PHPLib:
Вы должны скачать: phplib-7.2b.tar.gz
Предварительные требования
До использования Webmail IMP у вас должен быть установлен веб сервер Apache.
До использования Webmail IMP у вас должен быть установлен PHP4.
Postgresql или другой сервер баз данных должен быть установлен, если вы планируете использовать Webmail IMP с поддержкой SQL.
OpenLDAP должен быть установлен, если вы планируете использовать Webmail IMP с поддержкой LDAP.
До использования Webmail IMP у вас должен быть установлен сервер IMAP/POP.
До использования Webmail IMP у вас должны быть установлены файлы PHPLIB 7.2 или выше.
Настройка Apache на работу с Webmail IMP
После инсталляции Webmail IMP на вашей системе, мы должны добавить следующие строки в файл “httpd.conf”, чтобы иметь возможность находить и использовать его возможности.
Шаг 1
Редактируйте файл httpd.conf (vi /etc/httpd/conf/httpd.conf) и добавьте следующие строки между тэгами секции <IfModule mod_alias.c> и </IfModule>:
Alias /horde/ "/home/httpd/horde/" <Directory "/home/httpd/horde">
Options None AllowOverride None Order allow,deny Allow from all </Directory>
Alias /imp/ "/home/httpd/horde/imp/" <Directory "/home/httpd/horde/imp">
Options None AllowOverride None Order allow,deny Allow from all </Directory>
Шаг 2
Вы должны перезагрузить Apache, чтобы изменения вступили в силу:
[root@deep /]# /etc/rc.d/init.d/httpd restart Shutting down http: [ OK ] Starting httpd: [ OK ]
Настройка и создание SQL базы данных Webmail IMP
Мы сейчас должны сконфигурировать нашу базу данных на работу с Webmail IMP. Самый простой способ для этого – использовать предопределенные скрипты расположенные в подкаталоге “/home/httpd/horde/imp/config/scripts/”. Для PostgreSQL выполните следующие шаги.
Шаг 1
Первое, вы должны редактировать скрипт “pgsql_create.sql”, связанный с PostgreSQL и расположенный в подкаталоге “/home/httpd/horde/imp/config/scripts”. Измените в нем принятое по умолчанию значение имени пользователя от которого запускается “httpd” на “www”. Редактируйте файл pgsql_create.sql (vi /home/httpd/horde/imp/config/scripts/pgsql_create.sql) и измените строку:
GRANT SELECT, INSERT, UPDATE ON imp_pref, imp_addr TO nobody;
на:
GRANT SELECT, INSERT, UPDATE ON imp_pref, imp_addr TO www;
Шаг 2
Сейчас, мы должны определить пользователя для Apache (“www”) в вашей базе данных PostgreSQL, чтобы можно было создавать базы данных Webmail IMP этим пользователем.
Для определения пользователя “www” в вашей базе данных, запустите утилиту createuser из PostgreSQL:
[root@deep /]# su postgres
[postgres@deep /]$ createuser
Enter name of user to add ---> www
Enter user's postgres ID or RETURN to use unix user ID: 80 -> [Press Enter]
Is user "www" allowed to create databases (y/n) y
Is user "www" a superuser? (y/n) n
createuser: www was successfully added
Шаг 3
После того, как пользователь “www” включен в базу данных PostgreSQL, подключитесь к PostgreSQL (в нашем случае как “postgres”) и запустите небольшой скрипт, который автоматически создаст Webmail IMP базу данных в PostgreSQL:
[root@deep /]# cd /home/httpd/horde/imp/config/scripts/ [root@deep scripts]# su postgres [postgres@deep scripts]$ psql template1 < pgsql_create.sql // IMP database creation script for postgreSQL // Author: barce@lines.edu // Date: Aug-29-1998 // Notes: replace "nobody" with yours httpd username // Run using: psql template1 < pgsql_create.sql
CREATE DATABASE horde; CREATEDB
\connect horde connecting to new database: horde
CREATE TABLE imp_pref ( username text, sig text, fullname text, replyto text, lang varchar(30) ); CREATE
CREATE TABLE imp_addr ( username text, address text, nickname text, fullname text ); CREATE
GRANT SELECT, INSERT, UPDATE ON imp_pref, imp_addr TO www; CHANGE EOF
Шаг 4
Мы должны перезагрузить сервер PostgreSQL, чтобы изменения вступили в силу:
[root@deep /]# /etc/rc.d/init.d/postgresql restart
Stopping postgresql service:[ OK ]
Checking postgresql installation: looks good!
Starting postgresql service: postmaster [13474]
Шаг 5
Копируйте и переименуйте файл "/home/httpd/horde/phplib/horde_phplib.inc" в "/home/httpd/php/local.inc", затем редактируйте новый "local.inc", который является конфигурационным файлом phplib, содержащим установки, определяющие поведение phplib.
[root@deep /]# cp /home/httpd/horde/phplib/horde_phplib.inc
/home/httpd/php/local.inc
cp: overwrite `/home/httpd/php/local.inc'? y
Редактируйте файл local.inc (vi /home/httpd/php/local.inc), раскомментируйте и установите следующие строки для определения SQL как вашей базы данных по умолчанию:
/* Для использования базы данных SQL раскомментируйте и редактируйте следующее: */ class HordeDB extends DB_Sql { var $Host = 'localhost'; var $Database = 'horde'; var $User = 'www'; var $Password = 'some-password'; var $Port = '5432'; function halt($msg) { printf("<b>Database error (HordeDB):</b> %s<br>\n", $msg); } } class HordeCT extends CT_Sql { var $database_class = 'HordeDB'; // Какой класс базы данных использовать… var $database_table = 'active_sessions'; // и находить наши данные в таблице. }
ЗАМЕЧАНИЕ. Не забудьте раскомментировать в этом файле тип контейнера для хранения информации, который вы хотите использовать в Webmail IMP. Помните, надо раскомментировать только один тип. В нашем случае мы выбрали SQL базу данных “var $User =”, “var $Password =” и “var $Port =”. “var $User =” соответствует вашему httpd пользователю (у нас “www”), “var $Password =” соответствует паролю для пользователя “www”, определенного в PostgreSQL, и “var $Port =” – это номер порта используемого для соединений с базой данных SQL.
Шаг 6
В заключении, редактируйте файл “/home/httpd/php/prepend.php3” и определить тип вашей базы данных.
Редактируйте файл prepend.php3 (vi /home/httpd/php/prepend.php3) и измените в нем следующие строки для определения PostgreSQL как тип ваше базы данных:
require($_PHPLIB["libdir"] . "db_mysql.inc");
на:
require($_PHPLIB["libdir"] . "db_pgsql.inc");
Еще вам надо настроить конфигурационный
Еще вам надо настроить конфигурационный файл PHP4 “/etc/httpd/php.ini”. Изменения вносимые в него зависят от того, какие возможности (такие как IMAP, PostgreSQL и др.) должны загружаться автоматически PHP4. Так как мы решили использовать PostgreSQL для хранения информации и IMAP возможности Webmail, мы должны определить их в файле “php.ini”.
Шаг 1
Редактируйте файл php.ini (vi /etc/httpd/php.ini) и добавьте в секции Dynamic Extensions необходимые библиотеки. В нашем случае, как вы видите, мы выбрали поддержку IMAP и PostgreSQL:
extension=imap.so ; Добавляет поддержку для IMAP
extension=pgsql.so ; Добавляет поддержку для PostgreSql
extension=mysql.so ; Добавляет поддержку для MySql
extension=ldap.so ; Добавляет поддержку для LDAP
Шаг 2
Вы должны указать “php”, где ему искать включаемые файлы, когда они не имеют абсолютных путей, автоматическое прибавление содержимого файла “prepend.php3” к каждому файлу, и отключение magic quotes.
Редактируйте файл php.ini (vi /etc/httpd/php.ini) и добавьте следующие параметры:
magic_quotes_gpc = Off
auto_prepend_file = "/home/httpd/php/prepend.php3"
include_path = "/home/httpd/horde:/home/httpd/php"
Настройка Webmail IMP через ваш веб броузер
Существует несколько путей для настройки Webmail IMP, и один из них, который мы выбрали, новый механизм настройки называемый “setup.php3”, который дает людям возможность настраивать IMP через веб броузер.
Шаг 1
Из соображений безопасности, эта возможность отключена по умолчанию, но мы можем ее включить следующими командами:
[root@deep /]# cd /home/httpd/horde/
[root@deep horde]# sh ./install.sh
Your blank configuration files have been created, please go to
the configuration utitlity at :
your install path url/setup.php3
Шаг 2
После того как новый механизм настройки Webmail IMP включен, введите в вашем броузере следующий адрес: http://my-web-server/horde/setup.php.
ЗАМЕЧАНИЕ. <my-web-server> - адрес вашего веб сервера, а “/horde/” это каталог где находится файл “setup.php”.
Шаг 3
После того как вы закончите настраивать Webmail IMP, обязательно отключить “setup.php”, из соображений безопасности:
[root@deep /]# cd /home/httpd/horde/
[root@deep horde]# sh ./secure.sh
Это переведет все файлы и библиотеки в режим 0555 (чтение/исполнение для всех), а setup.php в режим 0000, который запретит любой доступ.
Шаг 4
На этой стадии, мы должны проверить работоспособность Webmail IMP. Чтобы сделать это, наберите в окне броузера следующий адрес: http://my-web- server/horde/. <my-web-server> - это адрес, где находится вашего веб сервера, а </horde> - это каталог в котором располагается программа Webmail IMP.
Установка PHPLib, которая требуется программе Horde из Webmail IMP
Для того, чтобы запустить Webmail IMP на вашем сервере, вам надо установить PHPLib (инструментальное средство разработки веб приложений для PHP разработчиков). Для инсталляции PHPLib выполните следующие шаги:
Пакеты
Домашняя страница:
Вы должны скачать: phplib-7.2b.tar.gz
[root@deep /]# cp phplib-7.2b.tar.gz /home/httpd/
[root@deep /]# cd /home/httpd/
[root@deep httpd]# tar xzpf phplib-7.2b.tar.gz
Шаг 1
Перейдите в DocumentRoot вашего веб сервера и создайте каталог “/home/httpd/php”:
[root@deep /]# cd /home/httpd/
[root@deep httpd]# mkdir php
Шаг 2
Копируйте содержимое каталога “php” дистрибутива PHPLib в каталог "php", который вы создали в вашем DocumentRoot:
[root@deep /]# cd /home/httpd/phplib-7.2b/php/
[root@deep php]# cp * /home/httpd/php/
[root@deep php]# cd /home/httpd/
[root@deep httpd]# rm -f phplib-7.2b.tar.gz
[root@deep httpd]# rm -rf phplib-7.2b/
ЗАМЕЧАНИЕ. Мы удалили tar архив и каталог “phplib-version”, после завершения копирования каталога “php”.
Webalizer
Краткий обзор
Веб сервер Apache регистрирует всю предписанную информацию в тестовый файл, который может быть просмотрен и проанализирован веб администратором. Этот файл также может быть обработан специальной программой, которая создает отчеты в виде графических представлений.
Как написанов файле README Webalizer:
Webalizer – это программа для анализа файлов регистраций веб сервера, которая создает отчеты в HTML формате для просмотра в броузере. Результаты представляются в виде таблиц и графиков, которые облегчают интерпретацию полученной информации. Программа наряду с ежегодной, ежемесячной, ежедневной и почасовой статистикой использования, отображает информацию об использовании сайта, URL, referrer, пользовательских агентах (броузерах) и странах (пользовательские агенты и referrer доступны только при использовании комбинированного формата файлов регистрации).
Эти инструкции предполагают.
Unix-совместимые команды.
Путь к исходным кодам “/var/tmp” (возможны другие варианты).
Инсталляция была проверена на Red Hat Linux 6.1 и 6.2.
Все шаги инсталляции осуществляются суперпользователем “root”.
Webalizer версии 1_30-04
Пакеты.
Домашняя страница Webalizer:
FTP сервер Webalizer:
Вы должны скачать: webalizer-1_30-04-src.tgz
Раскройте тарбол:
[root@deep /]# cp webalizer-version-src.tgz /var/tmp/
[root@deep /]# cd /var/tmp/
[root@deep tmp]# tar xzpf webalizer-version-src.tgz
Предварительные требования
Webalizer требует наличия графической библиотеки GD, которая требуется для генерации встроенных графиков Webalizer. Если это не так, то вы должны инсталлировать ее из вашего Red Hat Linux CD-ROM.
Для проверки наличия установленной библиотеки GD используйте следующую команду:
[root@deep /]# rpm -qi gd
package gd is not installed
Для инсталляции пакета GD на вашей Linux системе используйте команду:
[root@deep /]# mount /dev/cdrom /mnt/cdrom/ [root@deep /]# cd /mnt/cdrom/RedHat/RPMS/ [root@deep RPMS]# rpm -Uvh gd-version.i386.rpm gd ################################################## [root@deep RPMS]# rpm -Uvh gd-devel-version.i386.rpm gd-devel ################################################## [root@deep RPMS]# cd /; umount /mnt/cdrom/
Веб сервер должен быть уже установлен на вашей системе.
Замечание. Для большей информации о веб сервере Apache читайте соответствующую главу этой книги.
Запус Webalizer вручную в первый раз
Сейчас наступило время запустить программу генерирующую отчеты (html) и графики в выходном каталоге Webalizer так, чтобы мы могли увидеть их в окне броузера. Этот шаг требуется только при первом запуске после инсталляции, так как в будущем это будет делать cron.
Для запуска Webalizer вручную, используйте команду
[root@deep /]# /usr/bin/webalizer
Webalizer V1.30-04 (Linux 2.2.14) English
Using logfile /var/log/httpd/access_log
Creating output in /home/httpd/usage
Hostname for reports is 'deep.openna.com'
History file not found...
Previous run data not found...
Saving current run data... [03/06/2000 04:42:03]
Generating report for March 2000
Generating summary report
Saving history information...
81 records (2 ignored) in 0.31 seconds
На этой стадии, мы должны проверить, что Webalizer работает корректно. Чтобы сделать это наберите в окне броузера следующий адрес: http://my-web- server/usage/. Где <my-web-server> - это адрес вашего веб сервера, а </usage> - это каталог в котором располагаются отчеты Webalizer.
Запуск Webalizer автоматически при помощи cron
Последнее, что вы должны сделать, это автоматизировать задачу генерации отчетов программой Webalizer. Поместите соответствующий элемент в crontab пользователя root, чтобы сделать запуск Webalizer работой cron. Для этого вы должны редактировать ваш файл crontab и добавить в него строку, запускающую Webalizer каждые, например, 28 минут:
[root@deep /]# crontab -e
# Run Webalizer to update Apache Log files every 28 minutes.
28 * * * * /usr/bin/webalizer