웹릭

WEBrick
웹릭
원저작자다카하시 마사요시와 고토 유즈우
개발자루비 커뮤니티
안정된 릴리스
1.7.0[1] / 2020년 12월 11일; 19개월 전(2020년 12월 11일)
저장소
기입처루비
운영 체제크로스 플랫폼
이용가능기간:루비
유형웹 서버
면허증.2-일시 BSD 라이선스
웹 사이트www.ruby-lang.org/en/

WEBrick은 단순한 HTTP서버를 제공하는 Ruby 라이브러리입니다.WEBRIC은 주로 다카하시[2][3] 마사요시, [2][3]고토 유우조 등에 의해 작성되었으며, 소프트웨어 개발의 오픈 소스 모델을 통해 다른 개발자들의 공헌을 받고 있다.HTTP 기반 서버, HTTPS 서버, 프록시 서버 및 가상 호스트 [4]서버 등 다양종류의 서버에 대해 기본 액세스 인증과 다이제스트 액세스 인증사용합니다.HTTP 대신 Day Time Protocol을 사용하는 Day Time Server와 같은 여러 비 HTTP 서버 구축도 WEBrick에 의해 촉진됩니다.Ruby on Rails 및 Padrino 프레임워크에서 개발 환경에서 애플리케이션을 테스트하고 적은 부하를 위한 프로덕션 모드로 사용합니다.현재는 Ruby 표준 [2]라이브러리의 일부가 되었습니다.

역사

WEBrick은 일본 엔지니어링 잡지 Open Design의 "Internet Programming with Ruby"라는 기사에서 아이디어를 얻었다.처음에는 Ruby를 이용한 HTTP 서버 개발을 위한 툴킷으로 개발되었습니다.오픈 소스 모델의 특성과 전 세계 여러 Ruby 개발자들의 기여로 인해 WEBrick은 크게 강화되었고 Ruby 1.8.[3]0에서 표준 라이브러리로 번들되었습니다.WEBrick ERB Handler와 WEBrick Proxy Server는 Ruby 1.9.3에서 처음 도입되었으며 WEBrick Virtual Host는 Ruby 2.0.0에서 도입되었습니다.

사용.

WEBrick 서버는 서블릿 언어만 인식합니다.CGI 스크립트, ERB 페이지, 루비 블록 및 디렉토리 목록을 처리하여 웹 애플리케이션을 제공하거나 호스트 단위 또는 경로 단위로 요청 URI를 처리하기 위해 프로그래머에 의해 결합된 여러 개의 독립된 서블릿을 사용합니다.예를 들어 HTTPServlet:FileHandler,[3] HTTPServlet:: ProcHandler,[3] HTTPServlet:CGIHandler,[3] HTTPServlet:ERBHandler[3] WEBrick과 함께 제공되는 표준 서블릿의 예입니다.

WEBRIC은 Ruby에 포함되어 있기 때문에 사용자는 추가 비용 없이 이용할 수 있습니다.WEBrick은 완전히 Ruby로 작성되었으며 HTTP, HTML, RHTML 등 여러 표준을 지원합니다.개발 단계에서는 WEBrick이 이미 Rails 프레임워크에 내장되어 있기 때문에 별도의 웹 서버를 설치할 필요가 없습니다.Ruby 어플리케이션이 Rails에서 proc 파일 없이 전개될 때 기본 웹 서버입니다.또, Ruby 로 완전하게 실장되어 있기 때문에, WEBrick 로부터 Rails 애플리케이션으로의 다이렉트 콜이 가능합니다.전체적으로 봤을 때 개발 시 테스트를 위한 신뢰성과 낮은 구성 옵션을 제공합니다.

서버 인스턴스화

HTTP 서버 인스턴스화

다음 명령을 사용하여 필요한 [2]포트로 HTTP 서버를 시작합니다.

# 필요조건에 WEBrick 클래스 포함 요구하다 'Webrick  # FileHandler Servlet은 사용자에게 제공할 파일을 선택할 수 있는 옵션을 제공합니다. # 다음 코드는 'myapp' 폴더에서 서비스를 제공하는 방법을 보여 줍니다. 뿌리 = 파일.expand_path '/var/myapp/'  # 루트 폴더에서 문서를 제공하는 포트 1234에서 HTTPServer.new를 사용하여 새 서버 인스턴스화 서버 = 웹릭::HTTPS 서버.신규 : 포트 => 1234, : DocumentRoot => 뿌리  # 다음 프로시저를 사용하여 서버 조작을 커스터마이즈합니다. 서버.mount_filename(마운트_filename(실행) '/' 하다  부탁한다, 대답    대답. = 안녕, 세상아! 끝.  # 다음 명령어는 서버를 셧다운하기 위한 후크를 제공합니다(대부분 Ctrl+C를 사용합니다). 함정('INT') {서버.셧다운}  # 서버 부팅 서버.개시하다 

