Lighttpd – винищувач у світі веб-серверів

При використанні VPS-сервера з потужним обмеженням пам'яті у мене постало питання - який веб-сервер використовувати? Apache відпав відразу, тому що споживає дуже багато пам'яті навіть на один ресурс. Спробував вітчизняну розробку nginx, набагато краще, але налаштування виявилося не тривіальним, доводилося копатися в інтернеті, щоб вирішити досить прості завдання. І по пам'яті, хоч і багато менше nginx споживав ніж apache, але, як виявилося, є набагато краще рішення.

Якщо чесно, я трохи лукавлю, коли говорю, що починав свої тести з apache і потім переходив на nginx. Звичайно, це було не так. Ще до замовлення VPS-сервера я знав, що використовуватиму lighttpd, але потрібно було протестувати й інші сервіси. Що я, власне, і зробив. Але вже після того, як досконало обкатав lighttpd…

При використанні в умовах жорсткого обмеження пам'яті lighttpd показав себе тільки з найкращого боку. Він споживав близько 5-8 мегабайт пам'яті на всі домени, які були на нього налаштовані. На відміну від nginx, процес якого у пам'яті займав понад 30 мегабайт. Апач за тих самих умов зжирав усю доступну пам'ять. І в той же час налаштування lighttpd настільки тривіальне, що на ній можна було б і не зупинятися. Але хочу показати, як це просто.

Основна частина VPS-серверів використовує Debian, тому я розглядатиму саме цю операційну систему. Налаштування в інших операційних системах дещо відрізняється від представленого.

Якщо VPS-сервер був замовлений із встановленим апачем, його необхідно відключити та прибрати з автозавантаження:

Тепер можна приступати до встановлення легкого веб-сервера:

Починаючи з цього моменту на сервері вже працюватиме lighttpd, залишилося його налаштувати. Розберемо можливість використання PHP та MySQL навеб-сервер. Для цього, якщо це не було зроблено заздалегідь, встановимо пакети:

При встановленні mysql-сервера буде запрошено пароль доступу до сервера. Не забудьте його встановити, інакше сервер баз даних буде відкритий для доступу з інтернету. Тепер потрібно тільки включити модуль fastcgi в lighttpd:

Використовується команда lighttpd-enable-mod, якщо запустити її без параметрів, як показано в прикладі, будуть виведені імена всіх доступних модулів та запропоновано увімкнути потрібні. Можна скоротити трохи часу, якщо відразу задавати команду з параметром у вигляді імені модуля, що потрібно активувати:

Після виконання цієї команди потрібно буде перезавантажити веб-сервер:

Тепер наш веб-сервер може працювати з PHP-скриптами. Перевіримо. Для цього в корені нашого сайту (за замовчуванням усі сайти розташовуються в /var/www/) створюємо файл info.php з таким вмістом:

Для відключення модуля використовується команда lighttpd-disable-mod.

Після перезапуску веб-сервера у пам'яті висітимуть кілька процесів php-cgi, кожен із яких займає близько 30 мегабайт (після оптимізації використання стека оперативної пам'яті). Кількість процесів безпосередньо залежить від значення змінної max-procs, заданої у файлі /etc/lighttpd/conf-available/10-fastcgi.conf, мінімальне значення дорівнює одиниці (1), при цьому використовуватиметься 2 процеси php-cgi.

За промовчанням fastcgi налаштовано на обробку файлів .php. Якщо потрібно використовувати perl, python або ruby, потрібно змінювати файл /etc/lighttpd/conf-available/10-fastcgi.conf. Наприклад, якщо необхідно відключити обробку php-файлів і включити python для використання django, наводимо його до такого виду:

Зупинятися на подробицях налаштування різних двигунів я не буду. А перейду одразу доПросте використання віртуальних хостів. У тому ж apache для використання віртуальних хостів необхідно щоразу змінювати конфігурацію сервера та перезапускати його. У lighttpd є окремий модуль, який необхідно активувати, налаштувати, після чого віртуальні хости можна буде організовувати шляхом створення каталогів. Починаємо:

І перевіряємо значення змінних simple-vhost.server-root та simple-vhost.document-root:

В даному випадку всі віртуальні хости будуть розташовуватися в каталозі /var/www і кожен віртуальний хост містить папку html, в якій розташовуються самі файли. Тепер активуємо модуль віртуальних хостів:

І після перезапуску веб-сервера, починаємо створювати віртуальні хости:

І починаємо заповнювати вміст наших двох, щойно організованих сайтів test1 та test2. Природно, щоб усе працювало, ці доменні імена повинні бути зареєстровані. Відразу після створення даних каталогів та створення потрібних файлів у каталогах html сайти працюватимуть. Тепер для організації нового сайту не потрібно перезавантажувати веб-сервер.

Як бачите, веб-сервер є найлегшим із усіх існуючих рішень, які є на сьогоднішній день. І водночас його дуже просто налаштовувати. Все очевидно і дуже просто!