7でFlaskマイクロフレームワークを使用して簡単なPythonアプリケーションをセットアップします。この記事の大部分は、Gunicornアプリケーションサーバーをセットアップしてアプリケーションを起動し、Nginxをフロントエンドリバースプロキシとして機能させる方法について説明します。前提条件このガイドを開始する前に、サーバーで非rootユーザーを構成する必要があります。[初期サーバーセットアップガイド]をご覧ください。アプリケーションサーバーがFlaskアプリとの通信に使用するWSGI仕様の詳細については、https://www.digitalocean.com/community/tutorials/how-to-set-up-uwsgiのリンクセクションを参照してください。これらの概念を理解すると、このガイドを理解しやすくなります。続行する準備ができたら、読み進めてください。CentOSおよびEPELリポジトリからコンポーネントをインストールする最初のステップは、リポジトリから必要なすべてのピースをインストールすることです。必要なコンポーネントをインストールするために、いくつかの追加パッケージを含むEPELリポジトリを追加する必要があります。次のように入力してEPELリポジトリを有効にできます。epel-releaseシステムでEPELリポジトリへのアクセスが設定されると、必要なパッケージのインストールを開始できます。Pythonコンポーネントをインストールおよび管理するために、Pythonパッケージマネージャーであるpipをインストールします。Gunicornが必要とするコンパイラーとPython開発ファイルも入手します。Nginxもインストールします。次のように入力して、これらのコンポーネントをすべてインストールできます。nginxPython仮想環境を作成する次に、Flaskアプリケーションをシステム上の他のPythonファイルから分離するために、仮想環境を設定します。virtualenv`パッケージをインストールすることから始めます。virtualenvこれで、Flaskプロジェクトの親ディレクトリを作成できます。作成後、ディレクトリに移動します。~/次を入力して、FlaskプロジェクトのPython要件を保存する仮想環境を作成できます。`+`というディレクトリにインストールされます。仮想環境内にアプリケーションをインストールする前に、アクティブ化する必要があります。これを行うには、次のように入力します。/bin/activateプロンプトが変わり、仮想環境内で操作していることが示されます。+`のようになります。Flaskアプリケーションのセットアップ仮想環境にいるので、FlaskとGunicornをインストールして、アプリケーションの設計を開始できます。+`のローカルインスタンスを使用して、FlaskとGunicornをインストールできます。次のコマンドを入力して、これらの2つのコンポーネントを取得します。flaskサンプルアプリを作成するFlaskが使用可能になったので、簡単なアプリケーションを作成できます。フラスコはマイクロフレームワークです。多くのフル機能のフレームワークが提供するツールの多くは含まれておらず、主にプロジェクトにインポートしてWebアプリケーションの初期化を支援できるモジュールとして存在します。~//.pyこのファイル内に、アプリケーションコードを配置します。基本的に、フラスコをインポートし、Flaskオブジェクトをインスタンス化する必要があります。これを使用して、特定のルートが要求されたときに実行する必要がある機能を定義できます。+」でFlaskアプリケーションを呼び出して、WSGI仕様で見つかる例を複製します。application.run(host='0.0.0.0')これは基本的に、ルートドメインにアクセスしたときに表示するコンテンツを定義します。完了したら、ファイルを保存して閉じます。次のように入力して、Flaskアプリをテストできます。.pyサーバーのドメイン名またはIPアドレスにアクセスしてから、Webブラウザーのターミナル出力で指定されたポート番号(ほとんどの場合は「:5000」)にアクセスします。このようなものが見えるはずです。[Flaskサンプルアプリ]終了したら、ターミナルウィンドウでCTRL-Cを数回押して、Flask開発サーバーを停止します。WSGIエントリポイントを作成する次に、アプリケーションのエントリポイントとして機能するファイルを作成します。これにより、Gunicornサーバーにアプリケーションとの対話方法が通知されます。~//wsgi.pyファイルは非常にシンプルで、アプリケーションからFlaskインスタンスをインポートして実行するだけです。application.run()完了したら、ファイルを保存して閉じます。Gunicornのプロジェクト提供能力のテスト先に進む前に、Gunicornが正しく実行できることを確認する必要があります。これを行うには、エントリポイントの名前を渡すだけです。公開するインターフェイスで開始されるように、バインドするインターフェイスとポートを指定します。wsgiウェブブラウザの末尾に「:8000」が追加されたサーバーのドメイン名またはIPアドレスにアクセスすると、次のようなページが表示されます。[Flaskサンプルアプリ]正しく機能していることを確認したら、ターミナルウィンドウでCTRL-Cを押します。これで仮想環境が完成したので、非アクティブ化できます。deactivateこれで、すべての操作はシステムのPython環境に対して実行されます。Unitファイルを作成する次に注意する必要があるのは、Systemdサービスユニットファイルです。Systemdユニットファイルを作成すると、CentOSの初期化システムがGunicornを自動的に起動し、サーバーが起動するたびにFlaskアプリケーションを提供できるようになります。+」セクションから始めます。ここにサービスの説明を入力し、ネットワーキングターゲットに到達した後にのみこれを開始するようにinitシステムに指示します。+`セクションを開きます。プロセスを実行するユーザーとグループを指定します。関連するすべてのファイルを所有しているため、通常のユーザーアカウントにプロセスの所有権を付与します。Nunicornユーザーグループに所有権を与えて、Gunicornプロセスと簡単に通信できるようにします。+`を設定して、プロセスの実行可能ファイルがどこにあるかをinitシステムが認識できるようにします(仮想環境内)。次に、コマンドを指定してサービスを開始します。Systemdでは、仮想環境内にインストールされているGunicorn実行可能ファイルへのフルパスを指定する必要があります。3つのワーカープロセスを開始するように指示します(必要に応じて調整します)。`と呼ばれるプロジェクトディレクトリ内でUnixソケットファイルを作成してバインドするように指示します。umask値を「+007」に設定して、他のアクセスを制限しながら、所有者とグループにアクセスできるソケットファイルを作成します。最後に、WSGIエントリポイントのファイル名を渡す必要があります。これにより、起動時に起動できるようにした場合、このサービスをリンクする対象がSystemdに通知されます。通常のマルチユーザーシステムが稼働しているときにこのサービスを開始する必要があります。wsgi[Install]WantedBy=multi-user.targetこれで、Systemdサービスファイルが完成しました。今すぐ保存して閉じます。これで、作成したGunicornサービスを開始し、起動時に開始できるように有効化できます。enableリクエストをプロキシするためのNginxの構成これで、Gunicornアプリケーションサーバーが起動して実行され、プロジェクトディレクトリのソケットファイルに対する要求を待機します。Nginxを構成して、そのソケットにWebリクエストを渡すように構成ファイルに少し追加する必要があります。Nginxのデフォルトの構成ファイルを開くことから始めます。+`ブロックのすぐ上のサーバーブロックを開きます。.Flaskアプリケーションのすべての構成をこの新しいブロック内に配置します。このブロックがデフォルトのポート80でリッスンし、サーバーのドメイン名またはIPアドレスに応答するように指定することから始めます。;}追加する必要がある他の唯一のものは、すべての要求に一致するロケーションブロックです。このブロック内で、Gunicornがリモートクライアント接続に関する情報を取得できるように、いくつかの標準プロキシHTTPヘッダーを設定します。次に、Systemdユニットファイルで指定したソケットにトラフィックを渡します。}}完了したら、ファイルを保存して閉じます。`ユーザーは、そこのソケットファイルにアクセスするために、アプリケーションディレクトリにアクセスできる必要があります。+」ユーザーを追加して、アクセスを許可するために必要な最小限の権限を開放できるようにします。」ユーザーを追加できます。コマンドの「+」を独自のユーザー名に置き換えます。nginxこれで、ユーザーグループにホームディレクトリの実行許可を与えることができます。これにより、Nginxプロセスは次の範囲内でコンテンツを入力およびアクセスできます。/home/アクセス許可を設定したら、Nginx構成ファイルの構文エラーをテストできます。-tこれが問題を示さずに戻った場合、Nginxプロセスを開始して有効にし、ブート時に自動的に開始されるようにします。nginxこれで、Webブラウザでサーバーのドメイン名またはIPアドレスにアクセスして、アプリケーションを表示できるようになります。[Flaskサンプルアプリ]結論このガイドでは、Python仮想環境内にシンプルなFlaskアプリケーションを作成しました。WSGI対応のアプリケーションサーバーがインターフェイスできるようにWSGIエントリポイントを作成し、この機能を提供するようにGunicornアプリサーバーを構成します。その後、Systemdユニットファイルを作成して、起動時にアプリケーションサーバーを自動的に起動しました。Webクライアントトラフィックをアプリケーションサーバーに渡し、外部リクエストを中継するNginxサーバーブロックを作成しました。Flaskは非常にシンプルですが、非常に柔軟なフレームワークであり、構造や設計に制限をかけすぎることなく、アプリケーションに機能を提供することを目的としています。このガイドで説明されている一般的なスタックを使用して、設計したフラスコアプリケーションを提供できます。