CherryPy - Triển khai ứng dụng

Chương này sẽ tập trung nhiều hơn vào SSL ứng dụng dựa trên CherryPy được kích hoạt thông qua máy chủ CherryPy HTTP tích hợp sẵn.

Cấu hình

Có các mức cài đặt cấu hình khác nhau được yêu cầu trong một ứng dụng web -

  • Web server - Cài đặt được liên kết với máy chủ HTTP

  • Engine - Cài đặt liên quan đến lưu trữ của công cụ

  • Application - Ứng dụng được người dùng sử dụng

Triển khai

Triển khai ứng dụng CherryPy được coi là một phương pháp khá dễ dàng trong đó tất cả các gói yêu cầu đều có sẵn từ đường dẫn hệ thống Python. Trong môi trường được lưu trữ trên web được chia sẻ, máy chủ web sẽ nằm trong giao diện người dùng cho phép nhà cung cấp máy chủ lưu trữ thực hiện các hành động lọc. Máy chủ front-end có thể là Apache hoặclighttpd.

Phần này sẽ trình bày một số giải pháp để chạy ứng dụng CherryPy đằng sau máy chủ web Apache và lighttpd.

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)có thể được hỗ trợ trong các ứng dụng dựa trên CherryPy. Để bật hỗ trợ SSL, các yêu cầu sau phải được đáp ứng:

  • Cài đặt gói PyOpenSSL trong môi trường của người dùng
  • Có chứng chỉ SSL và khóa riêng tư trên máy chủ

Tạo chứng chỉ và khóa cá nhân

Hãy giải quyết các yêu cầu của chứng chỉ và khóa riêng tư -

  • Trước tiên, người dùng cần một khóa riêng tư -
openssl genrsa -out server.key 2048
  • Khóa này không được bảo vệ bằng mật khẩu và do đó có khả năng bảo vệ yếu.
  • Lệnh sau sẽ được đưa ra:
openssl genrsa -des3 -out server.key 2048
  • Chương trình sẽ yêu cầu một cụm mật khẩu. Nếu phiên bản OpenSSL của bạn cho phép bạn cung cấp một chuỗi trống, hãy làm như vậy. Nếu không, hãy nhập cụm mật khẩu mặc định và sau đó xóa nó khỏi khóa đã tạo như sau:

openssl rsa -in server.key -out server.key
  • Việc tạo chứng chỉ như sau:
openssl req -new -key server.key -out server.csr
  • Quá trình này sẽ yêu cầu bạn nhập một số chi tiết. Để làm như vậy, lệnh sau phải được phát hành:

openssl x509 -req -days 60 -in server.csr -signkey
server.key -out server.crt
  • Chứng chỉ mới được ký sẽ có giá trị trong vòng 60 ngày.

Đoạn mã sau đây cho thấy sự triển khai của nó:

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()

Bước tiếp theo là khởi động máy chủ; nếu bạn thành công, bạn sẽ thấy thông báo sau trên màn hình của mình -

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