- CherryPy 教程
- CherryPy - 首頁
- CherryPy - 簡介
- CherryPy - 環境搭建
- CherryPy - 術語表
- 內建HTTP伺服器
- CherryPy - 工具箱
- CherryPy - 一個可執行的應用
- CherryPy - Web 服務
- CherryPy - 表現層
- CherryPy - Ajax 的使用
- CherryPy - 演示應用
- CherryPy - 測試
- 應用部署
- CherryPy 有用資源
- CherryPy - 快速指南
- CherryPy - 有用資源
- CherryPy - 討論
CherryPy - 應用部署
本章將重點介紹基於 CherryPy 的應用,透過內建的 CherryPy HTTP 伺服器啟用 SSL。
配置
Web 應用需要不同級別的配置設定:
Web 伺服器 - 與 HTTP 伺服器相關的設定
引擎 - 與主機引擎相關的設定
應用 - 使用者使用的應用
部署
CherryPy 應用的部署被認為是一種相當簡單的方法,所有需要的包都可以在 Python 系統路徑中找到。在共享的 Web 託管環境中,Web 伺服器將位於前端,允許主機提供商執行過濾操作。前端伺服器可以是 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
SSL(安全套接字層)可以在基於 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://:8443/
廣告