CherryPy - Déploiement de l'application

Ce chapitre se concentrera davantage sur l'application SSL basée sur CherryPy activée via le serveur HTTP CherryPy intégré.

Configuration

Il existe différents niveaux de paramètres de configuration requis dans une application Web -

  • Web server - Paramètres liés au serveur HTTP

  • Engine - Paramètres associés à l'hébergement du moteur

  • Application - Application utilisée par l'utilisateur

Déploiement

Le déploiement de l'application CherryPy est considéré comme une méthode assez simple où tous les packages requis sont disponibles à partir du chemin système Python. Dans un environnement hébergé sur le Web partagé, le serveur Web résidera dans le frontal, ce qui permet au fournisseur d'hôte d'effectuer les actions de filtrage. Le serveur frontal peut être Apache oulighttpd.

Cette section présente quelques solutions pour exécuter une application CherryPy derrière les serveurs Web Apache et 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)peut être pris en charge dans les applications basées sur CherryPy. Pour activer la prise en charge SSL, les conditions suivantes doivent être remplies -

  • Avoir le package PyOpenSSL installé dans l'environnement de l'utilisateur
  • Avoir un certificat SSL et une clé privée sur le serveur

Créer un certificat et une clé privée

Traitons les exigences du certificat et de la clé privée -

  • Tout d'abord, l'utilisateur a besoin d'une clé privée -
openssl genrsa -out server.key 2048
  • Cette clé n'est pas protégée par un mot de passe et a donc une faible protection.
  • La commande suivante sera émise -
openssl genrsa -des3 -out server.key 2048
  • Le programme nécessitera une phrase secrète. Si votre version d'OpenSSL vous permet de fournir une chaîne vide, faites-le. Sinon, entrez une phrase de passe par défaut, puis supprimez-la de la clé générée comme suit -

openssl rsa -in server.key -out server.key
  • La création du certificat est la suivante -
openssl req -new -key server.key -out server.csr
  • Ce processus vous demandera de saisir quelques détails. Pour ce faire, la commande suivante doit être émise -

openssl x509 -req -days 60 -in server.csr -signkey
server.key -out server.crt
  • Le certificat nouvellement signé sera valide pendant 60 jours.

Le code suivant montre son implémentation -

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

L'étape suivante consiste à démarrer le serveur; si vous réussissez, vous verrez le message suivant sur votre écran -

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