Конфигурируем веб-сервер Yaws на Erlang
Posted on | August 2, 2011 | No Comments
Warning: count(): Parameter must be an array or an object that implements Countable in /var/www/dezhik.ru/wp-content/plugins/wp-syntax/wp-syntax.php on line 76
Сейчас начинаю делать проект на Erlang и встала необходимость выбора веб-сервера. Выбор пал на Yaws v.1.90 (расш. Yet Another Web Server) мне понравилась его заявленная высокая отказоустойчивость, максимальное количество одновременно обрабатываемых запросов и то, что проект продолжает развиваться, например в Yaws 1.90 от 24.05.2011 добавили поддержку Websockets. По ходу установки и настройки сервера я решил написать небольшую статью в помощь начинающим. Самое интересное под катом..
Установим веб-сервер (Erlang установится автоматически, если не был установлен ранее), также в дистрибутиве будет БД Mnesia, тоже написанная на Erlang
$ sudo apt-get install yaws
или
$ sudo aptitude install yaws
Основной конфигурационный файл лежит в /etc/yaws/yaws.conf, вот простой пример Вот простой конфиг-файл:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | max_num_cached_files = 8000 max_num_cached_bytes = 6000000 logdir = /var/log/yaws <server www.mydomain.org> port = 80 listen = 192.168.128.31 docroot = /var/yaws/www access_log = false <auth> dir = secret/dir1 user = jonny:verysecretpwd user = benny:thequestion user = ronny:havinganamethatendswithy </auth> </server> |
logdir = Dir
Устанавливаем директорию для логов. Yaws ведёт несколько логов:
- в report.log пишется лог ошибок сервера,
- в
.access access-лог для каждого виртуального хоста, - в
.auth сообщения связанные с http auth - trace.http и trace.traffic специализированные, нужно включать отдельно
log_wrap_size = int
Макс размер лог-файла. При его превышении файл будет усекаться.
access_log = true | false
Вести или нет access-лог. default: true
ebin_dir = Dir
Установка директории для поиска Erlang файлов. default: “yaws_dir”/examples/ebin
include_dir = Dir
Директория дли Erlang include-файлов default: “yaws_dir”/examples/include
server_signature = String
Устанавливает Server: в header ответа, стандартный “Server: yaws/%VSN%, Yet Another Web Server”.
ysession_mod = Module
Установка механизма хранения сессий отличного от стандартного (ETS таблицы). Основной минус ETS таблиц – потеря сессионых кукиз при перезапуске сервера.
Установка редиректов в Yaws
<redirect> ... </redirect>
Блок описания редиректов, внутри определяем параметры
Path = URL | File
При запросе страниц начинающихся с Path редиректим на соответствующую в URL, например:
1 2 3 4 | <redirect> /foo = http://site.org/zapp /bar = /tomato.html </redirect> |
Получим:
http://abc.com/foo -> http://site.org/zapp/foo
http://abc.com/foo/test -> http://site.org/zapp/foo/test
Однако, изменив 2 строку конфига на /foo == http://site.org/zapp
, мы получим
http://abc.com/foo/test/abc -> http://site.org/zapp
Немного о кэшировании в Yaws (cache in Yaws web-server):
max_num_cached_files = int
Максимальное количество кэшируемых файлов. Yaws кэширует частозапрашиваемые файлы в RAM.
max_size_cached_file = int
Максимальный размер кэшируемого файла.
max_num_cached_bytes = int
Максимальный размер RAM памяти, выделяемой под кэш. Исчисляется в байтах.
cache_refresh_secs = int
Время жизни кэша. При разработке удобнее поставить 0. default: 30 sec
Настройки подключений в Yaws (config connections in Yaws web-server)
max_connections = nolimit | int
Максимальное количество одновременных подключений
keepalive_timeout = TimeInMilliseconds | infinity
Какое время будет жить подключение, если не будет сразу закрыто.
keepalive_maxuses = nolimit | int
Если установлено – keepalive соединение не будет использовано более int раз.
Включаем поддержку скриптов (PHP, CGI) в Yaws
allowed_scripts = ListOfSuffixes
default: allowed_scripts = yaws php cgi fcgi
php_handler = <Type, Spec>
Указываем директорию где установлен интерпретатор для PHP скриптов.
php_handler = <cgi, Filename>
php_handler = <fcgi, Host:Port>
Использовать следующий fastcgi сервер для fcgi-файлов, пример: php_handler = <fcgi, 127.0.0.1:54321>
Кратко об установке WWW аутенфикации на Yaws
<auth> ... </auth>
Блок описания структуры и параметров аутенфикации. Описывается в блоке <server>..</server>
dir = Dir
Установка директории для входа в которую нужна www аутенфикация.
user = User:Password
Установка реквизитов доступа, user директив может быть несколько.
allow = all | ListOfHost
Кому разрешен доступ к аутенфикации/материалам. Список хостов задаётся через запятую.
deny = all | ListOfHost
Кому запрещён доступ.
<opaque> .... </opaque>
Игнорируемый сервером контекст, который может быть использован приложениями.
Заполняется ‘Key = Value’ директивами, которые потом можно получить из приложений в виде кортежей {Key, Value}
Запустить теперь Yaws с использованием нашего конфигурационного файла можно так:
$ yaws --daemon --conf DIR/ConfigFileName
Comments
Warning: count(): Parameter must be an array or an object that implements Countable in /var/www/dezhik.ru/wp-includes/class-wp-comment-query.php on line 399