Веб-сервер bozohttpd + CGI (shell scripts) на NetBSD 5.x
Калегин Сергей Николаевич
(май 2011 года)
magnus@pochta.ru
С недавних пор я перевёл все свои сервера на операционные системы BSD и хочу рассказать об их преимуществах по сравнению с другими ОС, а также поделиться опытом их установки и настройки.
Итак. Сразу хотелось бы предупредить вопросы, связанные с выбором этих систем. Почему я выбрал именно BSD (преимущественно OpenBSD и NetBSD)? Дело в том, что это лучшие операционные системы из тех, с которыми мне приходилось работать! До BSD на моих серверах стояли различные версии и реализации ОС Windows, Linux и Mac OS, однако ни одна из них не смогла обеспечить такую стабильность, нетребовательность к ресурсам и универсальность, а также простую, быструю и лёгкую настройку сервера (а именно этим сисадмин и занимается) как системы BSD. Более подробно об этом, я постараюсь рассказать в следующих своих статьях на данном сайте. А начать обзорный цикл статей по работе с системами BSD мне хотелось бы с демонстрации поразительной простоты и целостности данных ОС. Для примера я взял установку и настройку Web-сервера "с нуля", так как это одна из самых популярных функций сервера и, наверное, самая популярная ассоциация у пользователей всемирной паутины. К тому же, сделать это на базе последних версий NetBSD и OpenBSD не просто, а ОЧЕНЬ просто!
Делается это всего в три шага:
1) Выбрать компьютер для установки сервера;
2) Установить и настроить операционную систему (возьмём NetBSD 5.0);
3) Запустить и настроить bozohttpd (встроенный Web-сервер NetBSD 5.x).
Вся эта работа займёт всего несколько минут!!! Скорость и простота - главные преимущества BSD-систем!
1. Начнём с выбора компьютера для установки сервера. Хотя... особый подбор здесь не требуется, так как, в данном случае, подойдёт практически любой компьютер, который попадётся под руку (старый, слабый, списанный в утиль и т.п.), ведь NetBSD - самая универсальная система в мире! Её можно поставить куда угодно, даже на тостер (в котором хлеб жарят)!
2. Далее, устанавливаем на выбранный компьютер ОС NetBSD. Для этого потребуется всего несколько сотен мегабайт (!!!) свободного места на диске (ну или на том носителе, куда Вы будете ставить систему) и пара минут времени. Подробное описание процесса установки я дам в отдельной статье. А для тестового сервера подойдут параметры по умолчанию, просто следуйте инструкциям на экранах инсталлятора (sysinst).
3. Ну а теперь самое интересное - запуск и настройка Web-сервера. Для этого в ОС NetBSD (как и в OpenBSD) ничего дополнительно ставить не придётся, так как в этих системах уже есть набор основных серверов (демонов), их нужно только включить! Делается это очень просто. Открываем на редактирование (с правами root-a) файл /etc/rc.conf и прописываем в него всё, что касается настроек httpd (там всего 4 пунктика). Образец данного конфигурационного файла (с примерами запуска различных серверов) лежит в каталоге /etc/defaults/ и он же является конфигурационным файлом по умолчанию (если в /etc/rc.conf ничего не прописано). Если же копаться в этом sample лень, то можно воспользоваться текстовым фильтром grep для извлечения нужных пунктов из /etc/defaults/rc.conf. Делается это так (один из вариантов):
cat /etc/defaults/rc.conf | grep httpd >> /etc/rc.conf
В результате выполнения этой команды в файл /etc/rc.conf будут добавлены все необходимые записи для запуска и конфигурации http-сервера. Остаётся их только подправить:
httpd=YES (запускает сам сервер bozohttpd)
Остальные можно оставить как есть.
Вот и всё. Теперь у Вас свой Web-сервер. После перезагрузки, разместите стартовый файл index.html (с которого начинается просмотр сайта) в папку /var/www/ и проверьте работу сервера с помощью браузера (лучше с другого компьютера сети) по адресу http://192.168.1.50/, где IP-шник 192.168.1.50 является адресом вашего сервера в сети. Более того, сервер изначально поддерживает CGI и позволяет обрабатывать запросы Web-пользователей с помощью shell-скриптов, расположенных в специальной папке, указание на которую прописывается в качестве параметра непосредственно при запуске httpd или же флага в файле /etc/rc.conf например так:
httpd_flags="-c /var/www/cgi" (все CGI-скрипты должны лежать в этой папке!)
Код CGI-скрипта для /bin/sh выглядит примерно следующим образом:
--------------------
#!/bin/sh
echo "Content-type: text/html";
echo "";
echo Today is `date`;
exit 0;
---------------------
(Данный скрипт просто выводит текущую дату на экран.)
При необходимости, с помощью той же команды echo "...."; можно выводить и HTML-код или же можно вставить его из отдельного файла с помощью cat и т.п. программ.
Обратите внимание на то, что при обращении к CGI-файлу в URL обязательно нужно указывать инфикс .../cgi-bin/..., иначе он выполняться не будет! И не забудьте сделать скрипт исполняемым (с помощью команды chmod). Например:
chmod +x test1.sh
Далее можно обращаться к нему напрямую:
/var/www/cgi/./test1.sh
или же через браузер:
http://192.168.1.50/cgi-bin/test1.sh
Причём скрипты могут быть написаны как с помощью команд командного интерпретатора (типа /bin/sh) так и на любом языке программирования, для которого имеется интерпретатор в вашей системе (например Perl или Python).
После того как сервер уже заработал, наверняка, многие озадачатся вопросом насчёт конфигурации bozohttpd. Так вот, у этого сервера нет файлов конфигурации и это здорово! Никаких десятков непонятных инструкций (как, например у Apache), всё прописывается непосредственно при запуске сервера в качестве параметров (флагов). Описание всех этих параметров есть в man-e по httpd данной операционной системы (http://wiki.lissyara.su/wiki/Bozohttpd).
Наслаждайтесь мощностью и простой BSD!
Опубликовано на
LinuxRSP.ru с разрешения автора.