GoServe
GoServe HTTP/Gopher server IBM EWS |
GoServe -- это многоцелевой сервер для OS/2, поддерживающий протоколы HTTP и Gopher. Сам сервер разработал в рамках программы IBM EWS (IBM Employer Written Software), к которой я отношусь с определенным пиететом, известный Mike Cowlishaw -- создатель языков REXX, Object REXX и NetREXX. Целью создания GoServe было предоставить пользователям OS/2 возможность самим разворачивать на своих компьютерах сервера Internet, без погружения в тонкости реализации протоколов передачи данных. Сама по себе процедура установки сервера является относительно быстрой и легкой.
Если протокол TCP/IP сам по себе уже настроен, GoServe может быть запущен в работу за несколько минут. Архив с GoServe включает в себя как саму программу, так и инструкции по установке и запуску вместе с рабочими примерами для WWW и для Gopher.
Принципы работы сервера
GoServe, в отличие от других известных HTTP-серверов, является двольно оригинальной программой. Когда клиент запрашивает соединение, то программа читает запрос клиента и передает его в неизменённом виде фильтру, являющемуся обычной программой на языке REXX, который обрабатывает запрос, совершает какие-либо действия и возвращает результат своей работы программе GoServe (это может быть специальная команда на отправку файла или сообщение об ошибке). Сервер передает, в свою очередь, всё что надо клиенту и закрывает соединение. Иными словами, GoServe служит как бы "посредником" между фильтром и клиентом. Использование фильтров на языке REXX придает серверу исключительную гибкость в работе -- вы можете использовать как сложные фильтры с большим количеством возможностей, так и простые фильтры "на одно действие", если вам требуется высокая скорость. В комплект поставки GoServe входит пример такого фильтра, возможностей которого зачастую вполне достаточно для большинства непритязательных администраторов.На каждый запрос создается отдельный поток OS/2 (thread) для установления соединения, обработки запроса фильтром и ответа. GoServe берет на себя всю работу по формированию такого потока и управлению TCP/IP соединением, поэтому вам остается только модифицировать при необходимости фильтр (который, зачастую, никто попросту не изменяет) и наполнять каталог данных информацией (документами, графикой и т.д.).
GoServe разработан для эффективной работы даже на дешёвом оборудовании. Однако настройки по умолчанию предназначены скорее для большей безопасности, чем для высокой производительности. Для увеличения производительности и пропускной способности вам, скорее всего, потребуется включить кэширование команды FAIL, уменьшить значение Connection maintenance и включить отложенный аудит (далее это будет рассмотрено более подробно). Кроме того, GoServe будет работать быстрее, если запускать его минимизированным.
Установка WWW-сервера
Для работы вам потребуется последняя версия 2.52 пакета GoServe. Создайте на своем жестком диске каталог (например, C:\GoServe) и распакуйте туда следующие файлы:gofilter.80 moveaud.cmd goserve.exeВ комплекте поставки есть и другие файлы, но я остановлюсь на их назначении позднее, после того, как мы запустим GoServe в работу.
Теперь создайте каталог, в котором будут храниться ваши HTML-документы, картинки и т.д. (например, C:\WWW). Вы можете взять за основу файлы из архива gohttp.zip. Стартовой страницей по умолчанию считается файл INDEX.HTM. Под стартовой страницей понимается файл в каталоге данных, который будет послан клиенту, если само имя файла (или ресурса -- так точнее) не указано. Например, если клиент ввёл в окне своего браузера http://www.yourdomain.ru, то ему будет послан файл C:\WWW\index.htm.
Запустим GoServe командой GOSERVE HTTP, выберем меню Options, перейдем на закладку DataDir, введем C:\WWW и нажмем кнопку Apply (если имя каталога с данными указано неверно, то оно будет выделено красным цветом). Теперь перейдем на закладку Filter. Здесь надо указать имя файла программы-фильтра (в первый раз это будет GOFILTER.80). Эта программа должна находиться в том же каталоге, что и GOSERVE.EXE, и иметь расширение, соответствующее номеру порта, на котором сервер "слушает" (для WWW это, как правило, 80-й порт, а для Gopher -- 70-й).
Вот, в принципе, и всё: GoServe готов к работе! Вы теперь можете сообщить адрес своего компьютера друзьям (или недругам) и погрузиться в изучение HTML для создания красивых документов.
Настройка GoServe
Если вы выберете меню Options, то откроется диалоговое окно настроек GoServe. В этом окне есть несколько страниц (закладок):- Response показывает статистику по времени отклика, и вы можете изменить график и цвета этой статистики.
- На странице General вы можете немного изменить внешний вид окна программы, включить или выключить звуковое
сопровождение каждого запроса.
- Параметр Show menu bar отвечает за показ полосы меню GoServe. Если его выключить, то к меню можно будет добраться, щёлкнув правой кнопкой мыши в окне программы.
- При включенном параметре Surface on startup окно GoServe будет автоматически минимизироваться при запуске. Я рекомендую иметь этот пункт включенным, так как, будучи минимизированным, GoServe работает несколько быстрее.
- Включенный параметр Sounds on connections заставит GoServe "блипать" динамиком при каждом запросе клиента. Из своего опыта скажу, что звук лучше выключить. В первое время забавно слышать "блип", когда к серверу кто-то обращается, однако по прошествии времени, если ваш сервер довольно часто посещается, жизнь в офисе может стать невыносимой для окружающих... Да и на скорости работы программы это отражается не в лучшую сторону.
- А вот параметр File command cache рекомендую как раз включить (для каждого фильтра вопрос кэширования надо, вообще-то говоря, обсуждать отдельно, но для фильтра, поставляемого с GoServe включить можно), так как он отвечает за кэширование некоторых ответов сервера. Далее мы более подробно обсудим его поведение.
- На закладке Audit вы можете указать, что и как GoServe будет записывать в лог-файл GOAUDIT.80, расположенный в том же каталоге, что и сама программа. Я не буду подробно расписывать назначение каждого пункта -- вы можете смело включать их все. Если же все пункты выключены, то лог-файл вестись не будет. Сразу оговорюсь: формат лог-файла GOAUDIT.80 абсолютно не похож на формат того же Apache и довольно мутен для понимания -- в документации есть отдельная глава, посвященная его разбору. У меня, например, аудит GoServe отключен совсем, а логи ведутся фильтром. Если же вы все-таки используете аудит GoServe, то не забудьте включить параметр Lazy audit для ускорения работы.
- А вот на страничке Limits я бы хотел
разобрать все параметры подробнее, потому что они довольно важны для
производительности и безопасности сервера.
- Maximum at once -- указывает, сколько одновременных соединений (по умолчанию 20) будет поддерживать сервер. Если максимум достигнут, то последующие соединения будут отвергаться. Учтите, что один клиентский запрос может породить несколько одновременных соединений -- это зависит от настроек браузера клиента.
- Show warning at указывает процент одновременных соединений относительно вышеизложенного, после которого в окне появится красная полоска. Это своего рода предупреждение типа "за мной сказали не занимать..."
- Open files per client указывает максимальное количество файлов, которые могут быть открыты в фильтре при обработке клиентского запроса (по умолчанию 5 файлов). В случае простых фильтров значение можно не изменять, однако для сложных, комплексных фильтров это значение, скорее всего, придется увеличить.
- End client after inactive -- это период "неактивности" клиента в секундах. Соединение с клиентом будет закрыто, если в течение этого времени никаких переданных или принятых от клиента данных не было. По умолчанию это 60 секунд, однако вы можете увеличить или уменьшить это значение в соответствии со своим опытом. Не исключено, что если среди посетителей вашего сервера есть много дайлапщиков, то это значение можно и увеличить. Однако не стоит забывать, что увеличение этого времени может привести к быстрому расходу позволенных одновременных соединений.
- End client after total -- это период времени, после которого соединение с клиентом разрывается независимо от того, активен ли клиент, или нет, передаются ли ему данные, или нет. Это значение не может быть меньше периода "неактивности" и, по умолчанию, составляет 1200 секунд. Простое правило для этого значения: это число секунд, равное или превышающее время для передачи клиенту самого большого файла с вашего сервера в килобайтах (при условии, что средняя скорость передачи равна 1 Кб/с). В случае медленного канала вы можете увеличить это значение в два или четыре раза.
- Connection maintain -- это "период ожидания" в секундах. Определяет время, в течение которого GoServe будет ожидать нового запроса после ответа на запрос с заголовком Connection: keep-alive. Заметьте, что разрыв такого соединения считается нормальным поведением и не регистрируется как ошибочное превышение лимита. По умолчанию этот параметр равен нулю, что означает, что GoServe никогда не будет обрабатывать больше одного запроса на соединение. Однако вам, скорее всего, придется увеличить это значение. Рекомендуется указать 10-15 секунд для обработки запросов к страницам, содержащим графику или 60-120 секунд для запросов к многостраничным документам.
- Wait for TCP/IP start указывает время, в течение которого GoServe будет при запуске ждать пока не поднимется стек TCP/IP. Этот параметр (по умолчанию 600 секунд) имеет смысловое значение в случае, если ваш сервер имеет дайлап-доступ в Интернет.
- Header size указывает максимальный размер (в тысячах байт) заголовка запроса от клиента. Если размер заголовка превысит это значение, то транзакция будет отвергнута. По умолчанию максимальный размер заголовка равен 10 тыс. байт.
- Body data size определяет максимальный размер (в тысячах байт) клиентского запроса. Если размер запроса превышает это значение, то транзакция будет отвергнута. По умолчанию этот параметр равен 50 тыс. байт.
Параметры запуска GoServe
Все свои настройки GoServe сохраняет в файле GOSERVE.INI, который располагается в том же каталоге, что и сама программа. При желании вы можете изменить их в командной строке запуска. GoServe принимает следующие параметры:- HTTP -- указывает GoServe стартовать в режиме HTTP-сервера.
- GOPHER -- указывает GoServe стартовать в режиме Gopher-сервера.
- PORT number -- указывает GoServe "слушать" указанный порт.
Это может быть полезным при отладке или виртуальном хостинге. Например,
команда
GOSERVE HTTP PORT 8080 запустит GoServe в режиме HTTP-сервера, который будет "слушать" порт с номером 8080 вместо стандартного 80-го порта. - FILTER filtername -- указывает GoServe использовать
программу filtername вместо указанной в настройках. Например,
команда
GOSERVE HTTP FILTER SRELITE.80 приведет к тому, что GoServe будет использовать фильтр SRELITE.80 вместо указанного в настройках. Учтите, что полного имени файла использовать нельзя -- фильтр должен находиться в том же каталоге, что и GOSERVE.EXE. - DATADIR directory_name -- указывает GoServe использовать
именно этот каталог данных. В directory_name вы можете не
указывать завершающий слэш ("/") -- он будет добавлен автоматически.
Пример:
GOSERVE HTTP DATADIR C:\OTHER_WWW - QUIETFAIL -- указывает GoServe, что при ошибке в фильтре GoServe должен "тихо скончаться", не выводя при этом никаких диагностических диалоговых окон. Этот параметр очень полезен, когда вы запустите свой сервер в бесперебойную работу.
Применение параметров командной строки очень полезно при отладке, запуске нескольких экземпляров программы для различных нужд и др.
Другие фильтры для GoServe
Программ-фильтров для GoServe разработано довольно много. Наиболее мощным в настоящее время является SRE-http Дэниела Хеллерштейна -- один только размер архива с последней версией превышает полтора мегабайта! Я настоятельно рекомендую, после того как вы освоите GoServe, установить этот пакет и пользоваться им. Он представляет из себя полноценный HTTP/1.1 сервер с огромным количеством возможностей, во многом не уступает, а даже превосходит другие известные HTTP-сервера для OS/2.Если вам не требуется такой "навороченный" сервер, вы не занимаетесь виртуальным хостингом, требования к управлению доступом у вас довольно умеренные, многими нововведениями HTTP/1.1 вы не пользуетесь, а вас интересует только скорость, то обратите внимание на фильтр того же автора SRE-Lite.
Timur Kazimirov
Интересные ссылки:
Комментариев к странице: 0 | Добавить комментарий
Домой | Проект ядро Core/2 | Проект OS/4 Download | Новости | Гостевая книга | Подробно обо всем | Нужные программы | Проекты | OS/2 FAQ | Всячина | За и Против | Металлолом | #OS2Russian | RDM/2 | Весёлые картинки | Наша галерея | Доска объявлений | Карта сайта | ПОИСК | ФОРУМ