CherryPy - 应用程序的部署
本章将更多地关注通过内置 CherryPy HTTP 服务器启用的基于 CherryPy 的应用程序 SSL。
配置
Web 应用程序需要不同级别的配置设置 -
Web 服务器- 链接到 HTTP 服务器的设置
引擎- 与引擎托管相关的设置
应用程序- 用户使用的应用程序
部署
CherryPy 应用程序的部署被认为是一种非常简单的方法,其中所有必需的包都可以从 Python 系统路径获取。在共享网络托管环境中,网络服务器将驻留在前端,允许主机提供商执行过滤操作。前端服务器可以是 Apache 或lighttpd。
本节将介绍一些在 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/