Установка Lighttpd+MySQL+PHP5 на Debian 7 / CentOS 7
Данный сервер отличается умеренным аппетитом к ресурсам системы и высокой скоростью работы.
Устанавливаем web сервер Lighttpd
После установки, сервер готов к работе, и отзывается по IP адресу вашей системы, его корневая директория находится /var/www
Другой вариант установки:
Поменять в etc/apt/source wheezy на jessie на момент установки lighttpd
Проверка версии lighttpd командой
В ответ вы получите следующее:
Для CentOS 7 подключаем EPEL Repository:
и затем устанавливаем:
Устанавливаем MySQL 5
При установке указываем пароль для пользователя root, который будет управлять базами данных.
Устанавливаем PHP5
Все здорово, но установленное PHP не поддерживает работу с MySQL, необходимо это исправить.
До устанавливаем следующие пакеты:
Активируем модуль fastcgi:
Теперь нам необходимо создать символьную ссылку, которая будет указывать из /etc/lighttpd/conf-enabled/10-fastcgi.conf в директорию /etc/lighttpd/conf-available/10-fastcgi.conf
Перезапускам lighttpd:
Вот и все, просто, быстро, удобно!
PS:
Чтобы скрыть название или версию lighttpd нужн в конфиг добавить:
Чтобы включить mod_rewrite нужно в конфиге раскомментировать:
Для того чтобы работал rewrite нужно в конфиге прописать например следующее:
Для того, чтобы принудительно использовать SSL на определённых сайтах, можно вписать в файл /etc/lighttpd/conf-enabled/05-ssl.conf следующую условную секцию:
Устанавливаем web сервер Lighttpd
apt-get install lighttpd
После установки, сервер готов к работе, и отзывается по IP адресу вашей системы, его корневая директория находится /var/www
Другой вариант установки:
Поменять в etc/apt/source wheezy на jessie на момент установки lighttpd
wheezy (stable) (httpd): fast webserver with minimal memory footprint
1.4.31-4+deb7u3: amd64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc s390 s390x sparc
jessie (testing) (httpd): fast webserver with minimal memory footprint
1.4.35-3: amd64 arm64 armel armhf i386 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc ppc64el s390x
Проверка версии lighttpd командой
lighttpd -v
В ответ вы получите следующее:
lighttpd/1.4.35 — a light and fast webserver
Build-Date: May 1 2014 10:10:10
Для CentOS 7 подключаем EPEL Repository:
rpm -Uvh http://mirror.pnl.gov/epel/7/x86_64/e/epel-release-7-2.noarch.rpm
и затем устанавливаем:
yum install lighttpd
Устанавливаем MySQL 5
apt-get install mysql-server mysql-client
При установке указываем пароль для пользователя root, который будет управлять базами данных.
Устанавливаем PHP5
apt-get install php5-cgi
Все здорово, но установленное PHP не поддерживает работу с MySQL, необходимо это исправить.
До устанавливаем следующие пакеты:
apt-get install php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl
Активируем модуль fastcgi:
lighttpd-enable-mod fastcgi
lighttpd-enable-mod fastcgi-php
Теперь нам необходимо создать символьную ссылку, которая будет указывать из /etc/lighttpd/conf-enabled/10-fastcgi.conf в директорию /etc/lighttpd/conf-available/10-fastcgi.conf
ls -l /etc/lighttpd/conf-enabled
Перезапускам lighttpd:
/etc/init.d/lighttpd restart
Вот и все, просто, быстро, удобно!
PS:
Чтобы скрыть название или версию lighttpd нужн в конфиг добавить:
server.tag = «you_name_httpd»
Чтобы включить mod_rewrite нужно в конфиге раскомментировать:
server.modules = (
…
«mod_rewrite»,
…
Для того чтобы работал rewrite нужно в конфиге прописать например следующее:
url.rewrite-once = (этот пример для такого преобразования: ваш_сайт/траляля будет ссылаться на ваш_сайт/index.php?action=траляля
"^/([^.]+)$" => "/index.php?action=$1"
)
Для того, чтобы принудительно использовать SSL на определённых сайтах, можно вписать в файл /etc/lighttpd/conf-enabled/05-ssl.conf следующую условную секцию:
$HTTP[«host»] =~ "^domain(1\.net|2\.ru)$" {
url.redirect = (".*" => «%0$0»)
}
5 комментариев
В этой теме я хотел бы рассказать о том, как сконфигурировать сервер Lighthttpd для оптимальной производительности.
Уже из самого названия продукта видно, что этот сервер «лёгкий» — он заточен под максимальную скорость работы.
А знание конфигурации позволит оптимально настроить сервер под Ваши нужды и нагрузки.
Далее я напишу о директивах конфигурации сервера, которые прямым образом влияют на производительность.
Сужаем канал
Директива connection.kbytes-per-second позволяет ограничить скорость соединения с сервером. Это позволит дольше использовать ресурсы канала во время DDoS-атаки.
Следующий код ограничит скорость до 1 мбит/с:
Код:
connection.kbytes-per-second = 1024
По умолчанию директива равна 0, т.е. ограничения отсутствуют.
Кроме того, можно ограничить скорость соединения для определённого хоста (к примеру, если идёт http-ddos на один из сайтов на сервере):
Код:
$HTTP[«host»] == «victim.com» { server.kbytes-per-second = 32 }
Помимо этого, существует плагин mod_speed.c, который позволяет регулировать скорость прямо в скриптах. Пример на php:
PHP код:
<?php
header(«X-LIGHTTPD-KBytes-per-second: 50»);
echo('Content with speed, limited to 50 kbit/s');
?>
Ограничиваем запросы
Для того, чтобы сессии соединения сбрасывались как можно быстрее и количество запросов в эту сессию было как можно меньше, надо регулировать keep-alive директивы. Вот значения по умолчанию:
Код:
server.max-keep-alive-requests = 16 server.max-keep-alive-idle = 5 server.max-read-idle = 60 server.max-write-idle = 360
Вы можете уменьшать их с увеличением нагрузки (например, во время DDoS-атаки), вплоть до обнуления. Первые две директивы — это соответственно максимальное количество запросов во время сессии и длительность сессии (в секундах)
Регулируем дескрипторы
Для каждой открытой, скажем, php страницы на сайте создаётся файловый дескриптор.
Если идёт атака, то файловых дескрипторов создаётся очень много, и если их количество превысит установленый лимит, сервер перестанет отвечать на запросы.
Поэтому при больших нагрузках рекомендуется увеличивать значение директивы server.max-fds. По умолчанию оно равно 1024.
Данная директива работает лишь в случае, когда lighthppd запущен под root.
Код:
server.max-fds = 4096
Количество соединений
Директива server.max-connections служит для определения максимального количества соединений сервера.
По умолчанию она равна 1024, как и server.max-fds, но рекомендуется устанавливать для неё значение, равное 1/2 или 1/3 от значения server.max-fds, поскольку не все файловые дескрипторы отвечают соединениям — многие используются для fastcgi или файлов.
Всё
Больше информации можно найти на lighttpd.net.
Удачи в Анти-ДДоСе!
Баним IP-адреса
Если атака ведётся с какого-то диапазона IP-адресов или с нескольких IP-адресов, логично забанить эти адреса. Для этого воспользуемся условной конструкцией, глобальными переменными и регулярным выражением:
Код:
$HTTP[«host»] == «victim.com» { $HTTP[«remoteip»] = "^(123\.123\.123\.[0-255])$" { url.access-deny = ( "" ) } }
Ещё ограничиваем трафик
Вот ещё некоторые меры, которые могут помочь для экономии трафика: бан ботов по user-agent и анти-хотлинкинг.
User-Agent банится так:
Код:
$HTTP[«useragent»] =~ «libwww-perl» { url.access-deny = ( "" ) }
Это конечно можно сделать и в robots.txt, но ведь бот может и не проверять этот файл, так что на уровне сервера это надёжнее.
Хотлинкинг же запрещается следующим образом:
Код:
$HTTP[«referer»] !~ "^($|http://vitim\.com)" { url.access-deny = (".bmp", ".jpg", ".jpeg", ".png",".ico" ) }
Таким образом, мы запретили выкладывать на других хостах картинки с нашего сервера. Это бывает весьма полезно, когда картинок много и их постоянно воруют. Того же эффекта можно достичь при помощи .htaccess. Кстати бывали и прецеденты, когда DDoS-атака проводилась с помощью очень частого показа картинок с сервера (канал забивался).
sysadmins.ws/viewtopic.php?f=91&t=1250