Для этого в /etc/rc.local добавим следующее (желательно до строки, содержащей `echo '.'', дабы не сбить оригинальное форматирование при выводе):
if [ "X${thttpd_flags}" != X"NO" -a -x /usr/local/sbin/thttpd ]; then echo -n ' thttpd'; /usr/local/sbin/thttpd ${thttpd_flags} fi
и соответственно в /etc/rc.conf.local:
thttpd_flags="-C /etc/thttpd.conf"
Таким образом можно управлять загрузкой thttpd с помощью thttpd_flags.
Шаг #3. Конфигурационный файл thttpd
Я хочу схитрить и показать работающую конфигурацию (конечно только ради того, чтобы сберечь Ваше время ;). В данном случае я использую thttpd с /var/www и пользователем www (прошу прощения за каламбур). Таким образом никакого дополнительного дерева директорий и пользователя создавать не придется. Итак, /etc/thttpd.conf:
Параметр data_dir указывает на собственно место расположения HTML страничек -- это может быть и htdocs (как в Apache). Подробнее об опциях можно прочитать в thttpd(8).
Шаг #4. Запуск.
Для проверки можно запустить thttpd не превращая его в демона:
# /usr/local/sbin/thttpd -C /etc/thttpd.conf -D
Если все нормально, то ^C и запустить его нормально:
# /usr/local/sbin/thttpd -C /etc/thttpd.conf
Иcпользование CGI с thttpd
Все очень просто. Во-первых уберем параметр chroot из thttpd.conf, если у Вас конечно CGI программы не написаны на C и слинкованы статически. Во-вторых -- пишем где их искать. Запись
cgipat=/cgi-bin/*
означает, что можно запускать CGI программы из директории полный путь которой складывается из значений параметров dir и data_dir.
Положим, что dir=/var/www, а data_dir=htdocs, тогда поный путь к директории с CGI программами будет /var/www/htdocs/cgi-bin/.
QoS в отдельно взятом HTTP сервере
Первая буква в названии как раз и говорит о том, что (помимо tiny и turbo) этот сервер поддерживает технологию Quality of Service (здесь и далее будем называть это термином throttling).
Идея, положенная в реализацию throttling'а, заключается в дифференцировании скорости передачи объектов по их типу (т.е. типу файла). Таким образом, например для файлов изображений, можно установить максимальную скорость передачи в половину пропускной способности канала, а для HTML файлов, наоборот задать максимальную скорость передачи.
Детально это записывается так (пример для канала Fast Ethernet):
** 12500000 # full **.jpg|**.gif|**.png 3125000 # quarter
в файл throttle, который указывается в конфигурационном файле (/etc/thttpd.conf) параметром throttles:
throttles=/var/www/conf/throttles
В thttpd(8) это очень понятно расписано (раздел THROTTLING) и дан более развернутый пример.
Реализация виртуального хостинга в thttpd
Как сказано в thttpd(8), поддерживается две разновидности виртуального хостинга: ``IP based'' и ``name based''. Рассмотрим второй вариант.
Первый шаг -- создать записи в DNS:
www.server.com IN A x.y.z.k sub1.server.com IN CNAME www.server.com ...
Для тех кто тестирует, хватит записи и в /etc/hosts. Далее, нужно в директории, доступной thttpd (скажем /var/www) создать соответствующие директории для кажного sub-домена:
Ну и наконец дадим знать об этом thttpd. Это достигается добавлением в конфигурационный файл (/etc/thttpd.conf) параметра vhost.
Viola! Это все. Помните, что директории cgi-bin должны быть в каждой директории для виртуального хостинга.
Замечания
1. Пользователям Apache, привыкшим к директиве Indexes может быть не сразу ясно как запретить серверу выдавать листинги директорий. Все решается стандартными правами Unix. Пример (thttpd работает от www.www):
$ ls -dl /var/www/public_html/dir drwxr-xr-x 2 user daemon 512 Aug 4 22:35 /var/www/public_html/dir $ chmod 751 /var/www/public_html/dir drwxr-x--x 2 user daemon 512 Aug 4 22:35 /var/www/public_html/dir
2. Страницы со стандартными ответами (Error 404, например), можно заменить на свои. Для этого создается директория errors, в которую помещаются файлы errXXX.html (к примеру, err404.html).