WEBrick - WEBrick

WEBrick
Оригинальный автор (ы)Масаёси Такахаши и Юдзо Гото
Разработчики)Сообщество Ruby
Стабильный выпуск
1.6.1[1] / 29 сентября 2020; 55 дней назад (29 сентября 2020 г.)
Репозиторий Отредактируйте это в Викиданных
Написано вРубин
Операционная системаКроссплатформенность
Доступно вРубин
ТипВеб сервер
ЛицензияЛицензия BSD с двумя пунктами
Интернет сайтwww.ruby-lang.org/ en/

WEBrick это Рубин библиотека, обеспечивающая простые HTTP веб-серверы. WEBrick изначально был написан Масаёши Такахаши.[2][3] и Юдзо Гото,[2][3] с участием других разработчиков через модель с открытым исходным кодом разработки программного обеспечения. Оно использует базовая аутентификация доступа и дайджест-проверка подлинности доступа для разных видов серверы что он может создать - HTTP на базе сервера, HTTPS сервер Прокси сервер и виртуальный хост-сервер.[4] Создание нескольких серверов, отличных от HTTP, таких как сервер дневного времени, который использует Дневной протокол WEBrick также поддерживает HTTP, а не HTTP. Он используется Рубин на рельсах и Падрино фреймворки для тестирования приложений в среда разработки а также производство режим малых нагрузок. Теперь он является частью стандартной библиотеки Ruby.[2]

История

Идея WEBrick возникла из статьи под названием «Интернет-программирование с помощью Ruby» в японском инженерном журнале Open Design. Первоначально он разрабатывался как инструментарий для разработки HTTP-серверов с использованием Ruby. Из-за характера модель с открытым исходным кодом и вклад нескольких разработчиков Ruby со всего мира, WEBrick был значительно расширен и в конечном итоге был включен в качестве стандартной библиотеки из Ruby 1.8.0.[3] Обработчик WEBrick ERB и прокси-сервер WEBrick были впервые представлены в Ruby 1.9.3, а виртуальный хост WEBrick был включен из Ruby 2.0.0.

Применение

Сервер WEBrick понимает только язык сервлеты. Он использует несколько независимых сервлетов, объединенных вместе программистом, для обработки CGI скрипты, Страницы ERB, Рубиновые блоки и списки каталогов для предоставления веб-приложения или обслуживания запроса URI на основе каждого хоста или пути. Например, HTTPServlet :: FileHandler,[3] HTTPServlet :: ProcHandler,[3] HTTPServlet :: CGIHandler,[3] HTTPServlet :: ERBHandler[3] являются примерами стандартных сервлетов, которые поставляются с WEBrick.

WEBrick включен в Ruby и, следовательно, доступен пользователю без дополнительных затрат. WEBrick полностью написан на Ruby и поддерживает несколько стандартов, таких как HTTP, HTML и даже RHTML. На этапе разработки нет необходимости в установке отдельного веб-сервера, поскольку WEBrick уже встроен в среду Rails. Это веб-сервер по умолчанию, когда приложение Ruby развертывается без каких-либо procfile на рельсах. Более того, поскольку он полностью реализован на Ruby, прямые вызовы могут выполняться из WEBrick в приложение Rails. В целом, это надежный вариант с низкой конфигурацией для тестирования в процессе разработки.

Создание экземпляров серверов

Создание HTTP-сервера

Следующие команды используются для запуска HTTP-сервера на требуемом порту.[2]

# Включить класс WEBrick с требованиемтребовать "вебрик"# Сервлет FileHandler предоставляет возможность выбрать, какие файлы от пользователя обслуживать# Следующий код показывает, как обслуживать их из папки myappкорень = файл.expand_path '/ var / myapp /'# Создание экземпляра нового сервера с HTTPServer.new на порту 1234, обслуживающего документы из корневой папкисервер = WEBrick::HTTPServer.новый : Порт => 1234, : DocumentRoot => корень# Следующая процедура используется для настройки работы серверасервер.mount_proc '/' делать |запрос, ответ|  ответ.тело = 'Привет мир!'конец# Следующая команда предоставит ловушку для выключения сервера (часто выполняется с помощью Ctrl + C)ловушка('INT') {сервер.неисправность}# Запускаем серверсервер.Начните

Сервлеты могут быть смонтированы для обеспечения расширенного пользовательского поведения по сравнению с процедурой,[5] увеличить модульность.

Запуск виртуального хоста

WEBrick создает порт прослушивания. Одновременно могут быть созданы различные другие порты в качестве «виртуальных хостов», которые не слушают, как показано ниже:[2]

# Создание виртуального хоста, который не слушаетvhost = WEBrick::HTTPServer.новый :Имя сервера => 'vhost.example',                                :Не слушайте => правда, # ...# Монтирование виртуального хоста, созданного выше, аналогично тому, как был подключен HTTP-серверvhost.монтировать '/', ...# Этот хост при подключении к хосту слушающего сервера теперь будет действовать как виртуальный хостсервер.virtual_host vhost

: DocumentRoot должен быть предоставлен или должен быть установлен экземпляр сервлета для обслуживания запроса URI; в противном случае Ошибка 404 будет возвращен.

Создание экземпляра HTTPS-сервера

Просто включив SSL и предоставив имя сертификата SSL, сервер HTTPS может быть запущен с помощью самоподписанный сертификат это меняется при каждом перезапуске сервера.[2]

# В дополнение к webrick нам также потребуется webrick / https для функций SSLтребовать "вебрик"требовать 'webrick / https'# Предоставление имени сертификата. Однако это будет самозаверяющий сертификат.cert_name = [% w [CN localhost],]# Включение SSL и предоставление имени сертификата создаст экземпляр сервера HTTPSсервер = WEBrick::HTTPServer.новый(: Порт => 1234,                                 : SSLEnable => правда,                                 : SSLCertName => cert_name)

Однако для создания экземпляра HTTPS-сервера также могут быть предоставлены предварительно определенный ключ и сертификат, как показано ниже:

# В дополнение к двум вышеупомянутым нам понадобится openssl для чтения сертификатов и ключей SSLтребовать 'openssl'# Прочитать сохраненный сертификат и его ключ подписи из локального каталогасертификат = OpenSSL::X509::Сертификат.новый файл.читать '/var/myapp/cert.pem'pkey = OpenSSL::PKey::ЮАР.новый файл.читать '/var/myapp/pkey.pem'# Передайте сертификат и ключ как отдельные параметры при создании экземпляра с HTTPServer.newсервер = WEBrick::HTTPServer.новый(: Порт => 1234,                                 : SSLEnable => правда,                                 : SSLCertificate => сертификат,                                 : SSLPrivateKey => pkey)

Запуск прокси-сервера

WEBrick также может проксировать GET, HEAD и POST Запросы:[2]

# Создание прокси-сервера аналогично, за исключением того, что это обрабатывается сервлетом HTTPProxyServerтребовать 'webrick / httpproxy'доверенное лицо = WEBrick::HTTPProxyServer.новый : Порт => 1234# Обеспечение перехвата из текущего потокаловушка 'INT' делать доверенное лицо.неисправность конец

Ограничения

В отличие от большинства серверов, которые используются в производстве, WEBrick не масштабируется, поскольку по умолчанию это однопоточный веб-сервер.[6] Следовательно, несколько запросов одновременно не могут быть обработаны, и последующие запросы должны будут ждать, пока все предыдущие запросы будут обработаны, что приведет к большой задержке. Следовательно, разработчики предпочитают другие многопоточный полноценные веб-серверы, такие как Lighttpd и Дворняга для развертывания своих Рельсы Приложения.[7]

Смотрите также

использованная литература

  1. ^ «Релиз 1.6.1». 29 сентября 2020 г.. Получено 19 октября 2020.
  2. ^ а б c d е ж г «Модуль: WEBrick (Ruby 2.3.1)». ruby-doc.org. Получено 2016-09-22.
  3. ^ а б c d е ж г Руководство Gnome по WEBrick
  4. ^ Исследование влияния веб-серверов на энергопотребление веб-приложений - IEEE
  5. ^ proc
  6. ^ Веб-сервер Heroku Ruby по умолчанию
  7. ^ IDE NetBeans Ruby и Rails с JRuby (FirstPress) Крис Катлер, Брайан Леонард

внешние ссылки