CherryPy - 应用程序的部署

本章将更多地关注通过内置的 CherryPy HTTP 服务器启用基于 CherryPy 的应用程序的 SSL。

组态

Web 应用程序中需要不同级别的配置设置 -

  • Web 服务器 - 链接到 HTTP 服务器的设置

  • 引擎 - 与托管引擎相关的设置

  • 应用程序 - 用户使用的应用程序

部署

CherryPy 应用程序的部署被认为是一个非常简单的方法,可以从 Python 系统路径获得所有必需的包。在共享的 Web 托管环境中,Web 服务器将驻留在前端,允许主机提供程序执行筛选操作。前端服务器可以是 Apachelighttpd

本节将介绍一些在 Apache 和 lighttpd Web 服务器后面运行 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

基于 CherryPy 的应用程序可以支持 SSL。要启用 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/