Jump to content

WEBrick

WEBrick
Оригинальный автор(ы) Масаёши Такахаши, Юзо Гото и др. [1] [2]
Разработчик(и) Рубиновое сообщество
Стабильная версия
1.8.1 [3] / 27 января 2023 г .; 18 месяцев назад ( 27 января 2023 г. )
Репозиторий
Написано в Руби
Операционная система Кросс-платформенный
Доступно в Руби
Тип Веб-сервер
Лицензия Лицензия BSD из 2 пунктов
Веб-сайт www .только рубин .org /

WEBrick — это библиотека Ruby, предоставляющая простые HTTP веб-серверы . Он использует базовую аутентификацию доступа и дайджест-аутентификацию доступа для различных типов серверов , которые он может создавать: сервер на основе HTTP , сервер HTTPS , прокси-сервер и сервер виртуального хоста . [4] создание нескольких серверов, отличных от HTTP, таких как сервер дневного времени, который использует протокол дневного времени, WEBrick также облегчает а не HTTP. Он используется платформами Ruby on Rails и Padrino для тестирования приложений в среде разработки , а также в производственном режиме для небольших нагрузок. Теперь это часть стандартной библиотеки Ruby. [1]

WEBrick следует модели распространения с открытым исходным кодом .

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

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

[ редактировать ]

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

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

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

[ редактировать ]

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

[ редактировать ]

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

# Include WEBrick class with require
require 'webrick'

# FileHandler servlet provides the option to choose which files from user to serve
# The following code shows how to serve them from the folder 'myapp'
root = File.expand_path '/var/myapp/'

# Instantiating a new server with HTTPServer.new on port 1234 serving the documents from root folder
server = WEBrick::HTTPServer.new :Port => 1234, :DocumentRoot => root

# The following proc is used to customize the server operations
server.mount_proc '/' do |request, response|
  response.body = 'Hello, world!'
end

# The following command will provide a hook to shut down the server (often done with Ctrl+C)
trap('INT') {server.shutdown}

# Start the server
server.start

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

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

[ редактировать ]

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

#Creating a virtual host that doesn't listen
vhost = WEBrick::HTTPServer.new :ServerName => 'vhost.example',
                                :DoNotListen => true, # ...

# Mounting the virtual host created above similar to the way HTTP server was mounted
vhost.mount '/', ...

# This host, when mounted to the listening server host, will now act as a virtual host
server.virtual_host vhost

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

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

[ редактировать ]

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

# In addition to webrick, we will require webrick/https too for SSL functionalities
require 'webrick'
require 'webrick/https'

# Providing certificate name. This, however, will be a self-generated self-signed certificate
cert_name = [%w[CN localhost],]

# Enabling SSL and providing the certificate name will instantiate HTTPS server
server = WEBrick::HTTPServer.new(:Port => 1234,
                                 :SSLEnable => true,
                                 :SSLCertName => cert_name)

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

# In addition to the above two, we'll need openssl to read SSL certificates and keys
require 'openssl'

# Read the saved certificate and its signature key from the local directory
cert = OpenSSL::X509::Certificate.new File.read '/var/myapp/cert.pem'
pkey = OpenSSL::PKey::RSA.new File.read '/var/myapp/pkey.pem'

# Pass the certificate and the key as separate parameters while instantiating with HTTPServer.new
server = WEBrick::HTTPServer.new(:Port => 1234,
                                 :SSLEnable => true,
                                 :SSLCertificate => cert,
                                 :SSLPrivateKey => pkey)

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

[ редактировать ]

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

# Instantiating a proxy server is similar, except that it is handled by HTTPProxyServer servlet
require 'webrick/httpproxy'
proxy = WEBrick::HTTPProxyServer.new :Port => 1234

# Providing the hook out from the current thread
trap 'INT' do proxy.shutdown end

Ограничения

[ редактировать ]

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

См. также

[ редактировать ]
  1. ^ Jump up to: а б с д и ж «Модуль: WEBrick (Ruby 2.3.1)» . Ruby-doc.org . Проверено 22 сентября 2016 г.
  2. ^ Jump up to: а б с д и ж Руководство Gnome по WEBrick
  3. ^ «Выпуск 1.8.1» . 27 января 2023 г. Проверено 8 февраля 2023 г.
  4. ^ Исследование влияния веб-серверов на энергопотребление веб-приложений - IEEE.
  5. ^ процесс
  6. ^ Веб-сервер Heroku Ruby по умолчанию.
  7. ^ NetBeans Ruby и Rails IDE с JRuby (FirstPress), Крис Катлер, Брайан Леонард
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 5b2fc6d93c733bbda7799a7fe14ec46f__1722392460
URL1:https://arc.ask3.ru/arc/aa/5b/6f/5b2fc6d93c733bbda7799a7fe14ec46f.html
Заголовок, (Title) документа по адресу, URL1:
WEBrick - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)