| ||
Веб-сервер в миниатюреX-Stranger Личный веб-сервер. Сегодня такой есть почти у каждого пользователя Linux. Кто-то с его помощью и в самом деле предоставляет доступ к информации в сети или занимается разработкой программ на PHP или CGI. А кому-то сервер требуется лишь для того, чтобы читать в браузере программную документацию да время от времени "играть в веб-мастера". Если вы решили, что Apache — слишком сильно для ваших скромных личных потребностей, то эта статья для вас. Нам нужен простой доступ к статическим веб-страницам и файлам и нет смысла "гонять в бэкграунде" здоровенного Apach'а. Результатом этих рассуждений стало прекращение эксплуатации собственного веб-сервера Apache с его заменой на микро-сервер, запускаемый только тогда, когда поступают запросы. Это экономит определенный объем оперативной памяти и дискового пространства. Новая программа, которая хотя и выглядит, как игрушка, но тем не менее работает и исправно выполняет возложенные на нее задачи.
Что же нам нужно от собственного веб-сервера? Две простые функции, не имеющие отношения к PHP или CGI:
Есть важный момент: совершенно необходимо, чтобы сервер хотя бы минимально поддерживал индексирование каталогов. То есть, если URL завершается именем каталога, то необходимо перенаправление в эту директорию (добавление завершающей косой черты) с последующей обработкой находящегося там файла index.html. Такое перенаправление необходимо для правильной работы относительных ссылок. Хотя индексирование можно выполнить с помощью скриптов, автоматически запускаемых планировщиком (cronjobs), предпочтительнее все же простые встроенные решения. А вот сами по себе превосходные дополнительные возможности индексирования, имеющиеся в Apache, нам не нужны. Нужно ли нам богатство дополнительных настроек? Не нужно. Все проблемы решаются с помощью символических ссылок на ресурсы за пределами корневой директории сервера. Нет нужды в директиве "Alias" (псевдоним) или в других заковыристых опциях. Только указание корневой папки. Ну, может быть, нужна возможность указать порт, на котором сервер будет слушать. Что выбрать: независимый сервер или сервер, "завернутый" в сервис TCP? Остановимся на варианте с TCP wrapper'ом. Исполнимый файл сервера вызывается только тогда, когда поступает запрос. Никакой возни со скриптами инициализации. Несложная строка в /etc/inetd.conf'е — и готово.
Производительность такой конфигурации, как говорится, "не очень". На самом деле, если вы планируете нечто большое, чем такие спонтанные обращения, то лучше запустить самостоятельный сервис http, работающий постоянно. На http://www.acme.com/software/micro_httpd/ есть веб-сервер под названием micro_httpd. Примерно 150 строк на простом C делают в точности то, что нам нужно. Можно запускать через сервис TCP, никакого CGI, никакого PHP, просто обслуживание запросов на передачу файлов и возможности индексирования. В исходный код можно добавить несколько дополнительных mime-типов — и все заработает прямо "из коробки".
Итак, для установки получите исходники micro_http и распакуйте их. Необходимая для установки последовательность команд такова:
В /usr/local/sbin появится двоичный файл micro_httpd. Теперь из-под root'a отредактируйте /etc/initd.conf в своем любимом редакторе. Добавьте в него строку следующего вида: Проследите, чтобы /var/httpd/ wwwroot/ в примере выше был заменен правильным путем к новой корневой директории документов веб.
А wwwrun замените именем любого реально существующего в вашей системе пользователя, для пущей безопасности лучше выбрать "побесправнее".
Замечание: сервис TCP wrapper записывает журнал соединений в /var/log/messages. Но не следует ожидать от него подробного отчета в стиле Apache. Там будут всего лишь простые записи вида: Но, опираясь на знание протокола http и с учетом наличия исходного кода, вполне возможно расширить возможности ведения журнала. Оставляем это в качестве самостоятельного упражнения для пытливого читателя. Подведем итоги: любой веб-сервер, который можно запускать из inetd, настраивается схожим образом. Поищите такие серверы на Freshmeat. Заключение. Если ваши потребности не выходят за рамки описанных выше, то замена Apach'а на "минималистский" вариант займет всего несколько минут. Все нормально работает, но конструкция, очевидно, не выдержит слишком большого числа запросов. Впрочем, для простого личного веб-сервера с небольшим трафиком ее должно хватить. Замечание. Есть еще Tux, миниатюрный веб-сервер в виде модуля ядра Linux. Он работает похожим на micro_httpd образом и даже может перенаправлять запросы, с которыми не может справиться самостоятельно (например, обработку скриптов CGI), на более "серьезный" веб-сервер. Однако, micro_httpd и Tux занимают разные ниши. Tux предназначен для загруженных веб-сайтов, предоставляющих доступ к большому числу простых файлов (например, с картинками), в этом случае, чтобы избежать перегрузки системы, требуется сделать расход ресурсов на каждый запрос минимальным. А micro_httpd, работающий через inetd, предназначен для сайтов с небольшой нагрузкой, где потребность в дополнительных ресурсах перекрывается тем обстоятельством, что при отсутствии запросов ресурсов не требуется вовсе. И micro httpd, и Tux, конечно, вместе занимают еще одну нишу, а именно — нишу маленьких симпатичных утилит, поиграть с которыми одно удовольствие. Или, как говорит редактор LG Дан Вайлдер, "маленькие инструменты, хорошо заточенные под одну задачу, в лучших традициях инструментария UNIX". Если хотите больше узнать про Tux, то смотрите Руководство по Tux 2.1 от Red Hat (http://www. redhat.com/docs/manuals/tux/TUX-2.1-Manual/). Статья подготовлена при помощи заметок Матиаса Арндта. Источник: http://www.nestor.minsk.by/kg
| ||
Copyright © "Internet Zone", http://www.izcity.com/, info@izcity.com |