Cherrypy-deployment-of-application

提供:Dev Guides
移動先:案内検索

CherryPy-アプリケーションの展開

この章では、組み込みのCherryPy HTTPサーバーを介して有効化されたCherryPyベースのアプリケーションSSLに焦点を当てます。

設定

Webアプリケーションで必要な構成設定のさまざまなレベルがあります-

  • * Webサーバー*-HTTPサーバーにリンクされた設定
  • エンジン-エンジンのホスティングに関連する設定
  • アプリケーション-ユーザーが使用するアプリケーション

展開

CherryPyアプリケーションの展開は、Pythonシステムパスからすべての必要なパッケージを入手できる非常に簡単な方法と考えられています。 共有Webホスト環境では、Webサーバーはフロントエンドに配置され、ホストプロバイダーがフィルタリングアクションを実行できるようにします。 フロントエンドサーバーは、Apacheまたは lighttpd です。

このセクションでは、Apacheおよびlighttpd Webサーバーの背後でCherryPyアプリケーションを実行するためのいくつかのソリューションを紹介します。

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ベースのアプリケーションでサポートできます。 SSLサポートを有効にするには、次の要件を満たす必要があります-
  • PyOpenSSLパッケージをユーザーの環境にインストールする
  • サーバーにSSL証明書と秘密鍵を持っている

証明書と秘密鍵の作成

証明書と秘密鍵の要件に対処しましょう-

  • まず、ユーザーは秘密鍵が必要です-
openssl genrsa -out server.key 2048
  • このキーはパスワードで保護されていないため、保護が弱くなります。
  • 次のコマンドが発行されます-
openssl genrsa -des3 -out server.key 2048
  • プログラムにはパスフレーズが必要です。 OpenSSLのバージョンで空の文字列を提供できる場合は、そうします。 それ以外の場合、デフォルトのパスフレーズを入力し、次のように生成されたキーから削除します-
openssl rsa -in server.key -out server.key
  • 証明書の作成は次のとおりです-
openssl req -new -key server.key -out server.csr
  • このプロセスでは、詳細を入力するように要求されます。 これを行うには、次のコマンドを発行する必要があります-
openssl x509 -req -days 60 -in server.csr -signkey
server.key -out server.crt
  • 新しく署名された証明書は60日間有効です。

次のコードは、その実装を示しています-

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

次のステップは、サーバーを起動することです。あなたが成功している場合は、画面に次のメッセージが表示されます-

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