Yaws - лёгкий web сервер на Erlang

Август 30, 2010

Недавно на всех серверах кои я администрирую, решил сменить lighttpd на что либо ещё более лёгкое, и конечно же, под чем либо более лёгким, я имел в виду nginx. Однако, раз уж я захотел сменить web сервер, то я не мог не посмотреть из интереса на другие лёгкие web сервера, и не мог не заметить web сервер Yaws.

Yaws (Yet Another Web Server) - web сервер написанный на языке Erlang. На языке, который по праву считается крайне производительным. Тоже самое можно сказать и об самом web сервере: по сравнению с apache2, yaws - просто реактивный.

Yaws поддерживает два режима работы:

  • Как отдельный web сервер
  • Как интегрированный web сервер в другое erlang приложение

Я опишу первый вариант.

Установка

Для работы web сервера само собой требуется erlang. Он установится как зависимость от yaws:

sudo aptitude install yaws

Настройка

Конфиг у yaws'а крайне простой, и понятный. Всё что мне потребовалось сделать для работы, это добавить хосты, и несколько строчек для php. Кстати о виртуальных хостах. Мне очень сильно понравилось то, как организована работа с ними в yaws. Всё довольно просто, прозрачно и удобно.

# проверьте чтобы было установлено в true
pick_first_virthost_on_nomatch = true

<server localhost>
        port = 80
        listen = 0.0.0.0
        <redirect>
                / = example.com
        </redirect>
</server>

<server example.com>
        port = 80
        listen = 0.0.0.0
        docroot = /var/www/example.com
        dir_listings = true
</server>

Всё довольно просто и понятно. Вначале мы делаем редирект на основной домен при обращении к серверу по ip адресу, или другими обходными способами. Далее добавили один домен.

PHP

Yaws прекрасно работает с php. Всё что нужно - это добавить несколько строчек в файл конфигурации.

Во первых путь до php5-cgi:

php_exe_path = /usr/php/bin/php-cgi

И к каждому виртуальному хосту на котором нужен php, добавить allowed_scripts = php :

<server example.com>
        port = 80
        listen = 0.0.0.0
        docroot = /var/www/example.com
        dir_listings = true
        allowed_scripts = php
</server>

Этим не ограничиваются возможности yaws. Больше о его возможностях и документация - на официальном сайте Yaws.

Похожие записи:

  1. Thttpd - пожалуй, самый лёгкий и простой web сервер
  2. Немного про lightTPD, самую малость...
  3. Настраиваем простейший VPN сервер для дома
  4. Создаём свой git репозитарий с веб интерфейсом
  5. Монтирование удалённых каталогов с помощью SFTP

Тэги: , , , , , ,
В категориях: Linux, Tutorials by bosha

20 Комментариев к "Yaws - лёгкий web сервер на Erlang"

  1. Тормоз написал:

    Тоже к Эрлангу присматриваюсь, очень и очень интересный язык.

    [Ответить]

    bosha Отвечает:

    С довольно быстрым интерпритатором как говорят. Сам на нём не писал никогда. Просто стал интересен, особенно после ejabberd =]

    [Ответить]

  2. Juev написал:

    Хмм, и насколько выше производительность? Где тесты можно посмотреть?
    Какую нагрузку способен выдержать данный сервер? Умеет ли работать с php5-fpm??
    Есть ли возможность настроить реврайты? А будет ли работать wordpress?

    [Ответить]

    bosha Отвечает:

    Если верить википедии, то

    Произведенные в 2002 году тесты, сравнивающие Yaws и Apache, показали, что Apache 2.0.39 с работающим MPM не выдерживает нагрузку и в 4 000 одновременных подключений, в то время как Yaws продолжает работать и при 80 000 одновременных подключениях.

    Не знаю как работает с php5-fpm. Нигде не натыкался что кто-то пробовал, и упоминания об этом. Да и сам не пробовал.

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

    [Ответить]

    Juev Отвечает:

    Ага, это как раз по вышеприведенной ссылке видно. Интересно еще было бы посмотреть сравнение с Nginx, как я тут уже писал.
    Пока видел, что умеет работать с php-cgi, про все отсальное пока ничего не нашел.
    Про реврайты тоже нашел статью, в которой указывается, что проблемы теже, что и в Nginx, то есть у wordpress появляется index.php в путях при включенном ЧПУ, и да, существуют хаки, позволяющие с этим бороться.
    Попробовать что ли?? =))
    Прям заинтересовало!

    [Ответить]

  3. alexs написал:

    Juev

    http://www.sics.se/~joe/apachevsyaws.html

    [Ответить]

    Juev Отвечает:

    Спасибо! Интересно еще было бы посмотреть сравнение с Nginx...

    [Ответить]

  4. Juev написал:

    Мозг сломал... Вроде все верно настраиваю, и все равно не работает.
    Видно другой веб-сервер мешается, или я просто чего-то не понимаю.

    [Ответить]

    bosha Отвечает:

    А что не так? Что именно не работает? У меня кстати он тоже не сразу заработал. Тоже непонятно почему. Делал всё последовательно, и каждый шаг проверял сразу. В итоге заработало...

    [Ответить]

    Juev Отвечает:

    Разобрался... Оказалось, firewall все еще работал после удаления ispconfig. Он и блочил все запросы на нестандартные порты.
    А я все гадал, какого фига после перезагрузки сервера возвращаются правила iptables, которые я сам не задавал, и никак не мог понять, откуда они брались. В конце концов разобрался. Удалил и установил обычный ufw. Теперь нет проблем с сервисами...
    Начинаю эксперименты с Erlang и Lisp! =D

    [Ответить]

    bosha Отвечает:

    А ты это сразу на VPS'ке делаешь? o_O

    [Ответить]

  5. Juev написал:

    Попытался использовать yaws в качестве основного веб-сервера. Создал простенький html файл. Провел тесты на нагрузку. Результат более чем скромный, много ниже, чем у nginx.
    Может его еще доводить нужно до кондиции?? Пока не понятно.

    [Ответить]

  6. Тормоз написал:

    А я вот сейчас прямо в данный момент пробую поставить YAWS на удалённый сервер, куда и планирую переехать. Сумасшествие? :)

    [Ответить]

    Juev Отвечает:

    Поставить YAWS на сервер довольно просто. Вопрос в том, что именно вы на нем собираетесь размещать. PHP без смысла, статику тоже. Если только писать приложение на нем. Тогда имеет смысл...

    [Ответить]

    Тормоз Отвечает:

    Это почему без смысла PHP? Апач просто толстый очень и надоел ) И не хочу в нём разбираться.

    [Ответить]

    bosha Отвечает:

    Или тяга к экспериментам :) Я бы лучше apache+nginx накатил, но это я... =)

    [Ответить]

    Тормоз Отвечает:

    Апач+Нгинкс - это слишком попсово и очень толсто. Боша, ты почему до сих пор не сделал запоминание в форме? На каждый комментарий заполнять поля, это вообще жуть какая-то.

    [Ответить]

    bosha Отвечает:

    Пусть попсово, зато кошерно и может быть чуточку толсто ;)

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

    [Ответить]

    Тормоз Отвечает:

    Так поставь старый шаблон, нафиг людей мучать?

    [Ответить]

    bosha Отвечает:

    Его пилить надо. Хотя стоит пожалуй. Добавлю в todo на завтра.

    [Ответить]

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