ホームページ > バックエンド開発 > Python チュートリアル > FlaskアプリケーションをVultrに展開する方法

FlaskアプリケーションをVultrに展開する方法

Christopher Nolan
リリース: 2025-02-08 08:31:09
オリジナル
774 人が閲覧しました

How to Deploy Flask Applications on Vultr

Gunicorn、Nginx、およびLet's Encrypt

を使用してセキュアフラスコアプリケーションを展開します

Flaskは、Webアプリケーションを構築するためのPythonフレームワークです。 Flaskを使用すると、開発者はルーティングを簡単に定義し、HTTPリクエストと応答を処理し、JINJA2テンプレートを使用して動的コンテンツをレンダリングできます。また、開発者がデータベースアクセス、フォーム処理、ユーザー認証などの機能を統合できるようにする拡張機能もサポートしています。

この記事では、Gunicornを使用してFlaskアプリケーションを展開し、CSRF保護およびコンテンツセキュリティポリシー(CSP)を実装する方法について説明します。また、Nginxを使用して逆プロキシを設定し、Let's暗号化を介してHTTPSを実装して無料のSSL証明書を申請します。

Vultr-Optimized Cloudインスタンスに展開

  1. 登録して、Vultr Customer Portalにログインします。
  2. 製品ページに移動します。
  3. サイドメニューから「計算」を選択します。
  4. 中央の[サーバーの展開]ボタンをクリックします。
  5. サーバータイプとして「最適化されたクラウドコンピューティング」を選択します。
  6. サーバーの場所を選択します。
  7. オペレーティングシステムとしてubuntu 24.04を選択します。
  8. 適切なパッケージを選択します。
  9. 必要に応じて追加機能を選択します。
  10. [今すぐ依存]をクリックします。

DEMOアプリケーションコードファイルを追加

Python仮想環境をセットアップ

    python3-venvパッケージのインストール:
  1. sudo apt install python3-venv
  2. 仮想環境を作成:
  3. python3 -m venv myenv
  4. 仮想環境をアクティブにします:
  5. source myenv/bin/activate

DEMOアプリケーションコードファイルを追加

    クローンgithubリポジトリ:
  1. git clone https://github.com/mayankdebnath/flask-todo-demo.git
  2. プロジェクトディレクトリに移動します:
  3. cd flask-todo-demo/sample/ フラスコとグニコーンのパッケージのインストール:
  4. pip install flask gunicornポート5000への着信接続を許可します:
  5. ufw allow 5000
  6. CSRF保護およびコンテンツセキュリティポリシーを適用します

クロスサイトリクエストForgery(CSRF)は、攻撃者が信頼できるWebサイトのログインセッションを使用してユーザーが信頼しているさまざまなWebサイトに不正なリクエストを行うことができる脆弱性です。 WTFormsは、CSRF攻撃を防ぐためにデフォルトでCSRF保護を統合するフラスコ拡張機能です。

コンテンツセキュリティポリシー(CSP)は、悪意のある攻撃から保護するWebアプリケーションのセキュリティの追加レイヤーです。 CSPは、ブラウザが特定のWebページにロードできるリソースを示します。通常、Webサイト管理者は、Webページのサーバー応答に特別なヘッダーを追加してCSPを構成し、ブラウザはCSPヘッダーを受信し、どのリソースがロードできるかを理解します。 Talismanは、FlaskアプリケーションにCSPを追加するプロセスを簡素化するフラスコ拡張機能です。

    Flask-WTFとTalismanパッケージのインストール:
  1. pip install flask-wtf talisman
  2. app.pyファイルを開く:
  3. nano app.py
  4. コンテンツセキュリティポリシーを含めるためにapp.pyファイルを編集:
from talisman import Talisman

