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/