Меню Рубрики

Установка и настройка быстрого виртуального сервера lighttpd

Записки IT специалиста

Технический блог специалистов ООО»Интерфейс»

Веб-сервер Lighttpd — настраиваем виртуальные хосты.

Мы часто используем веб-сервер Lighttpd в своих решениях, как быстрый и нетребовательный к ресурсам. Также мы рассказывали, как создать на его базе полноценный веб-сервер. Сегодня мы пойдем дальше и рассмотрим, как настроить сервер для работы с несколькими сайтами. Для этой цели предназначен механизм виртуальных хостов, который позволяет серверу обслуживать на одном IP-адресе необходимое количество сайтов с различными доменными именами.

Прежде чем браться за настройки, необходимо определиться со структурой хранения данных. По умолчанию веб-сервер использует директорию /var/www, которая используется для размещения содержимого сайта. А если сайтов несколько? Размещать остальные в каком-то другом месте?

Единого мнения на этот счет нет и быть не может. Каждый волен поступать так, как ему нравится. Но в любом случае желательно выработать систему, чтобы вы всегда знали где искать содержимое того или иного сайта. Мы придерживаемся следующей схемы: все данные сайтов хранятся в папках с именем сайта внутри /var/www, корень директории при этом не используется.

Данная схема хороша тем, что все лежит в одном месте и логично структурировано по папкам. Т.е. даже незнакомый со структурой сервера администратор без труда найдет место размещения сайтов не заглядывая в конфиги веб-сервера.

Существует и другой вариант, который применяется в том случае, когда разные сайты принадлежат разным пользователям, в этом случае их содержимое логично будет расположить в домашних папках.

Также никто не мешает вам выработать вам свой вариант хранения данных, в зависимости от ваших потребностей и предпочтений.

Определившись со схемой хранения перейдем к настройкам сервера. Прежде всего создадим директории для сайтов и назначим их владельцем веб-сервер:

Откроем конфигурационный файл /etc/lighttpd/lighttpd.conf и найдем там опцию:

Которая указывает корневую папку веб-сервера по умолчанию. Содержимое данной папки будет выведено, например, если обратиться к веб-серверу по IP-адресу. По умолчанию там будет страница-заглушка веб-сервера. Более правильным и логичным будет отдавать по умолчанию один из сайтов, например, example1.com, поэтому приводим опцию к виду:

Теперь опишем наши виртуальные хосты, для этого создаем в конце конфигурационного файла секции со следующим содержимым:

Это минимальный набор опций для хоста. Первая строка указывает путь к корневой директории сайта, вторая и третья к логам ошибок и доступа соответственно. Если этого не сделать, то логи всех сайтов будут писаться в один файл, что неудобно.

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

Также настройки сайтов можно размещать в отдельных файлах, это позволит быстро включать и выключать необходимые сайты не прибегая к правке конфигурационного файла. Для этого в директории /etc/lighttpd/conf-available создадим файл конфигурации сайта:

После чего внесем в него указанное выше содержимое секции. Для включения сайта достаточно сделать символьную ссылку с файла конфигурации сайта в директорию /etc/lighttpd/conf-enabled:

Для отключения, соответственно, удаляем ссылку, не затрагивая сам файл конфигурации сайта.

Казалось бы, можно перезапускать веб-сервер и переходить к работе с сайтами. Но не спешите, мы забыли про www. Сегодня, особенно далекие от администрирования веб-серверов, пользователи считают www необязательной «приставкой» перед именем домена, в тоже время с точки зрения веб-сервера и системы DNS www является полноценным хостом (доменом третьего уровня, поддоменом) в зоне имен родительского домена.

Технически сайты www.example.com и test.example.com абсолютно равнозначны, это домены третьего уровня, содержимое которых может быть совершенно произвольным и не обязано совпадать с содержимым сайта example.com. Исторически же сложилось так, что на поддомене www принято размещать сайт родительского домена, эта традиция восходит к временам становления интернета, когда сам факт наличия доменного имени совсем не предполагал наличия на нем веб-сайта. Доменное имя всего лишь представляло собой некоторое адресное пространство, внутри которого могли существовать различные хосты и сервисы.

Например, в домене example.com могли существовать почтовый, FTP и веб сервера. В то же время было выработано соглашение, по которому хосты различных службы получали типовые имена, веб сервер — www, почтовый — mail и т.д. Поэтому, чтобы просмотреть веб-сайт в домене example.com вы должны были обратиться к его веб-серверу — www.example.com.

По мере роста вычислительных мощностей стало возможно держать все указанные службы на одном сервере, а развитие интернета стало подразумевать обязательное наличие сайта по доменному имени, что уже не требовало обязательного указания www перед именем сайта.

Читайте также:  Установка ксенона в линзованный галоген

На сегодня ситуация такова, что для пользователей имена www.example.com и example.com являются одним и тем же адресом, в то же время технически представляя два разных хоста. Поэтому требуется принять ряд технических мер, для того чтобы пользователи по любому из вариантов адреса получали одинаковое содержимое.

Мы не видим никаких оснований использовать www в имени сайта, поэтому наиболее очевидным решением будет редирект с домена www на родительский домен. Для этого в файл /etc/lighttpd/lighttpd.conf нужно добавить следующую секцию:

Это позволит автоматически перенаправлять пользователей, набравших в адресе сайта www на сайт без www для любого обслуживаемого данным веб-сервером домена. В последних версиях lighttpd данный мод уже входит в комплект поставки, для его активации необходимо создать символьную ссылку:

После чего убедитесь, что в /etc/lighttpd/lighttpd.conf в секции server.modules включен mod_redirect, в противном случае раскомментируйте эту строку:

Теперь можно перезапустить веб-сервер и перейти к работе с сайтами:

Не следует забывать про www и при настройке DNS-зоны домена. Вы в обязательном порядке должны создать две записи типа A:

Обе записи должны указывать на ваш веб-сервер. Аналогичные настройки вы должны осуществить на внутреннем DNS-сервере для доступа к сайту из внутренней сети.

Если вы используете Microsoft DNS сервер, то вам нужно создать зону example.com, а в ней две записи, пустую и для хоста www, указывающие на адрес веб-сервера.

Для используемого нами на платформе Linux dnsmasq потребуется для каждого сайта создать две записи:

Аналогичные записи следует создать и во всех иных случаях, для этого обратитесь к документации по используемому вами DNS-серверу.

источник

Записки IT специалиста

Технический блог специалистов ООО»Интерфейс»

Настраиваем простой веб-сервер на базе lighttpd.

Мы часто используем lighttpd в качестве встроенного веб-сервера для различных служб (например веб-панелей и т.п.), в то же время многим нашим читателям нужен простой и легкий веб-сервер для размещения своих внутрисетевых ресурсов. Сегодня мы расскажем как сделать такой сервер на базе lighttpd.

Для придания законченности материалу мы будем рассматривать установку веб-сервера с нуля на отдельную машину, в тоже время ничто не мешает использовать уже существующие инсталляции lighttpd, в таком случае ряд компонентов уже будет у вас установлен и ряд действий описанных в данной статье можно будет пропустить.

Мы развернули в нашей тестовой лаборатории следующую схему:

  • Роутер, настройка которого описана в данной статье, имеет IP-адрес 10.0.0.1.
  • Веб-сервер, настройкой которого мы займемся, имеет IP-адрес 10.0.0.145
  • Рабочие станции, получают сетевые настройки автоматически.

Наша задача: развернуть на веб-сервере внутренний ресурс по адресу http://site.local и сделать возможным использование для него любых современных движков (например Joomla). В качестве операционной системы сервера будем использовать Ubuntu 10.04.3 x64 со всеми последними обновлениями.

Прежде всего установим необходимые для администрирования пакеты mc и OpenSSH:

Теперь мы можем задвинуть сервер на полку в серверной и производить все операции с ним удаленно через SSH, например используя PuTTY.

Прежде всего установим сам веб-сервер:

После установки он сразу готов к работе, в чем можно убедиться набрав в браузере IP-адрес нашего сервера. Вы должны увидеть стандартную страницу-заглушку сервера:

Это хорошо, но нам нужно чтобы пользователи могли обращаться к сайту набирая его имя. Для этого в /etc/lighttpd/lighttpd.conf добавим следующую секцию:

Которая описывает наш хост и задает для него корневую директорию, так как мы собираемся размещать один сайт, то мы указали для него директорию используемую веб-сервером по умолчанию, т.е. /var/www. Подобным образом мы можем разместить на сервере несколько сайтов, указав для каждого свою корневую директорию, например /var/www/site.local и /var/www/site1.local [1]. Перезапустим веб-сервер:

Осталось только сообщить компьютерам нашей сети, что сайт site.local обслуживается нашим веб-сервером по адресу 10.0.0.145, это можно сделать прописав соответствующие строки в файле hosts на каждой рабочей станции, но лучше сделать это централизованно. Так как у нас в сети развернут кеширующий DNS (Dnsmasq) будет глупо не воспользоваться его возможностями. Для этого на роутере в конфигурационном файле /etc/dnsmasq.conf добавим следующие строки:

Если теперь мы наберем в браузере site.local, то также увидим страницу-заглушку веб-сервера.

Теперь на нашем сервере можно размещать свои веб-странички, но как это сделать? Обычно на хостингах для доступа к содержимому сайтов используют FTP, в нашем случае мы не видим смысла использовать дополнительный сервис, так как установленный OpenSSH сервер дает возможность передачи файлов по защищенному протоколу SFTP. Никаких дополнительных настроек для этого не потребуется, достаточно в любом поддерживающем SFTP клиенте (например FileZilla) указать имя хоста, логин и пароль (вашего пользователя на веб-сервере) и порт подключения 22 или sftp://site.local в имени хоста.

Читайте также:  Установка пластикового бассейна в земле

Создадим в блокноте проверочную HTML страницу и сохранив ее под именем index.html разместим в папке /var/www нашего сервера (не забудьте установить права 777 на /var/www):

Если все сделано правильно, то набрав адрес сайта вы должны увидеть вместо заглушки нашу страничку:

Современные веб-технологии предусматривают широкое использование т.н. «движков», для поддержки которых требуются PHP и MySQL, поэтому самое время добавить их к нашему серверу. Сначала установим PHP:

Затем в /etc/php5/cgi/php.ini найдем, раскомментируем и приведем к следующему виду строку:

Теперь включим поддержку PHP в lighttpd:

Для проверки создадим в блокноте файл следующего содержания:

И сохранив его как test.php разместим в /var/www нашего сервера, затем наберем в браузере http://site.local/test.php после чего вы увидите стандартную страницу с информацией о РНР:

Следующим шагом установим сервер баз данных MySQL и модуль PHP для работы с ним:

По умолчанию MySQL сервер использует кодировку latin1, в то время как большинство современных движков работают в UTF-8. Поэтому откроем /etc/mysql/my.cnf и добавим в секции [client] и [mysqld] следующие строки:

Для удобного управления СУБД установим пакет phpMyAdmin:

В процессе установки не забудьте указать используемый вами веб-сервер, в нашем случае lighttpd, инсталлятор сам произведет все требуемые настройки.

Набрав в браузере http://site.local/phpmyadmin вы окажетесь на страничке входа данной утилиты, для авторизации используйте имя пользователя root и пароль указанный на этапе установки MySQL. В данном случае не стоит путать пользователя root c одноименным системным пользователем, в данном случае речь идет о суперпользователе СУБД.

В заключение установим на наш сервер популярный движок Joomla. Для этого скачаем с официального сайта необходимые пакеты, разместим файлы движка в /var/www (предварительно удалив все содержимое папки) и установив необходимые права на папки и файлы (см. инструкции к движку) начнем установку просто набрав в браузере адрес сайта.

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

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

источник

Повышаем безопасность стека web-приложений (виртуализация LAMP, шаг 5/6)

Настройка web-сервера Lighttpd на работу со статическими файлами сетевой файловой системы (NFS)

Пятый урок цикла статей по настройке web-стека LAMP на виртуальных машинах будет посвящен обслуживанию статических файлов.

lighttpd web-сервер отвечает за предоставление доступа через HTTP или HTTPS протокол к статическому контенту. В этом примере я собираюсь установить и использовать Lighttpd web-сервер, привязав DocumentRoot к vm05:/exports/static mounted смонитрованной в /var/www/static. Все приведенные ниже команды вам необходимо вводить исключительно на vm01 с IP-адресом 192.168.1.10.

Настройка NFS-клиента

С помощью yum-менеджера установим пакеты NFS-клиента:

Включим службы NFSv4-клиента:

/etc/idmapd.conf настройки nfs-клиента

Отредактируем файл конфигурации nfs-клиента

Убедитесь, что параметры выставлены ​​в соответствии с доменным именем NFS-сервера:

Сохраните и закройте файл. Запустим все службы NFS-клиента:

Создание учетной записи пользователя

Мы будем запускать web-сервера Lighttpd только из под пользователя apache. Что бы добавить учетную запись пользователя в Linux, введем следующие команды:

Монтируем файловую систему

Введите следующую команду:

Смонтируем /exports/static папку файловой nfs-системы к /var/www/static

Отредактируем файл /etc/fstab:

Монтирование файловой системы через /etc/fstab

Сохраним и закроем файл. Убедимся, что netfs-служба включена:

И, наконец, убедимся в том, что пользователь apache видит наши файлы

Обратите внимание, что root-пользователь или любой другой пользователь не видит /var/www/ static из-за установленной нами политики безопасности. Это единственный lighttpd-пользователь, имеющий права на доступ к DocumentRoot.

Установка Lighttpd web-сервера

Подключите EPEL-репозиторий и установите web-сервер Lighttpd

Настройка web-сервера Lighttpd

Отредактируем /etc/lighttpd/lighttpd.conf введя следующие команды:

Впишем следующие настройки:

Настройка iptables для доступа к web-серверу

Отредактируйте файл /etc/sysconfig/Iptables, добавив следующие параметры (убедитесь, что они прописаны до окончательных LOG и DROP настроек INPUT-цепочки):

Включаем Lighttpd

Врубаем браузер и ломимся на наш сервер:

Редакторский дайджест

Присылаем лучшие статьи раз в месяц

Читайте также:  Установка антенны в прокопьевске

Скоро на этот адрес придет письмо. Подтвердите подписку, если всё в силе.

Похожие публикации

Повышаем безопасность стека web-приложений (виртуализация LAMP, шаг 2/6)

Повышаем безопасность стека web-приложений (виртуализация LAMP, шаг 1/6)

Повышаем безопасность стека web-приложений (виртуализация LAMP)

Вопросы и ответы

Как поставить ioncube на сервер?

Как обновить версию php?

Как правильно установить pgadmin?

Почему не могу зайти на OTRS (Centos)?

Балансировка нагрузки между двумя серверами с одинаковым по?

AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Комментарии 11

В отдельно взятых случаях я бы еще подстраховал разработчиков и выставил дефолтный content-type как force-download:

Увы не могу ничего сказать на тему стабильности работы подобной схемы на Lighttpd, проверял работоспособность только на nginx. Наши реалии таковы, что зачастую разработчики не умеют и не хотят правильно работать с файлами, обычно от незнания специфики веб-серверов на которых работают/могут работать их разработки, отсюда и получаем что допускаются к загрузке расширения с пробелами в конце (очень частый случай, когда при проверке в какой нить функции IsImage делается trim/rtrim а при сохранении нет) или же загрузка файлов только с расширением (например .jpg — смертельный файл для проекта в связке nginx + клиент на IE), а отдача всей статики кроме разрешенной с force-download их от этого убережет.

нет, вопроса «нафига городить виртуалки» у меня не возникает — сами все крутим как раз в виртуалках

вопрос был «нафига использовать lighttpd и изначально закладывать его в архитектуру, если все равно в схеме уже используется nginx который с теми же задачами справляется лучше»? потому что добавление еще одной подобной (подобной тем, которые уже используются) технологии влечет за собой избыточное усложнение системы с точки зрения поддержки.

Во первых это перевод how-to, а не must-to. А во вторых, я бы рад был apache заменить на nginx + php-fpm, ну вот теперь представьте себе какой-нибудь 0day-эксплойт или специалиста по опрокидыванию nginx (то что мы с ними не знакомы — не означает, что их нет). И вот он пришел, а у нас — везде один и тот же софт, та же самая его версия. Он ломает верхний сервис, а все нижние — на такой же системе крутятся. А он пришел только ради каких-то файлов на vm05. В нашей схеме он хоть покорчится, какое-то время.
Про несовместимость легкости настройки и безопасности было сказано прежде в цикле этих статей. Смотрите, у г-на «дизайнера всея руси» Тютёмы Л. есть слоган: «Долго. Дорого. О-у-энно». Суть этого слогана в том, что в разработке сайтов есть три кита:

* скорость производства конечного продукта
* стоимость продукта и стоимость владения им
* качество

Суть заключается в том, что из трех китов заказчик может выбрать два. Не бывает быстро дешево и качественно, от чего-то заказчик должен отказаться или пойти на компромисы. Подобная модель, по заявлению российских и западных владельцев серверов, применима и к безопасности — там тоже есть какие-то киты. Я пока не могу их сформулировать, но они — есть. Два из них — легкость администрирования и безопасность. Третий, видимо, снова деньги. Может я и ошибаюсь.

А вы публично про свой проект не рассказывали на хабре? Помнится вы по комментам какой-то PHP-продакшен хаус с облаками и нагрузками. «Слейте», пжалста, в общих чертах, как решили свои задачи в вашей компании, если это не NDA. Если NDA — слейте в личку. ))

> И вот он пришел, а у нас — везде один и тот же софт, та же самая его версия. Он ломает верхний сервис, а все нижние — на такой же системе крутятся. А он пришел только ради каких-то файлов на vm05. В нашей схеме он хоть покорчится, какое-то время.

=)
вероятность поймать 0day-эксплойт в двух разных софтах в два раза вероятнее, чем в одном.
ну да ладно, это через шишки само прийдет

к сожалению пока это NDA. вероятно архитектура будет пересмотрена в ближайшее время и тогда можно будет в двух словах поделиться и проблемами и решениями.

PS: для статики сразу делайте отдельную внешнюю точку входа чтобы все обслуживалось с субдомена напрямую. тем более, что полшага для этого уже сделано

источник

Добавить комментарий