talisman = Talisman(
    app,
    content_security_policy={
        'default-src': ['\'self\''],
        'script-src': ['\'self\'', '\'unsafe-inline\'', 'https://code.jquery.com'],
        'style-src': ['\'self\'', '\'unsafe-inline\'', 'https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css', 'https://todoapp5.ddns.net/static/styles.css', 'https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css'],
    },
    force_https=True,
    session_cookie_secure=True,
    frame_options='DENY',
)
ログイン後にコピー
  • ファイルを保存して閉じます。
    from flask_wtf.csrf import CSRFProtect
    
    app.config['SECRET_KEY'] = 'your_secret_key_here'
    csrf = CSRFProtect(app)
    csrf._csrf_request_token_key = 'X-CSRFToken'
    ログイン後にコピー

    1. index.htmlファイルを開く:cd templates
    2. htmlページを編集して、CSRF構成を含めます:nano index.html
    3. ファイルを保存して閉じます。 8。テンプレートディレクトリを終了します:
    var csrfToken = $('input[name="csrf_token"]').val();
    
    $.ajaxSetup({
        beforeSend: function(xhr, settings) {
        if (!/^(GET|HEAD|OPTIONS|TRACE)$/i.test(settings.type) && !this.crossDomain) {
        xhr.setRequestHeader("X-CSRFToken", csrfToken);
            }
        }
    });
    ログイン後にコピー

    cd ..nginxを逆プロキシとして構成

    nginxは、Webサーバーとクライアントの間の逆プロキシとして機能します。リクエストの構成設定に基づいて、着信要求を起動します。このセクションでは、効率的なリクエスト処理と負荷分散のために逆プロキシのためのアプリケーションを構成します。また、Let's Encryptからの無料のSSL証明書を申請してHTTPSを実装し、ユーザーとWebサーバー間の通信を保護します。

    Vultr Customer Portalにログインします。

      製品ページに移動します。
    1. サイドメニューからネットワークドロップダウンメニューを展開し、DNSを選択します。
    2. 中央の[ドメイン名の追加]ボタンをクリックします。
    3. 設定手順に従ってドメイン名を追加し、サーバーのIPアドレスを選択します。
    4. ドメインレジストラを使用して、ドメイン名のプライマリおよびセカンダリ名サーバーとして次のホスト名を設定します:
    5. および
    6. ns1.vultr.com nginxのインストール:ns2.vultr.com
    7. 新しいnginx構成ファイルを作成します:sudo apt install nginx
    8. 次の構成をファイルに貼り付けます:sudo nano /etc/nginx/sites-available/app.conf
    仮想ホストの構成をアクティブにします:
    server {
        listen 80;
        listen [::]:80;
    
        server_name <your_domain>;
    
        location / {
            proxy_pass http://127.0.0.1:5000/;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
    ログイン後にコピー
    1. nginx構成をテストします:sudo ln -s /etc/nginx/sites-available/app.conf /etc/nginx/sites-enabled/
    2. nginxをリロードします:sudo nginx -t
    3. ポート80および443への接続を入力してください:sudo systemctl reload nginx
    4. CERTBOTパッケージのインストール:sudo ufw allow 80/tcp && sudo ufw allow 443/tcp
    5. (example.comをドメイン名に置き換えてください)sudo snap install --classic certbot Gunicorn Serverを起動:
    6. sudo certbot --nginx -d example.com -d www.example.com
    7. 経由でフラスコアプリにアクセスできるようになりました。 gunicorn -b 0.0.0.0:5000 app:app
    8. https://<your_domain></your_domain>VultrのPythonアプリを使用して詳細を実行します
    コンテナ化Python Webアプリケーション

    ubuntu 24.04にpythonとpipをインストールします python

    でのVultr Cloud推論を使用しています 重要なAI/ML Pythonパッケージの詳細な議論
      PythonおよびMilvus Vectorデータベースを使用したAI駆動型検索
    • Pythonを使用して自然言語処理タスクを実行します
    • 結論
    • この記事では、Nginx Reverse ProxyとGunicornを使用してFlaskアプリケーションを展開し、CSRF保護とCSPを実装する方法について説明します。また、SSL証明書を追加し、HTTPSアクセスを有効にすることにより、アプリケーションのセキュリティを保護します。

      この記事はVultrが後援しています。 Vultrは、世界最大のプライベートクラウドコンピューティングプラットフォームです。 Vultrは開発者に愛されており、185か国で150万人以上の顧客に柔軟でスケーラブルなグローバルクラウドコンピューティング、クラウドGPU、ベアメタル、クラウドストレージソリューションを提供しています。 Vultrの詳細

    以上がFlaskアプリケーションをVultrに展開する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    著者別の最新記事
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート