Vinayak Hegde, , Linux Gazette
Если Вы рассчитываете найти в этой статье информацию о пингвине Туксе (Tux), который стал талисманом ОС Linux, то мне придется Вас разочаровать. Но не расстраивайтесь: эта статья расскажет Вам о веб-сервере TUX.
Слово TUX происходит от Threaded linUX webserver. Он был создан корпорацией Red Hat и базируется на ядрах серии 2.4, являясь подсистемой, которая работает на уровне ядра. TUX распространяется по лицензии GNU GPL, а это значит что Вы в праве модифицировать эту программу согласно своим требованиям. Один из способов приспособить её к нашим потребностям - это написать TUX-модули, которые могут быть как модулями пользовательского уровня, так и уровня ядра. Основной целью создания TUX было создание мощного веб-сервера на базе Linux - операционной системы, которую все чаще и чаще используют в качестве платформы для веб-серверов.
TUX по сравнению с Apache имеет несколько ограничений и в тоже время является полным HTTP/1.1 сервером, который поддерживает постоянное ведение логов, конвейерную обработку (pipelining), выполнение CGI, виртуальные сервера, различные модули и многое другое.
Что TUX может сделать для меня?
Первые версии TUX использовались прежде всего для обслуживания страниц со статическим содержимым, оставляя генерирование и обслуживание динамически создаваемых страниц таким веб-серверам как Apache. В новых версиях TUX появилась возможность обслуживать страницы с динамическим содержимым. Специально написанные модули для этого веб-сервера могут создавать упорядоченные "объекты" используя кеш. На запрос динамической страницы TUX-модуль отправляет динамически сгенерированную информацию и заранее созданные "объекты", которые уже находятся в кеше. Таким образом, большинство запросов связанных с обычным копированием по сети могут быть эффективно обработаны, если используется TUX-веб-сервер.
Кроме этого в последних версиях TUX появилась возможность создания виртуальных хостов, количество которых может быть ограничено только размером дискового пространства и объемом оперативной памяти.
Итак, приступим к изучению TUX
Теперь, когда мы знаем, что можно сделать используя TUX, можно переходить к его установке и настройке. Вся последующая информация была проверена на Red Hat 7.2 с использованием TUX-2.1.0-2.
Шаг 1: установка
Проверьте, установлен ли у Вас TUX.
Для этого в командной строке наберите:
# rpm -q tux
В результате Вы получите одно из сообщений:
1. tux-2.1.0-2 (TUX установлен, и показана версия программы)
2. пакет tux не установлен (значит нужно устанавливать)
(В RedHat8.0 включена версия tux-2.2.7-3. В этой и последующих версиях меньше недостатков и больше опций для конфигурирования, некоторые из которых рассматриваются далее - прим. перев.)
Если TUX не установлен, то это очень просто исправить:
1. Установка из RPM
Зайдите в каталог, где Вы храните RPM-файлы и выполните команду
# rpm -ivh tux-2.1.0-2.i386.rpm
2. Установка из исходников
(Установка из исходников займет намного больше времени - прим. перев.)
Для начала необходимо пропатчить и откомпилировать ядро:
# patch -p0 < tux2-full-2.4.10
# make oldconfig (подключите TUX, перекомпилируйте и установите ядро)
Установите необходимые утилиты:
# tar xzvf tux-2.1.0.tar.gz
# cd tux-2.0.25
# make
# make install
Шаг 2: Настройка
Создайте каталог /var/www/html (или другой каталог по Вашему выбору) и сделайте его корневым каталогом для TUX, изменив значение DOCDIR в /etc/sysconfig/tux . Кроме этого можно задать каталог, где будут содержатся CGI-сценарии, изменив значение для CGIROOT. Создайте файл index.html в корневом каталоге сервера (/var/www/html ) и переходите к шагу 3.
Шаг 3: Запуск
TUX можно запустить, используя команду (для этого нужно иметь права root):
# service tux start (на RedHat подобных системах)
# ./tux.init start (на non-RedHat системах)
# lsmod
Module size Used by
tux 75568 0
....
....
Теперь запустите свой любимый браузер и зайдите на localhost
# lynx localhost
Если все настройки верны, то вы зайдете на первую страницу (index.html) только что установленного веб-сервера!
Шаг 4: Ведение лог-файлов
По умолчанию создание логов отключено. Для ведения лог-файлов выполните следующие команды:
# echo 1 > /proc/sys/net/tux/logging
# echo 1 > /proc/sys/net/tux/referer_logging
# cat /proc/sys/net/tux/logfile
Для каждого подключения TUX записывает в файл /var/log/tux (используется по умолчанию) адрес, дату, время и размер выкаченной информации. Файл /var/log/tux хранится в бинарном формате. В таком виде он получается на 50% меньше аналогичных ASCII-файлов. Для просмотра логов нужно выполнить команду:
# tux2w3c /var/log/tux
127.0.0.1 - - Wed Nov 20 00:22:24 2002 "GET /manual/sections.html HTTP/1.1" - 5523 200
127.0.0.1 - - Thu Nov 21 01:36:55 2002 "GET / HTTP/1.0" - 2890 200
127.0.0.1 - - Thu Nov 21 01:37:20 2002 "GET /manual/index.html HTTP/1.0" - 5557 200
127.0.0.1 - - Thu Nov 21 01:37:24 2002 "GET /manual/mod/index-bytype.html HTTP/1.0" - 6186 200
Программа tux2w3c конвертирует бинарные лог-файлы в стандартные W3C HTTPD лог-файлы.
Шаг 5: Включение gzip-сжатия
Как нам уже известно, TUX способен "увеличить скорость" работы клиентов в Internet. Используя gzip-сжатие можно уменьшить время загрузки информации, но при этом и клиент должен поддерживать возможность работы с gzip-сжатыми данными. По умолчанию gzip-сжатие в TUX отключено, для его включения необходимо выполнить следующую команду:
# echo 1 > /proc/sys/net/tux/compression
Для включения gzip-сжатия при запуске, добавьте в файл /etc/sysctl.conf строку:
net.tux.compression=1
Сжатые gzip-файлы с расширением .gz должны находиться в том же каталоге, что и несжатые файлы веб-страниц, которые вы хотите использовать.
Шаг 6: Дополнительная настройка TUX
Мы еще не завершили настройку TUX. Есть еще несколько интересных (полезных) вещей, которые Вы можете использовать (некоторые из них доступны только в RHCA v2.2)
* application_protocol
Если установлен в 1, то включает RHCA FTP сервер. По умолчанию установлен в 1.
* virtual_server
Если установлен в 1, то запускает на машине виртуальный хостинг. Корневой каталог для виртуального хоста создается в $DOCROOT/ (virtual docroots).
* http_dir_indexing
Если установлен в 1, то при отсутствии index.html-файла будет отображено содержимое данного каталога.
Существует еще очень много параметров, используя которые Вы можете увеличить производительность TUX. Поэкспериментируйте с ними, и вы сможете сконфигурировать веб-сервер соответствующий Вашим требованиям.
Шаг 7: Конфигурирование Apache для работы с TUX
В нашей системе TUX будет использоваться как внешний веб-сервер на 80-том порту. Apache будет использоваться как внутренний веб-сервер на порту 8080 для обработки запросов, которые TUX не понимает. Для этого необходимо сделать некоторые поправки в файле конфигурации Apache (httpd.conf):
замените строку
Port 80
строкой
Port 8080 (порт, который слушает Apache)
Также, для предотвращения обхода TUX и прямого доступа к Apache необходимо сделать следующие изменения. Этого требует безопасность системы:
замените строку
BindAddress *
строкой
BindAddress 127.0.0.1 (loopback address)
А теперь перезапустите TUX, выполнив:
# service httpd restart
Шаг 8: Отладка и запуск TUX
Вы можете останавливать/перезапускать TUX, используя следующие команды:
# service tux stop (на RedHat подобных системах)
или
# ./tux-init stop (на non-RedHat системах)
# service tux restart
или
# ./tux-init restart
В целях отладки можно использовать скрипт gettuxconfig, который находится в /usr/share/doc/tux-version/ . Если Вы используете SMP-систему, то можете проверить правильно ли настроены все сетевые интерфейсы используя скрипт checkbindings. Этот скрипт также находится в каталоге /usr/share/doc/tux-version/ .
Заключение
Как мы видим [Ну, этого из самой статьи не видно, но уверен, если Вы попробуете настроить и использовать TUX, то это станет более очевидным. Прим.ред.], TUX позволяет улучшить производительность работы веб-сервера. Он очень удобен и прост в конфигурировании, а также имеет множество интересных особенностей.
Удачного хака!!!
Ссылки
* Последние версии TUX