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/