Знакомьтесь, веб-сервер TUX!
Автор: (C) Vinayak Hegde
Перевод: (C) Игорь Яровинский


Знакомьтесь, веб-сервер TUX!

Если Вы рассчитываете найти в этой статье информацию о пингвине Туксе (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)

Существует еще очень много параметров, используя которые Вы можете увеличить производительность 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 позволяет улучшить производительность работы веб-сервера. Он очень удобен и прост в конфигурировании, а также имеет множество интересных особенностей.

Надеюсь, что вам понравилась эта статья.

Удачного хака!!!

Ссылки


Copyright ї 2002, Vinayak Hegde. Copying license http://www.linuxgazette.com/copying.html
Published in Issue 85 of Linux Gazette, December 2002


Команда переводчиков:
Владимир Меренков, Александр Михайлов, Иван Песин, Сергей Скороходов, Александр Саввин, Роман Шумихин, Александр Куприн, Андрей Киселев, Игорь Яровинский

Со всеми предложениями, идеями и комментариями обращайтесь к Александру Куприну ([email protected]). Убедительная просьба: указывайте сразу, не возражаете ли Вы против публикации Ваших отзывов в рассылке.

Сайт рассылки: http://gazette.linux.ru.net
Эту статью можно взять здесь: http://gazette.linux.ru.net/lg85/vinayak.html