서블릿을 마운트하여 [5]프로세서와 비교하여 고급 사용자 지정 동작을 제공하여 모듈성을 높일 수 있습니다.

가상 호스트 시작

WEBRIC은 리스닝 포트를 만듭니다.「가상 호스트」로서 다른 다양한 포토를 동시에 작성할 수도 있습니다.이 포토는,[2] 다음과 같이 수신하지 않습니다.

#수신하지 않는 가상 호스트 생성 호스트 = 웹릭::HTTPS 서버.신규 : 서버명 => 'vhost.filename'을 클릭합니다.,                                 :듣지 않음 => 진실의, # ...  # 위에서 작성한 가상 호스트의 마운트 방법은 HTTP 서버의 마운트 방법과 동일합니다. 호스트.마운트 '/', ...  # 이 호스트는 리스닝 서버 호스트에 마운트되면 가상 호스트로서 기능합니다. 서버.virtual_host 호스트 

: DocumentRoot를 제공하거나 요청 URI를 처리하도록 서블릿 인스턴스를 설정해야 합니다.그렇지 않으면 404 오류가 반환됩니다.

HTTPS 서버 인스턴스화

SSL을 유효하게 해 SSL 증명서명을 지정하는 것만으로,[2] 서버를 재기동할 때마다 변경되는 자기 서명 증명서를 사용해 HTTPS 서버를 개시할 수 있습니다.

# webrick 외에 SSL 기능에도 webrick/https가 필요합니다. 요구하다 'Webrick 요구하다 'Webrick/webrick'  # 증명서 이름 제공.단, 이것은 자기서명증명서가 됩니다. cert_name = [%w[CN 로컬 호스트],]  # SSL을 유효하게 해, 증명서명을 지정하면, HTTPS 서버가 인스턴스화 됩니다. 서버 = 웹릭::HTTPS 서버.신규(: 포트 => 1234,                                  : SSlenable => 진실의,                                  : SSL Cert Name => cert_name) 

단, 다음과 같이 HTTPS 서버를 인스턴스화하기 위해 미리 결정된 키와 증명서를 제공할 수도 있습니다.

# 위의 두 가지 외에 SSL 증명서와 키를 읽으려면 openssl이 필요합니다. 요구하다 '슬롯'  # 로컬 디렉토리에서 저장된 증명서와 그 시그니처 키를 읽습니다. 증명하다 = OpenSSL::X509::인증서..신규 파일.읽어주세요 '/var/myapp/cert.pem'  = OpenSSL::PKey::RSA.신규 파일.읽어주세요 '/var/myapp/pkey.pem'  # HTTPServer.new를 사용하여 인스턴스화하면서 증명서와 키를 별도의 파라미터로 전달합니다. 서버 = 웹릭::HTTPS 서버.신규(: 포트 => 1234,                                  : SSlenable => 진실의,                                  : SSL 증명서 => 증명하다,                                  : SSLPrivateKey => ) 

프록시 서버 시작

WEBrick은 GET,[2] HEAD 및 POST 요청을 프록시할 수도 있습니다.

# 프록시 서버의 인스턴스화는 HTTPProxyServer servlet에 의해 처리된다는 점을 제외하고는 유사합니다. 요구하다 'webrick/webroxy' 프록시 = 웹릭::HTTPProxy 서버.신규 : 포트 => 1234  # 현재 스레드에서 후크 아웃 제공 함정 'INT' 하다 프록시.셧다운 끝. 

제한 사항

운영 환경에서 사용되는 대부분의 서버와 달리 WEBrick은 기본적으로 [6]단일 스레드 웹 서버이기 때문에 확장성이 없습니다.따라서 동시에 여러 요구를 처리할 수 없으며 후속 요구는 이전 요구가 모두 처리될 때까지 대기해야 하므로 지연이 크게 발생합니다.따라서 개발자들은 Rails 애플리케이션을 [7]도입하기 위해 LighttpdMongrel과 같은 다른 멀티 스레드 풀 웹 서버를 선호합니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ "Release 1.7.0". 11 December 2020. Retrieved 18 December 2020.
  2. ^ a b c d e f g "Module: WEBrick (Ruby 2.3.1)". ruby-doc.org. Retrieved 2016-09-22.
  3. ^ a b c d e f g Gnome의 WEBrick 가이드
  4. ^ 웹 서버가 웹 애플리케이션 에너지 사용에 미치는 영향 조사(IEEE)
  5. ^ 프로세서
  6. ^ Heroku Ruby 기본 웹 서버
  7. ^ NetBeans Ruby and Rails IDE with JRuby (FirstPress) By Chris Kutler, Brian Leonard

외부 링크