CherryPy - Wdrażanie aplikacji

W tym rozdziale skupimy się bardziej na aplikacji SSL opartej na CherryPy, włączonej przez wbudowany serwer HTTP CherryPy.

Konfiguracja

Istnieją różne poziomy ustawień konfiguracji wymaganych w aplikacji internetowej -

  • Web server - Ustawienia powiązane z serwerem HTTP

  • Engine - Ustawienia związane z hostingiem silnika

  • Application - Aplikacja, z której korzysta użytkownik

Rozlokowanie

Wdrożenie aplikacji CherryPy jest uważane za dość prostą metodę, w której wszystkie wymagane pakiety są dostępne ze ścieżki systemowej Pythona. We współużytkowanym środowisku hostowanym w sieci Web serwer sieciowy będzie znajdował się w interfejsie użytkownika, co umożliwia dostawcy hosta wykonywanie działań filtrowania. Serwer frontonu może być serwerem Apache lublighttpd.

W tej sekcji zaprezentujemy kilka rozwiązań umożliwiających uruchomienie aplikacji CherryPy za serwerami WWW Apache i 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)może być obsługiwany w aplikacjach opartych na CherryPy. Aby włączyć obsługę SSL, muszą być spełnione następujące wymagania -

  • Zainstaluj pakiet PyOpenSSL w środowisku użytkownika
  • Posiadaj certyfikat SSL i klucz prywatny na serwerze

Tworzenie certyfikatu i klucza prywatnego

Zajmijmy się wymaganiami certyfikatu i klucza prywatnego -

  • Najpierw użytkownik potrzebuje klucza prywatnego -
openssl genrsa -out server.key 2048
  • Ten klucz nie jest chroniony hasłem i dlatego ma słabą ochronę.
  • Zostanie wydane następujące polecenie -
openssl genrsa -des3 -out server.key 2048
  • Program będzie wymagał hasła. Jeśli twoja wersja OpenSSL pozwala ci podać pusty ciąg, zrób to. W przeciwnym razie wprowadź domyślne hasło, a następnie usuń je z wygenerowanego klucza w następujący sposób -

openssl rsa -in server.key -out server.key
  • Utworzenie certyfikatu wygląda następująco -
openssl req -new -key server.key -out server.csr
  • Ten proces wymaga podania pewnych szczegółów. Aby to zrobić, należy wydać następujące polecenie -

openssl x509 -req -days 60 -in server.csr -signkey
server.key -out server.crt
  • Nowo podpisany certyfikat będzie ważny przez 60 dni.

Poniższy kod przedstawia jego implementację -

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

Następnym krokiem jest uruchomienie serwera; jeśli ci się powiedzie, na ekranie zobaczysz następujący komunikat -

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