avatar Debian Настройка WEB сервера Lighttpd+MySQL+PHP5+Сжатие статики (с использованием mod_compress) в Debian

Данный сервер отличается умеренным аппетитом к ресурсам системы и высокой скоростью работы, необходимость в его установке возникает тогда, когда необходимо раздать большое количество различных файлов, успешно поддающихся сжатию, при этом сэкономив пропускную способность канала. Это позволяет загружать страницы пользователям с низкой скоростью соединения, за вполне приемлемое время. Пользователи скоростных каналов разницы не почувствуют, плюс немного снизится нагрузка на сервер, хотя для комфортного сёрфинга по сайтам хватит и 128Kbps, а закачка крупных файлов-уже отдельная тема для обсуждения.

У данной технологии есть и недостатки, а именно: Довольно сильно возрастает нагрузка на процессор (ему ведь необходимо упаковать все эти файлы в архив), с другой стороны-не обязательно упаковывать файлы по каждому запросу пользователя, достаточно заархивировать файлы один раз и раздавать готовый файл всем пользователям. Для этого необходимо установить время жизни архива, по окончании которого, архив будет пересоздан, это уже относится к кешированию. В такие архивы отлично упаковываются каскадные таблицы стилей(CSS), Javascript, HTML и д.р. Добавление в архивы картинок и видео, не дает заметного результата в экономии трафика.
За счет сжатия, можно добиться уменьшения объёма переданного трафика примерно до 35%, при
условии, что сервер раздает данные в виде текста. Переходи от слов к делу.

Устанавливаем web сервер Lighttpd:

sudo su


apt-get install lighttpd


После установки, сервер готов к работе, и отзывается по IP адресу вашей системы, его корневая директория находится /var/www
(Cделать крин!)

Устанавливаем MySQL 5:

apt-get install mysql-server mysql-client

При установке указываем пароль для пользователя root, который будет управлять базами данных.
(необходимо указать новый пароль и подтверждение!)

Устанавливаем PHP5

apt-get install php5-cgi


Настраиваем PHP, нам необходимо найти и отредактировать конфигурационный файл php.ini
nano /etc/php5/cgi/php.ini


Там необходимо найти и раскоментировать строку cgi.fix_pathinfo=1
Сохраняем изменения выходим.
Активируем модуль 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


Проверяем работоспособность PHP5 в качестве Fastcgi:

Создадим файл test.php
nano /var/www/test.php


Добавим в него следующее:
<?php
phpinfo();
?>


Перезапускам lighttpd:
/etc/init.d/lighttpd restart


Тестовый сервер находится у меня по адресу 192.168.10.10, набираем в адресной строке браузера httр://192.168.10.10/test.php. Должна открыться тестовая страница, в которой нас интересует строка Server API в которой указано CGI/FastCGI (на скрине подчёркнуто красным). Если страница открылась значит PHP работает нормально, а из таблицы узнаем уже детали.
server api

Все здорово, но установленное 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


Дожидаемся окончания загрузки и установки и перезапускаем WEB сервер:
/etc/init.d/lighttpd restart


Возвращаемся к нашему браузеру и внем жмем F5 или Обновить страницу и после обновления, находим раздел MySQL, если он присутствует-значит PHP поддерживает работу с СУБД.
php+mysql

Добавляем кеширование и сжатие файлов с помощью mod_compress

nano /etc/lighttpd/lighttpd.conf


Необходимо найти и убедиться, что строка mod_compress не закомментирована, находим секцию с активными серверными модулями, должно выглядеть так:
server.modules = (
        "mod_expire",
        "mod_access",
        "mod_alias",
        "mod_compress",
        "mod_redirect",


Директории для кеша создаются автоматически и находятся /var/cache/lighttpd/compress/

По поводу директории в которой будут храниться сжатые файлы, то ее лучше всего располагать на наиболее быстрых секторах жесткого диска или RAID массива, ну а в идеале, вынести их в отдельный раздел находящийся на SSD. В общем, принцип простой-чем быстрее эти файлы будут отданы пользователю, тем лучше.

Активируем использование сжатия в PHP

nano /etc/php5/cgi/php.ini

Нам необходимо найти строку zlib.output_compression и установить значение On по умолчанию стоит Off, должно выглядеть:
zlib.output_compression = On


Перезапускаем сервер:
/etc/init.d/lighttpd restart


Обновляем наш тестовый скрипт и проверяем активировалось сжатие или нет, лучше всего воспользоваться пойском по странице, по ключу gzip, должно быть enabled
gzip

Теперь нам необходимо очищать директорию от старых файлов, для примера, которые старше 10 дней. Это необходимо проводить для того чтобы устаревшие файлы не накапливались и не забивали свободное дисковое пространство.
Можно создать задание в Cron:
crontab -e


01 2 * * * /usr/bin/find /var/cache/lighttpd/compress/ -type f -atime +10 -print0 | /usr/bin/xargs -0 -r /bin/rm


Из этого можно понять что задание будет выполняться в 2:01 ночи и будет удалять файлы из директории /var/cache/lighttpd/compress/ все файлы старше 10 дней.

Это все.

2 комментария

avatar
Спасибо за полезный материал, но было бы интересно почитать сравнительные показатели производительности в сравнении с nginx + php-fpm применительно к популярным движкам на вдс средней ценовой категории…
avatar
Методик тестирования существует не менее 5, так что, данный материал тянет на полноценное исследование, мне одному придется его очень долго делать, боюсь не осилю. Дело в том что я не хочу писать тесты из серии ставим Apapche+PHP на один сервер, а на второй Nginx+PHP-FPM -смотрим за их работой, Nginx потребляет меньше памяти и отдает страницу быстрее-вывод Nginx+PHP-FPM лучше-таких псевдо-ислледований по интернету навалом, а электронный мусор мне плодить не хочется.
Есть что добавить? Регистрируйся и оставляй комментарии!