В данной статье я хотел бы поделиться своим опытом и рассказать о том как использовать встроенный Web-сервер операционных систем NetBSD 5.x в связке типа HTTPD+PHP+MySQL вместо установки более мощного, но и более громоздкого и сложного Apache.
Итак. Для начала хотелось бы отметить тот факт, что в ОС NetBSD последних версий (5.0 и выше) уже есть простой, но довольно мощный, Web-сервер bozohttpd, который находится в папке /usr/libexec/. А следовательно, если не требуется особой гибкости и огромного количества поддерживаемых модулей (как в Apache), то этот сервер вполне подойдёт, например, для тестов начинающим Web-программистам или же для размещения домашнего (или корпоративного) сайта в локальной (корпоративной) или региональной (районной) сети. Преимущества такого решения очевидны:
1) Не требуется установки и конфигурации ещё одного сервера; 2) Не будет захламляться системный носитель и каталоги конфигурации всяким мусором; 3) Меньше будет установлено дополнительных пакетов; 4) У bozohttpd нет собственных файлов конфигурации, стартовых скриптов и дополнительно загружаемых модулей. А значит его настройка и обслуживание будет доступна даже новичкам. 5) При любых проблемах в системе и ошибках пользователя переустановка этого сервера не требуется! и т.д.
Данный список можно продолжить, но в этом нет необходимости. Я думаю, что каждый администратор найдёт своё применение этому замечательному серверу. Запуск bozohttpd производится как обычно, из файла /etc/rc.conf следующей директивой:
httpd=YES
Однако, я рекомендую переписать сюда и другие директивы, относящиеся к httpd, чтобы потом было удобнее его настраивать. Найти их можно в файле /etc/defaults/rc.conf. А можно просто воспользоваться командой grep, например так:
grep httpd /etc/defaults/rc.conf
и затем выбрать нужные директивы, или же сразу дописать всё в /etc/rc.conf командой типа:
grep httpd /etc/defaults/rc.conf >> /etc/rc.conf
После этого нужно прописать домашний каталог нашего сайта в директиве httpd_wwwdir, например так:
httpd_wwwdir="/WWW"
Если ничего не менять, то по умолчанию будет использован каталог /var/www/. И последняя директива, которую мы рассмотрим, httpd_flags. Именно здесь прописываются все параметры, которые передаются серверу при запуске. По умолчанию серверу никакие параметры не передаются, а следовательно кавычки будут пустые:
httpd_flags=""
Хотелось бы напомнить, что первая (стартовая) Web-страничка вашего сайта должна называться index.html и находиться непосредственно в папке, указанной в директиве httpd_wwwdir.
Всё, после перезапуска (или перезагрузки) bozohttpd будет работать и откликаться на 80-м порту, как и Apache. Проверить это элементарно. Нужно запустить любой браузер на любом компьютере в сети и набрать в адресной строке IP-шник сервера, например:
http://192.168.1.50:80/ (с указанием номера порта)
После проверки работоспособности сервера можно приступать к установке и настройке дополнительных пакетов. Я приведу пример только для PHP и MySQL, однако другие ставятся и работают аналогично. Установить нужное ПО можно, как минимум, 2-мя способами: компиляцией непосредственно из исходников или же добавлением уже готового пакета с помощью pkg_add. Для краткости я возьму второй способ. Качаем с официального сайта пакеты типа php-5.x.tgz, mysql-php.tgz и mysql-server-5.x.tgz (версии могут быть любыми) и устанавливаем их с помощью pkg_add, например:
pkg_add -v php-5.3.6.tgz
После окончания установки всех пакетов перезагружаемся! Затем подключаем интерпретатор языка PHP к bozohttpd c помощью флага (или параметра) -С .php /usr/pkg/libexec/cgi-bin/php и устанавливаем новый стартовый файл для сайта - index.php. Выглядит это так:
Теперь создаём тестовый PHP-скрипт (например test1.php) и запрашиваем его через браузер:
http://192.168.1.50/test1.php
Всё должно заработать!
Теперь проверяем работу СУБД MySQL. Запускаем mysql client (который устанавливается вместе с сервером) и даём несколько тестовых команд, например:
mysql -uroot -p (вход под root-ом с пустым паролем) show databases; (выводит список баз данных) use mysql; (подключаемся к базе mysql) show tables; (выводит список таблиц этой базы) quit; (выходим из mysql)
Если все эти команды были приняты и выполнены интерпретатором, значит MySQL уже работает. Так же можно проверить работу MySQL с помощью скриптов для /bin/sh, например таким:
--------------------------
#!/bin/sh
echo "select Host, User from user" | mysql -uroot -p mysql;
exit 0;
----------------------------
Данный скрипт выведет список хостов и пользователей MySQL.
Теперь осталось только проверить связку PHP+MySQL и соединить их с Web-сервером. Пишем скрипт на PHP для соединения с СУБД и делаем простой запрос, например так: