WEBrick

редактировать
WEBrick
Автор (ы) Масаёси Такахаши и Юдзо Гото
Разработчик (и) Ruby Сообщество
Стабильный выпуск 1.6.0 / 30 ноября 2019 г. (2019-11-30)
Репозиторий Измените это в Wikidata
Написано наRuby
Операционная система Кросс-платформенность
Доступно вRuby
Тип Веб-сервер
Лицензия Лицензия BSD с двумя пунктами
Веб-сайтwww.ruby-lang.org

WEBrick - это библиотека Ruby, предоставляющая простые HTTP веб-серверы. WEBrick изначально был написан Масаеши Такахаши и Юдзо Гото при участии других разработчиков в рамках модели с открытым исходным кодом разработки программного обеспечения. Он использует базовую аутентификацию доступа и дайджест-аутентификацию доступа для различных типов серверов, которые он может создавать - сервер на основе HTTP, Сервер HTTPS, прокси-сервер и сервер виртуального хоста. WEBrick также способствует созданию нескольких серверов, отличных от HTTP, таких как дневной сервер, который использует дневной протокол, а не HTTP. Он используется фреймворками Ruby on Rails и Padrino для тестирования приложений в среде разработки , а также в режиме production для небольших нагрузок.. Теперь он является частью стандартной библиотеки Ruby.

Содержание
  • 1 История
  • 2 Использование
  • 3 Создание экземпляров серверов
    • 3.1 Создание экземпляра HTTP-сервера
    • 3.2 Запуск виртуального хоста
    • 3.3 Создание экземпляра HTTPS-сервера
    • 3.4 Запуск прокси-сервера
  • 4 Ограничения
  • 5 См. Также
  • 6 Ссылки
  • 7 Внешние ссылки
История

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

Использование

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

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

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

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

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

# Включить класс WEBrick с помощью require require ' webrick '# Сервлет FileHandler предоставляет возможность выбрать, какие файлы от пользователя обслуживать # Следующий код показывает, как обслуживать их из папки' myapp 'root = File.expand_path' / var / myapp / '# Создание нового сервера с HTTPServer.new на порту 1234, обслуживающем документы из корневой папки server = WEBrick :: HTTPServer.new: Port =>1234,: DocumentRoot =>root # Следующая процедура используется для настройки серверных операций server.mount_proc '/' do | request, ответ | response.body = 'Привет, мир!' end # Следующая команда предоставит ловушку для выключения сервера (часто выполняется с помощью Ctrl + C) trap ('INT') {server.shutdown} # Запуск сервера server.start

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

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

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

# Создание виртуального хоста, который не слушает vhost = WEBrick :: HTTPServer.new: ServerName =>' vhost.example ',: DoNotListen =>true, #... # Подключение виртуального хоста, созданного выше, аналогично тому, как был подключен HTTP-сервер vhost.mount' / ',... # Этот хост при подключении к слушающему серверу host, теперь будет действовать как виртуальный хост-сервер. virtual_host vhost

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

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

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

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

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

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

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

WEBrick также может проксировать GET, HEAD и POST r equests :

# Создание прокси-сервера аналогично, за исключением того, что оно обрабатывается сервлетом HTTPProxyServer require 'webrick / httpproxy' proxy = WEBrick :: HTTPProxyServer.new: Port =>1234 # Обеспечение перехвата из ловушки текущего потока ' INT 'do proxy.shutdown end
Ограничения

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

См. Также
Ссылки
  1. ^«Все версии webrick | RubyGems.org | хост вашего драгоценного камня сообщества». www.rubygems.org.com. Oracle. Проверено 11 августа 2020 г.
  2. ^ «Модуль: WEBrick (Ruby 2.3.1)». ruby-doc.org. Проверено 22 сентября 2016 г.
  3. ^ Руководство Gnome по WEBrick
  4. ^Исследование влияния веб-серверов на энергопотребление веб-приложений - IEEE
  5. ^proc
  6. ^веб-сервер Heroku Ruby по умолчанию
  7. ^NetBeans Ruby и Rails IDE с JRuby (FirstPress) Крис Катлер, Брайан Леонард
Внешние ссылки
Последняя правка сделана 2021-06-20 04:43:21
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте