четверг, 22 марта 2012 г.

Настройка WEB сервера Lighttpd+MySQL+PHP5+Сжатие статики

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

Это все.

Комментариев нет:

Отправить комментарий