CherryPy - Uygulama Dağıtımı

Bu bölüm daha çok yerleşik CherryPy HTTP sunucusu aracılığıyla etkinleştirilen CherryPy tabanlı SSL uygulamasına odaklanacaktır.

Yapılandırma

Bir web uygulamasında gerekli olan farklı yapılandırma ayarları seviyeleri vardır -

  • Web server - HTTP sunucusuna bağlı ayarlar

  • Engine - Motorun barındırılmasıyla ilişkili ayarlar

  • Application - Kullanıcı tarafından kullanılan uygulama

Dağıtım

CherryPy uygulamasının konuşlandırılması, gerekli tüm paketlerin Python sistem yolunda mevcut olduğu oldukça kolay bir yöntem olarak kabul edilir. Paylaşılan web'de barındırılan ortamda, web sunucusu, ana bilgisayar sağlayıcısının filtreleme eylemlerini gerçekleştirmesine izin veren ön uçta yer alır. Ön uç sunucu, Apache veyalighttpd.

Bu bölüm Apache ve lighttpd web sunucularının arkasında bir CherryPy uygulamasını çalıştırmak için birkaç çözüm sunacaktır.

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)CherryPy tabanlı uygulamalarda desteklenebilir. SSL desteğini etkinleştirmek için aşağıdaki gereksinimler karşılanmalıdır -

  • PyOpenSSL paketini kullanıcı ortamında kurun
  • Sunucuda bir SSL sertifikasına ve özel anahtarına sahip olun

Bir Sertifika ve Özel Anahtar Oluşturma

Sertifika ve özel anahtar gereksinimlerini ele alalım -

  • Önce kullanıcının özel bir anahtara ihtiyacı vardır -
openssl genrsa -out server.key 2048
  • Bu anahtar bir parola ile korunmaz ve bu nedenle zayıf bir korumaya sahiptir.
  • Aşağıdaki komut verilecektir -
openssl genrsa -des3 -out server.key 2048
  • Program bir parola gerektirecektir. OpenSSL sürümünüz boş bir dize sağlamanıza izin veriyorsa, bunu yapın. Aksi takdirde, varsayılan bir parola girin ve ardından aşağıdaki gibi oluşturulan anahtardan kaldırın -

openssl rsa -in server.key -out server.key
  • Sertifikanın oluşturulması aşağıdaki gibidir -
openssl req -new -key server.key -out server.csr
  • Bu işlem sizden bazı ayrıntıları girmenizi isteyecektir. Bunu yapmak için aşağıdaki komut verilmelidir -

openssl x509 -req -days 60 -in server.csr -signkey
server.key -out server.crt
  • Yeni imzalanan sertifika 60 gün süreyle geçerli olacaktır.

Aşağıdaki kod, uygulamasını gösterir -

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

Sonraki adım, sunucuyu başlatmaktır; Başarılı olursanız, ekranınızda aşağıdaki mesajı görürsünüz -

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