Знакомьтесь,
веб-сервер TUX!
Автор: (C) Vinayak Hegde
Перевод: (C) Игорь Яровинский
Если Вы рассчитываете найти в этой статье информацию о пингвине Туксе (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 использовались прежде всего для обслуживания страниц со статическим содержимым, оставляя генерирование и обслуживание динамически создаваемых страниц таким веб-серверам как Apache. В новых версиях TUX появилась возможность обслуживать страницы с динамическим содержимым. Специально написанные модули для этого веб-сервера могут создавать упорядоченные "объекты" используя кеш. На запрос динамической страницы TUX-модуль отправляет динамически сгенерированную информацию и заранее созданные "объекты", которые уже находятся в кеше. Таким образом, большинство запросов связанных с обычным копированием по сети могут быть эффективно обработаны, если используется TUX-веб-сервер.
Кроме этого в последних версиях TUX появилась возможность создания виртуальных хостов, количество которых может быть ограничено только размером дискового пространства и объемом оперативной памяти.
Теперь, когда мы знаем, что можно сделать используя TUX, можно переходить к его установке и настройке. Вся последующая информация была проверена на Red Hat 7.2 с использованием TUX-2.1.0-2.
Проверьте, установлен ли у Вас TUX.
Для этого в командной строке наберите:
# rpm -q tux
В результате Вы получите одно из сообщений:
Если TUX не установлен, то это очень просто исправить:
# rpm -ivh tux-2.1.0-2.i386.rpm
# 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
Создайте каталог /var/www/html (или другой каталог по Вашему выбору) и сделайте его корневым каталогом для TUX, изменив значение DOCDIR в /etc/sysconfig/tux . Кроме этого можно задать каталог, где будут содержатся CGI-сценарии, изменив значение для CGIROOT. Создайте файл index.html в корневом каталоге сервера (/var/www/html ) и переходите к шагу 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) только что установленного веб-сервера!
По умолчанию создание логов отключено. Для ведения лог-файлов выполните следующие команды:
# 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 лог-файлы.
Как нам уже известно, TUX способен "увеличить скорость" работы клиентов в Internet. Используя gzip-сжатие можно уменьшить время загрузки информации, но при этом и клиент должен поддерживать возможность работы с gzip-сжатыми данными. По умолчанию gzip-сжатие в TUX отключено, для его включения необходимо выполнить следующую команду:
# echo 1 > /proc/sys/net/tux/compression
Для включения gzip-сжатия при запуске, добавьте в файл /etc/sysctl.conf строку:
net.tux.compression=1
Сжатые gzip-файлы с расширением .gz должны находиться в том же каталоге, что и несжатые файлы веб-страниц, которые вы хотите использовать.
Мы еще не завершили настройку TUX. Есть еще несколько интересных (полезных) вещей, которые Вы можете использовать (некоторые из них доступны только в RHCA v2.2)
Существует еще очень много параметров, используя которые Вы можете увеличить производительность 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
Вы можете останавливать/перезапускать 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