В настоящее время Boa разрабатывается и тестируется на GNU/Linux/i386. Его код является открытым (в большей степени, чем код других серверов), поэтому он должен легко запускаться на большинстве современных Unix-подобных платформ. Последняя версия Boa работает на FreeBSD, SunOS 4.1.4, GNU/Linux-SPARC, и HP-UX 9.0. Он может не работать на версии ядра Pre-1.2.0 GNU/Linux, так как имеются трудности с реализацией mmap().
Установить Boa очень просто:
Запустите Boa. Если в двоичном файле boa Вы не указали правилный SERVER_ROOT, то Вы можете задать его в командной строке с помощью опции -c line with the -c option (командная строка имеет приоритет).
Пример: ./boa -c /usr/local/boa
В этот момент сервер должен работать и обслуживать запросы документов. Если это не так, проверьте log-файл, который даст ключ к разгадке проблемы.
Скопируйте двоичный файл в безопасное место и поместите вызов boa в системный стартовый скрипт. Используйте здесь ту же самую опцию -c, которую использовали при первоначальном тестировании.
Этот файл - единственный конфигурационный файл для Boa. The directives in this file are defined in the DIRECTIVES section.
MimeTypes <filename> определяет, что будет передавать Boa в поле Content-Type HTTP/1.0 или старше транзакций.
Корень по умолчанию определяется посредством #defined для SERVER_ROOT в файле defines.h и может быть переопределён в командной строке опцией -c. В папке server root должна храниться локальная копия конфигурационного файла boa.conf.
Пример: /usr/sbin/boa -c /etc/boa
Конфигурационный файл Boa разбирается парсером, сгенерированным утилитами lex/yacc или flex/bison. Если появляется сообщение об ошибке, то в нём будет представлен номер строки, содержащей ошибку, что облегчает поиск места ошибки. Синтаксис всех этих правил очень прост, они могут появляться в любом порядке. Где возможно, эти правила подражают аналогичным из NCSA httpd 1.3; я (Paul Phillips) не вижу причин для ничем не вызванных отличий.
Параметра "ServerRoot" в этом конфигурационном файле нет. Его можно компиллировать внутри сервера (см. defines.h) или задать в командной строке с помощью опции -c
Директивы, содержащиеся в файле boa.conf, большинство, но не все, являются обязательными.
Это порт, на котором работает Boa. Для http серверов, портом по умолчанию, является 80. Если это значение меньше 1024, то сервер должен запускаться с привилегиями root.
Интернет адрес, используемый в вызове bind(2). Если Вы раскомментируете
эту строчку, то вместо произвольного адреса (INADDR_ANY) будет использоваться
указанный адрес. Вы можете использовать только одну директиву "Listen".
Если Вы желаете использовать несколько IP адресов, то у Вас есть две возможности:
Имя пользователя, или его UID, под которым будет запускаться сервер. В случае Boa, сервер должен запускаться как root.
Имя группы, или GID, под которым будет запускаться сервер. В случае Boa, сервер должен запускаться как root.
email адрес, по которому будут отсылаться письма с сообщениями о проблемах на сервере. Примечание: в настоящее время не используется.
Место расположения файла error log. Если это имя не начинается с '/', то оно рассматривается относительно server root. Задайте его в виде /dev/null если Вы не хотите вести протокол ошибок.
Место расположения файла access log. Если это имя не начинается с '/', то оно рассматривается относительно server root. Закомментируйте его, или задайте его в виде /dev/null если Вы не хотите вести протокол доступа.
Это логический переключатель, который не имеет никаких параметров. Закомментируйте, если желаете запретить выдачу об ошибках CGI скриптов. Единственное, что делает этот переключатель, он разрешает или запрещает логирование, когда в качестве дочернего процесса запускается CGI программа.
Местоположение файра регистрации ошибок CGI. Если задан, то он будет являться тем файлом, куда будет перенаправлен stderr CGI скриптов. В противном случае, запись в stderr будет отправлена в мусорную корзину.
Имя сервера, которое будет посылаться клиенту, если оно отличается от того, что возвращает gethostname.
Это логический переключатель, который не имеет никаких параметров. Закомментируйте его для запрета виртуальных хостов. Given DocumentRoot /var/www, requests on interface `A' or IP `IP-A' become /var/www/IP-A. Example: http://localhost/ becomes /var/www/127.0.0.1
Корневой каталог для документов HTML. Если не начинается с '/', то рассматривается относительно server root .
Имя каталога, которое добавляется к имени домашнего каталога пользователя, если получен запрос от пользователя.
Имя файла, который будет использоваться в качестве предварительно записанного HTML индекса каталога. Пожалуйста, создайте и используйте этот файл! Создание этого файла "на лету" может замедлить работу сервера.
Имя программы, которая будет использоваться для генерирования индекса каталога "на лету". Эта программа должна принимать один или два аргумента командной строки. Первый задаёт абсолютный адрес каталога, подлежащего индексированию, а второй (не обязательный) - должен быть "заголовком" документа. Закомментируйте, если не желаете создавать индексы "на лету". Если <полный путь к программе> не начинается с '/', то он рассматривается относительно server root.
DirectoryCache: Если индекс данного каталога не существует, а DirectoryMaker был закомментирован, то тогда для построения индекса каталога можно использовать сам Boa. Предупреждаю: построенный индекс предельно минималистичен и может стать причиной задержек, если используется медленный диск. Замечание: DirectoryCache должен быть доступен на запись тому же пользователю/группе, под которой был запущен Boa.
Количество запросов KeepAlive, разрешённое для одного соединения. Закоментируйте, или задайте нулевое значение, для запрета обработки запросов KeepAlive.
Количество секунд ожидания до того, как соединение keepalive будет считаться в состоянии таймаута.
Место расположения файла mime.types. Если не начинается с '/', то оно рассматривается относительно server root. Закомментируйте, что бы избежать загрузки mime.types (Лучше использовать AddType!).
Тип MIME, используемый, если невозможно определить MIME тип по расширению файла.
Связывает MIME-тип с расширением или расширениями.
Redirect, Alias, и ScriptAlias all имеют одну и ту же семантику - они находят соответствие в начале запроса и выполняют действие. Используется Redirect для переадресации запроса на другой сервер, Alias - на том же самом сервере и ScriptAlias для использования каталогов, содержащих исполняемые скрипты.
Позволяет Вам сообщить клиенту о том, что запрошенный документ существует в Вашем пространстве имён, но его уже нет на сервере. Это позволяет сообщить клиенту, где искать перемещённый документ.
Делает один путь псевдонимом другого. Разумеется, символические ссылки в файловой системе тоже поддерживаются.
Назначает виртуальный путь на реальный каталог, содержащий сервисные скрипты.
Boa спроектирован для использования существующих систем безопасности файловых систем. В файле boa.conf, директивы USER и GROUP определяют кого считать запустившим Boa, если его запустил root. По умолчанию, это пара nobody/nogroup. Это разрешает совсем немного гибкости. Например, если Вы желаете запретить доступ ко всем посторонним каталогам или файлам, просто сделайте их недоступными для nobody/nogroup. Если пользователь, под которым работает Boa, называется "boa" и его группа - "boa", входит в группу "web-stuff", то файлы/каталоги доступные пользователям группы "web-stuff", будут так же доступны Boa.
В феврале 2000 hoo-rah, советник из CERT CA-2000-02 немного поработал с Boa. Начиная с версии 0.94.4, правила эскейпинга в Boa Стали немного яснее. Но они не были такими уж плохими ранее. Примеры CGI программ были обновлены, для того, что бы показать, что здесь необходимы усилия. Если Вы пишите, сопровождаете, или используете CGI программы под Boa (или любым другим сервером), это представляет ценность для Вас, пока Вы читаете и понимаете эти советы. Однако, реальная проблема ужимается до браузеров, а дизайнеры веб-страниц навешивают всё новые рюшечки на содержимое и безопасность. Браузеры, лидирующие по продажам, предполагают (некорректно), что все веб-страницы заслуживают доверия.