Веб-сервер lighttpd
Чтобы несколько упростить задачу, все примеры буду приводить на
Ubuntu 8.04 LTS, более понятном для новичков, хотя все сказанное, за
исключением особенностей установки, будет актуально и для других систем.
Не секрет, что в настоящее время Apache, благодаря своей надежности,
функциональности и расширяемости, является самым популярным
веб-сервером. Но на встраиваемых платформах, медленных компьютерах и
для обработки статичного контента его преимущества уже не так очевидны.
Поиск в репозитарии Debian/Ubuntu «sudo apt-cache search httpd»
выдаст не один десяток схожих проектов. Среди них - nginx (nginx.net) и
lighttpd (www.lighttpd.net), которые входят в первую пятерку
популярности веб-серверов (по данным компании NetCraft, netcraft.com).
Оба сервера работают очень быстро, потребляя малое количество ресурсов,
и используют одну и ту же модель многозадачности - асинхронный I/O.
Стоит отметить, на lighttpd крутятся такие сайты, как SourceForge,
Youtube, Википедия. Он поддерживает выдачу динамических страниц (при
помощи FastCGI) и балансировку нагрузки. Функциональность можно
изменить за счет подключения/отключения модулей. В настоящее время
реализованы модули управления виртуальными хостами, переадресации,
аутентификации и др.
Для примера настроим lighttpd с поддержкой PHP5 и MySQL. Установка из репозитария Ubuntu довольно проста:
$ sudo apt-get install lighttpd lighttpd-doc php5-cgi
Кроме того, некоторые модули вынесены в отдельные пакеты, найти
которые можно поиском. Теперь если набрать в браузере
http://localhost/, увидим страницу по умолчанию, на которой вкратце
расписаны особенности данного сервера. 
Веб-страница, выдаваемая после установки Lighttpd
Конфигурационные файлы находятся в /etc/lighttpd, каталог DocumentRoot - /var/www, место для CGI скриптов - /usr/lib/cgi-bin, логи - /var/log/lighttpd.
Чтобы не нарушать совместимость с большинством приложений, необходимо активировать параметр “cgi.fix_pathinfo” (так мы дадим указание PHP устанавливать имя файла в переменной SCRIPT_FILENAME):
$ sudo nano /etc/php5/cgi/php.ini
cgi.fix_pathinfo = 1
Основной файл lighttpd.conf состоит из директив и
стандартен для Unix. Если директива должна принимать несколько
значений, они перечисляются через запятую и заключаются в скобки.
Открываем конфиг в редакторе и правим:
$ sudo nano /etc/lighttpd/lighttpd.conf
# Описание модулей
server.modules = (
“mod_access”,
“mod_alias”,
“mod_accesslog”,
“mod_compress”,
# Добавляем строку, подключающую FastCGI
“mod_fastcgi”,
# “mod_rewrite”,
)
# Расположение файлов
server.document-root = “/var/www/”
# Индексные файлы, не забываем о index.php
index-file.names = ( “index.php”, “index.html”,
“index.htm”, “default.htm”, “index.lighttpd.html” )
# При необходимости указываем порт и адрес, на котором будут приниматься подключения
# server.port = 80
# server.bind = “localhost”
# Кодировка для листинга файлов
dir-listing.encoding = “utf-8″
# UID|GID, с правами которых будет работать демон
server.username = “www-data”
server.groupname = “www-data”
# Добавляем строку-обработчик PHP файлов
fastcgi.server = ( “.php” => (”bin-path” => “/usr/bin/php5-cgi”,
“socket” => “/tmp/php-fastcgi.socket”
))
По окончании настройки проверяем файл на отсутствие ошибок:
$ lighttpd -t -f /etc/lighttpd/lighttpd.conf
Syntax OK
После чего перезапускаем сервер:
$ sudo /etc/init.d/lighttpd force-reload
Для работы MySQL понадобятся следующие модули:
$ sudo apt-get install php5-mysql mysql-server mysql-client
Опционально можно поставить и другие пакеты, реализующие разные модули PHP, которые часто требуются в работе – php-imap, php-gd, php-ldap и другие.
Для включения или отключения модулей можно использовать специальные Perl скрипты lighty-enable-mod, lighty-disable-mod, поставляемые вместе с сервером. Например, включаем модуль fastcgi:
$ sudo lighty-enable-mod fastcgi
Available modules: auth cgi fastcgi proxy rrdtool simple-vhost ssi ssl userdir
Already enabled modules:
Enabling fastcgi: ok
Run /etc/init.d/lighttpd force-reload to enable changes
Многофункциональный прокси DeleGate
Без преувеличения выбор прокси-серверов в *nix огромен. Поиск в
репозитарии любого дистра даст десяток приложений, ориентированных на
разные задачи, протоколы и имеющие различные возможности: кэширующие,
фильтрующие, прозрачные и так далее. Популярный Squid несколько
тяжеловат и довольно сложен в настройке. Если нужен только кэширующий
прокси, заменить кальмара поможет Polipo
(www.pps.jussieu.fr/~jch/software/polipo) — легкий проксик,
ориентированный на небольшое количество клиентов, или популярный Oops!
(www.oops-cache.org).
Если нужен контроль доступа и прочие возможности без кэширования
данных, обрати внимание на Tinyproxy (www.banu.com/tinyproxy) или
3proxy (3proxy.ru). Если требуется фильтровать web-контент, посмотри в
сторону WillowNG (launchpad.net/willowng), bfilter (bfilter.sf.net),
WebCleaner (webcleaner.sf.net). Но мы остановимся на DeleGate
(www.delegate.org). Причина такого выбора кроется в его
кроссплатформенности и многофункциональности. Этот прокси поддерживает
работу с большим количеством протоколов (HTTP, FTP, NNTP, SMTP, POP,
IMAP, LDAP, Telnet, SOCKS, DNS). Реализовано кэширование данных,
фильтрация трафика, аутентификация и другие функции. DeleGate нет в
репозитарии Ubuntu, но его установка не сложна. 
Чтобы скачать DeleGate, необходимо ввести свой e-mail
Скачать архив с исходными текстами можно сайта проекта, в качестве логина указав e-mail. Приступаем к установке:
$ tar xzvf delegate9.9.0.tar.gz
$ cd delegate9.9.0
$ make
В процессе сборки запрошивается e-mail адрес, который будет
использоваться в сообщениях об ошибках. По завершении процесса в
каталоге $HOME/delegate создается DGROOT окружение,
содержащее все рабочие библиотеки, здесь же находится pid-файл, журнал
и кэш. Для удобства работы скопируем исполняемый файл delegated в
каталог, доступный через переменную окружения PATH:
$ sudo cp -v src/delegated /usr/bin
Для примера запустим delegate в режиме HTTP прокси, работающего на 8080 порту (’-v’ для отладки):
$ delegated -v -P8080 SERVER=http 
Запускаем DeleGate как HTTP прокси
Настраиваем браузер на новый порт и пробуем подключиться. В консоли
наблюдаем за ходом работы. Если номер порта выбрать <1024, Delegate
при запуске потребует права root. Если не использовать параметр ‘-v’, то после инициализации демон освободит консоль. Остановить затем процесс можно так:
$ delegated -P8080 -Fkill
“/home/user/delegate/act/pid/8080″: kill(14131,SIGTERM) = 0 (0) ** OK **
Теперь добавим кэширование и ограничим работу Delegate только внутренним интерфейсом:
[AD] $ delegated -P192.168.1.1:8080 SERVER=http CACHE=do
Процессы delegated ни как не связанны между собой, таким образом,
нам ни что не мешает запустить столько копий Delegate со своими
параметрами, сколько действительно необходимо. Аналогично активируется
FTP прокси:
$ delegated -P8021 SERVER=ftp
Кроме того, Delegate может работать как HTTP, FTP, DNS или NNTP сервер. Например, запустим его как веб-сервер:
$ sudo delegated -P80 SERVER=http MOUNT=”/* file:/var/www/*”
DNS сервер Dnsmasq
Использование своего DNS сервера позволяет ускорить серфинг и
чуточку сократить нагрузку на внешний канал за счет кэширования.
Популярный BIND монструозен, жаден до оперативки и имеет репутацию
самого дырявого DNS решения. Но ему легко найти замену. Команда «sudo
apt-cache search dns» выдаст несколько предложений на любой вкус.
Например, lwresd — сильно урезанный, только кэширующий сервер имен,
который отвечает на запросы с помощью облегченного протокола
определения имен BIND 9, а не протокола DNS. Еще есть PowerDNS - очень
мощный и простой в настройке DNS сервер, к которому написано много
графических тулз, MaraDNS с хорошей секурити историей, кэширующий
djbdns, Dnsmasq, о котором пойдет дальше речь, и другие.
Разработанный для небольших сетей Dnsmasq
(www.thekelleys.org.uk/dnsmasq) является кэширующим DNS, а также DHCP и
TFTP сервером. Объединение DNS и DHCP серверов в одной программе дает
ряд преимуществ. Ведь обмен данными в этом случае между DNS — DHCP
упрощен, и как только что-то делает одна часть, вторая тут же узнает об
этом, на лету корректируя свои установки. Например, полученный при
помощи DHCP IP-адрес сразу же попадает в DNS таблицу. Сервер Dnsmasq
умеет загружать информацию из файла /etc/hosts, которую и будет
использовать как для службы DNS, так и для DHCP. Полученный клиентом IP
может заносить в hosts. Ставим:
$ sudo apt-get install dnsmasq
Настройки Dnsmasq производятся в единственном файле /etc/dnsmasq.conf. В самом простом случае достаточно уточнить в нем интерфейс, чтобы он принимал запросы только из внутренней сети:
listen-address=127.0.0.1, 192.168.0.1
Как вариант, можно использовать параметр “interface“.
Теперь открываем /etc/resolv.conf и
добавляем в самом начале строку “nameserver 127.0.0.1″, указывая, что
при опросе первым сервером имен будет локальная система. Если провайдер
для раздачи IP-адресов использует DHCP, то файл /etc/resolv.conf будет переписан при следующем подключении. Чтобы этого избежать, в /etc/dhcp3/dhclient.conf снимаем комментарий с записи:
prepend domain-name-servers 127.0.0.1;
Теперь при обновлении первой строкой в resolv.conf будет
вставлена ссылка на 127.0.0.1. При необходимости сюда через запятую
можно добавить IP-адреса других предпочитаемых DNS серверов.
Перезапускаем dnsmasq:
$ sudo /etc/init.d/dnsmasq restart
Минимальная настройка DHCP сервера фактически сводится к настройке
директивы dhcp-range, при помощи которой задаются границы диапазона
IP-адресов для выдачи клиентов:
dhcp-range=192.168.1.100,192.168.1.150,255.255.255.0,24h
В этом примере был задан диапазон 192.168.1.100-192.168.1.150.
Сетевая маска необязательна, Dnsmasq способен подобрать оптимальную,
исходя из текущих настроек. Так же из системных настроек берутся имена
домена, DNS-сервера, IP-адрес маршрутизатора. Последним идет
необязательный параметр, указывающий на время выдачи адреса, после
которого клиент повторяет запрос на его получение. Кроме того, в файле
можно найти еще несколько директив, начинающихся на dhcp-, с их помощью
можно задать практически любые настройки DHCP. Например, чтобы клиенту
с определенным MAC адресом всегда выдавался один и тот же IP-адрес,
используем dhcp-host:
dhcp-host=00:11:AA:BB:22:CC,192.168.1.200,dejavu
Кстати, у dhcp-host есть несколько дополнительных опций. Например,
чтобы игнорировать систему с определенным адресом, в конце предыдущего
правила добавляем “ignore”.
Легкий почтовик XMail
Небольшой (1.5 Мб) и легкий в работе XMail (www.xmailserver.org)
является полноценным SMTP, POP3 и Finger сервером, который может
работать на широком спектре систем - Linux, *BSD, Mac OS X, Solaris и
Windows NT/2000/XP/2003/Vista. Позиционируется как для внутренней
интранет сети, так и для работы в интернет. Может обслуживать несколько
доменов, умеет управлять внешними POP3 учетными записями, алиасами,
списками рассылки, поддерживается несколько типов аутентификации и
многое другое. Очень прост в настройке и идеально подходит для тех
случаев, когда Sendmail/Postfix/Exim админу не по зубам или попросту
излишен. Соответствующие пакеты есть в репозитарии Ubuntu:
$ sudo apt-get install xmail xmail-doc
В процессе установки будет запрошено имя домена по умолчанию и учетная запись для отправки служебных сообщений. 
Во время установки пакетов XMail будут запрошены некоторые настройки
Рабочими каталогами для XMail являются /var/lib/xmail (при установке из сырцов /var/Mailroot), /var/spool/xmail и некоторые другие. В пакетах Debian/Ubuntu для удобства настройки основные конфигурационные файлы размещены в /etc/xmail,
а в указанных каталогах находятся символические ссылки. Для каждого
домена так же создается отдельный каталог. Управление запуском сервера
производится при помощи скрипта /etc/init.d/xmail. Все настройки описаны в README, который доступен как на сайте проекта, так и в /usr/share/doc/xmail.
При ручной правке разработчики советуют помнить о формате файлов.
Каждый параметр начинается с новой строки, если команда имеет несколько
значений, то их следует прописывать через табуляцию (сколько они займут
строк, не важно, пока не будет нажат <Enter>, вся запись будет
сопоставлена этому параметру).
Команда «netstat -atn»,
введенная после инсталляции, показывает, что слушаются 25 (SMTP) и 110
(POP3) порты. Поэтому нас ждет минимум настроек. Сервер XMail не
использует общесистемные учетные записи, а хранит данные о
пользовательских аккаунтах в своих файлах. Например, учетные записи для
работы с почтой находятся в файле mailusers.tab, в smtpauth.tab
заносятся учетные записи для подключения к SMTP серверу (используются
только для отправки сообщений). Сети, с которых можно отправлять и
получать почту, указываются соответственно в файлах pop3.ipmap.tab и
smtp.ipmap.tab. По умолчанию запись в них разрешает подключение с
любого адреса:
“0.0.0.0″ “0.0.0.0″ “ALLOW” 1
Вероятно, здесь следует разрешить подключения только из внутренних сетей:
“0.0.0.0″ “0.0.0.0″ “DENY” “1″
“192.168.1.0″ “255.255.255.0″ “ALLOW” “2″
В других файлах находятся данные SMTP шлюзов и релеев, алиасы
доменов, антиспам настройки и прочее. Но править файлы вручную
необязательно, сервер XMail предоставляет возможность удаленного
управления (порт 6017).
На сайте проекта в разделе “XMail Tools” можно найти ссылки на
некоторые инструменты. Например, PHP интерфейс к XMail — PHPXmail
(phpxmail.sf.net). Но вначале нужно создать в ctrlaccounts.tab учетную
запись администратора. Создание новой записи здесь несколько необычно.
Первым делом при помощи утилиты XMCrypt генерируем хэш пароля:
$ sudo /usr/sbin/XMCrypt p@5sw0rd
1525501612551701
Копируем полученную строку в ctrlaccounts.tab и добавляем логин. Примерно так: “admin 1525501612551701“.
Кроме того, в ctrl.ipmap.tab следует ограничить доступ к управлению
сервером только определенными сетями или адресами, как это сделано в
других *.ipmap.tab. Скачиваем, распаковываем в каталог /var/www архив PHPXmail, набираем в браузере http://localhost/phpxmail/. 
Интерфейс к XMail - PHPXmail
Выбираем ссылку “Add new server” и вводим данные своего сервера и
учетные данные админа. После подключения получаем возможность управлять
учетными записями через веб-интерфейс, а пользователи могут работать с
почтой. Журналы находятся в каталоге /var/log/xmail. Здесь три файла: ctrl* - управление, smtp* - отправка почты и pop3 – получение.
Сайты проектов:
* nginx - nginx.net
* Lighttpd - www.lighttpd.net
* thttpd - www.acme.com/software/thttpd
* Dnsmasq - www.thekelleys.org.uk/dnsmasq
* Oops! - www.oops-cache.org
* DeleGate - www.delegate.org
* XMail - www.xmailserver.org
* PHPXmail - phpxmail.sf.net
|