CherryPy-애플리케이션 배포

이 장에서는 내장 된 CherryPy HTTP 서버를 통해 활성화 된 CherryPy 기반 애플리케이션 SSL에 대해 자세히 설명합니다.

구성

웹 애플리케이션에 필요한 다양한 수준의 구성 설정이 있습니다.

  • Web server − HTTP 서버에 연결된 설정

  • Engine − 엔진 호스팅과 관련된 설정

  • Application − 사용자가 사용하는 애플리케이션

전개

CherryPy 애플리케이션의 배포는 Python 시스템 경로에서 필요한 모든 패키지를 사용할 수있는 매우 쉬운 방법으로 간주됩니다. 공유 웹 호스팅 환경에서 웹 서버는 호스트 공급자가 필터링 작업을 수행 할 수 있도록 프런트 엔드에 상주합니다. 프런트 엔드 서버는 Apache 또는lighttpd.

이 섹션에서는 Apache 및 lighttpd 웹 서버 뒤에서 CherryPy 애플리케이션을 실행하는 몇 가지 솔루션을 제공합니다.

cherrypy
def setup_app():

class Root:
@cherrypy.expose
def index(self):
   # Return the hostname used by CherryPy and the remote
   # caller IP address
	
return "Hello there %s from IP: %s " %
(cherrypy.request.base, cherrypy.request.remote.ip)
cherrypy.config.update({'server.socket_port': 9091,
   'environment': 'production',
   'log.screen': False,
   'show_tracebacks': False})
	
cherrypy.tree.mount(Root())
if __name__ == '__main__':

setup_app()
cherrypy.server.quickstart()
cherrypy.engine.start()

SSL

SSL (Secure Sockets Layer)CherryPy 기반 애플리케이션에서 지원 될 수 있습니다. SSL 지원을 활성화하려면 다음 요구 사항을 충족해야합니다.

  • 사용자 환경에 PyOpenSSL 패키지를 설치하십시오.
  • 서버에 SSL 인증서와 개인 키가 있어야합니다.

인증서 및 개인 키 만들기

인증서 및 개인 키의 요구 사항을 다루겠습니다.

  • 먼저 사용자는 개인 키가 필요합니다.
openssl genrsa -out server.key 2048
  • 이 키는 암호로 보호되지 않으므로 보호 기능이 약합니다.
  • 다음 명령이 발행됩니다-
openssl genrsa -des3 -out server.key 2048
  • 프로그램에는 암호가 필요합니다. OpenSSL 버전에서 빈 문자열을 제공 할 수 있다면 그렇게하십시오. 그렇지 않으면 기본 암호를 입력하고 다음과 같이 생성 된 키에서 제거합니다.

openssl rsa -in server.key -out server.key
  • 인증서 생성은 다음과 같습니다.
openssl req -new -key server.key -out server.csr
  • 이 프로세스는 몇 가지 세부 정보를 입력하도록 요청합니다. 이렇게하려면 다음 명령을 실행해야합니다.

openssl x509 -req -days 60 -in server.csr -signkey
server.key -out server.crt
  • 새로 서명 된 인증서는 60 일 동안 유효합니다.

다음 코드는 구현을 보여줍니다-

import cherrypy
import os, os.path

localDir = os.path.abspath(os.path.dirname(__file__))
CA = os.path.join(localDir, 'server.crt')
KEY = os.path.join(localDir, 'server.key')
def setup_server():

class Root:
@cherrypy.expose
def index(self):
   return "Hello there!"
	
cherrypy.tree.mount(Root())
if __name__ == '__main__':

setup_server()
cherrypy.config.update({'server.socket_port': 8443,
   'environment': 'production',
   'log.screen': True,
   'server.ssl_certificate': CA,
   'server.ssl_private_key': KEY})
	
cherrypy.server.quickstart()
cherrypy.engine.start()

다음 단계는 서버를 시작하는 것입니다. 성공하면 화면에 다음 메시지가 표시됩니다.

HTTP Serving HTTPS on https://localhost:8443/